home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
scase.zip
/
SCASE.Z
/
OWLWIN.CC
< prev
next >
Wrap
C/C++ Source or Header
|
1994-10-17
|
7KB
|
213 lines
/******************************************************************************
* ** Company Confidential **
* ** Copyright 1994, All rights Reserved **
* %Z%%M% version %I% date:%G%
******************************************************************************/
// -MQBeg- [Module_Includes] [owlwin_cc] <00000020.00000000> Retained!
#include <owl\owlpch.h>
#include <owl\applicat.h>
#include <owl\framewin.h>
#include <owl\dialog.h>
#include <owl\dc.h>
#include "ttteng.h"
#include "tttdisp.h"
#include "tttcont.h"
#include "owlwin.h"
// -MQEnd- [Module_Includes] [owlwin_cc] <00000020.00000000>
// -MQBeg- [Module_Declarations_1] [owlwin_cc] <00000020.00000000> Retained!
#define IDD_ABOUT "IDD_ABOUT"
#define CM_RESET 101
#define SW_SIZE 40
#define TGW_WIDTH SW_SIZE*5
#define TGW_HEIGHT SW_SIZE*5
#define BOARDXOFFSET SW_SIZE
#define BOARDYOFFSET SW_SIZE
// -MQEnd- [Module_Declarations_1] [owlwin_cc] <00000020.00000000>
// -MQBeg- [Class_Body] [TTTWin] <00000000.00000009>
/******************************************************************************
TTTWin
******************************************************************************/
TTTWin::TTTWin(TTT_Engine *Engine)
// -MQBeg- [Op_Init] [TTTWin::TTTWin] <0000002E.0000003E> Retained!
: TTT_Display(Engine), TTT_Controller(Engine, this),
TFrameWindow(0, "Tic Tac Toe", 0), TWindow(0, "Tic Tac Toe")
// -MQEnd- [Op_Init] [TTTWin::TTTWin] <0000002E.0000003E>
{
// -MQBeg- [Op_Body] [TTTWin::TTTWin] <0000002E.0000003E> Retained!
Attr.X = 5;
Attr.Y = 10;
Attr.W = TGW_WIDTH + 2*GetSystemMetrics(SM_CXBORDER);
Attr.H = TGW_HEIGHT + GetSystemMetrics(SM_CYBORDER) +
GetSystemMetrics(SM_CYCAPTION) +
GetSystemMetrics(SM_CYMENU);
Attr.Style &= ~(WS_THICKFRAME | WS_MAXIMIZEBOX);
// -MQEnd- [Op_Body] [TTTWin::TTTWin] <0000002E.0000003E>
}
TTTWin::~TTTWin()
{
// -MQBeg- [Op_Body] [TTTWin::~TTTWin] <0000002E.0000003F> Retained!
theDisplay = NULL; // So that the base class does not delete this!!
// -MQEnd- [Op_Body] [TTTWin::~TTTWin] <0000002E.0000003F>
}
void
TTTWin::DisplayWelcomeMsg()
{
// -MQBeg- [Op_Body] [TTTWin::DisplayWelcomeMsg] <0000002E.00000040> Retained!
MessageBox("Welcome to Tic Tac Toe", "", MB_OK);
// -MQEnd- [Op_Body] [TTTWin::DisplayWelcomeMsg] <0000002E.00000040>
}
void
TTTWin::DisplayIllegalMove()
{
// -MQBeg- [Op_Body] [TTTWin::DisplayIllegalMove] <0000002E.00000041> Retained!
MessageBeep(0);
// -MQEnd- [Op_Body] [TTTWin::DisplayIllegalMove] <0000002E.00000041>
}
void
TTTWin::DisplayYouWin()
{
// -MQBeg- [Op_Body] [TTTWin::DisplayYouWin] <0000002E.00000042> Retained!
MessageBox("You win!", "", MB_OK);
// -MQEnd- [Op_Body] [TTTWin::DisplayYouWin] <0000002E.00000042>
}
void
TTTWin::DisplayYouLose()
{
// -MQBeg- [Op_Body] [TTTWin::DisplayYouLose] <0000002E.00000043> Retained!
MessageBox("You lose!", "", MB_OK);
// -MQEnd- [Op_Body] [TTTWin::DisplayYouLose] <0000002E.00000043>
}
void
TTTWin::DisplayDraw()
{
// -MQBeg- [Op_Body] [TTTWin::DisplayDraw] <0000002E.00000044> Retained!
MessageBox("It's a draw!", "", MB_OK);
// -MQEnd- [Op_Body] [TTTWin::DisplayDraw] <0000002E.00000044>
}
void
TTTWin::DrawGrid()
{
// -MQBeg- [Op_Body] [TTTWin::DrawGrid] <0000002E.00000045> Retained!
TClientDC dc(*this);
dc.SelectStockObject(BLACK_PEN);
MoveTo(dc, BOARDXOFFSET+SW_SIZE, BOARDYOFFSET);
LineTo(dc, BOARDXOFFSET+SW_SIZE, BOARDYOFFSET+(SW_SIZE*3));
MoveTo(dc, BOARDXOFFSET+(SW_SIZE*2), BOARDYOFFSET);
LineTo(dc, BOARDXOFFSET+(SW_SIZE*2), BOARDYOFFSET+(SW_SIZE*3));
MoveTo(dc, BOARDXOFFSET, BOARDYOFFSET+SW_SIZE);
LineTo(dc, BOARDXOFFSET+(SW_SIZE*3), BOARDYOFFSET+SW_SIZE);
MoveTo(dc, BOARDXOFFSET, BOARDYOFFSET+(SW_SIZE*2));
LineTo(dc, BOARDXOFFSET+(SW_SIZE*3), BOARDYOFFSET+(SW_SIZE*2));
// -MQEnd- [Op_Body] [TTTWin::DrawGrid] <0000002E.00000045>
}
void
TTTWin::Paint(TDC& /*dc*/, BOOL /*erase*/, TRect& /*rect*/)
{
// -MQBeg- [Op_Body] [TTTWin::Paint] <0000002E.00000048> Retained!
this->HandleEvent(TTT_Controller::UPDATE);
// -MQEnd- [Op_Body] [TTTWin::Paint] <0000002E.00000048>
}
void
TTTWin::ClearDisplay()
{
// -MQBeg- [Op_Body] [TTTWin::ClearDisplay] <0000002E.00000046> Retained!
this->DrawGrid();
// -MQEnd- [Op_Body] [TTTWin::ClearDisplay] <0000002E.00000046>
}
void
TTTWin::DisplayMove(int Row, int Col, char Move)
{
// -MQBeg- [Op_Body] [TTTWin::DisplayMove] <0000002E.00000047> Retained!
TClientDC dc(*this);
TRect r( this->GetRect(Row, Col).InflatedBy(-3, -3) );
// Erase the cell
dc.SelectStockObject(WHITE_PEN);
dc.Rectangle(r);
// Draw the move
r = r.InflatedBy(-2, -2);
dc.SelectStockObject(BLACK_PEN);
switch (Move)
{
case 'O':
dc.Ellipse(r);
break;
case 'X':
dc.MoveTo( r.TopLeft() );
dc.LineTo( r.BottomRight() );
dc.MoveTo( r.TopRight() );
dc.LineTo( r.BottomLeft() );
break;
}
// -MQEnd- [Op_Body] [TTTWin::DisplayMove] <0000002E.00000047>
}
void
TTTWin::SetupWindow()
{
// -MQBeg- [Op_Body] [TTTWin::SetupWindow] <0000002E.00000049> Retained!
TFrameWindow::SetupWindow();
this->Start();
// -MQEnd- [Op_Body] [TTTWin::SetupWindow] <0000002E.00000049>
}
void
TTTWin::EvLButtonDown(UINT, TPoint& pt)
{
// -MQBeg- [Op_Body] [TTTWin::EvLButtonDown] <0000002E.0000004A> Retained!
for (int Row=0; Row<3; Row++)
for (int Col=0; Col<3; Col++)
{
TRect r( this->GetRect(Row, Col) );
if ( r.Contains(pt) )
{
this->HandleEvent(TTT_Controller::MOVE, Row*3+Col);
return;
}
}
// -MQEnd- [Op_Body] [TTTWin::EvLButtonDown] <0000002E.0000004A>
}
void
TTTWin::CmReset()
{
// -MQBeg- [Op_Body] [TTTWin::CmReset] <0000002E.0000004B> Retained!
this->HandleEvent(TTT_Controller::RESET);
// -MQEnd- [Op_Body] [TTTWin::CmReset] <0000002E.0000004B>
}
TRect
TTTWin::GetRect(int Row, int Col)
{
// -MQBeg- [Op_Body] [TTTWin::GetRect] <0000002E.0000004C> Retained!
int Left = BOARDXOFFSET + SW_SIZE * Col;
int Top = BOARDYOFFSET + SW_SIZE * Row;
TRect r(Left, Top, Left+SW_SIZE-1, Top+SW_SIZE-1);
return r;
// -MQEnd- [Op_Body] [TTTWin::GetRect] <0000002E.0000004C>
}
// -MQEnd- [Class_Body] [TTTWin] <00000000.00000009>
// -MQBeg- [Module_Declarations_2] [owlwin_cc] <00000020.00000000> Retained!
DEFINE_RESPONSE_TABLE1(TTTWin, TFrameWindow)
EV_WM_LBUTTONDOWN,
EV_COMMAND(CM_RESET, CmReset),
END_RESPONSE_TABLE;
// -MQEnd- [Module_Declarations_2] [owlwin_cc] <00000020.00000000>