home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / scase.zip / SCASE.Z / OWLWIN.CC < prev    next >
C/C++ Source or Header  |  1994-10-17  |  7KB  |  213 lines

  1. /******************************************************************************
  2. *                         ** Company Confidential **
  3. *                  ** Copyright 1994, All rights Reserved **
  4. * %Z%%M% version %I% date:%G%
  5. ******************************************************************************/
  6.  
  7. // -MQBeg- [Module_Includes] [owlwin_cc] <00000020.00000000> Retained!
  8. #include <owl\owlpch.h>
  9. #include <owl\applicat.h>
  10. #include <owl\framewin.h>
  11. #include <owl\dialog.h>
  12. #include <owl\dc.h>
  13. #include "ttteng.h"
  14. #include "tttdisp.h"
  15. #include "tttcont.h"
  16. #include "owlwin.h"
  17. // -MQEnd- [Module_Includes] [owlwin_cc] <00000020.00000000> 
  18.  
  19. // -MQBeg- [Module_Declarations_1] [owlwin_cc] <00000020.00000000> Retained!
  20. #define IDD_ABOUT    "IDD_ABOUT"
  21. #define CM_RESET     101
  22. #define SW_SIZE      40
  23. #define TGW_WIDTH    SW_SIZE*5
  24. #define TGW_HEIGHT   SW_SIZE*5
  25. #define BOARDXOFFSET SW_SIZE
  26. #define BOARDYOFFSET SW_SIZE
  27. // -MQEnd- [Module_Declarations_1] [owlwin_cc] <00000020.00000000> 
  28.  
  29. // -MQBeg- [Class_Body] [TTTWin] <00000000.00000009> 
  30. /******************************************************************************
  31.                                     TTTWin
  32. ******************************************************************************/
  33.  
  34. TTTWin::TTTWin(TTT_Engine *Engine)
  35. // -MQBeg- [Op_Init] [TTTWin::TTTWin] <0000002E.0000003E> Retained!
  36.   : TTT_Display(Engine), TTT_Controller(Engine, this),
  37.     TFrameWindow(0, "Tic Tac Toe", 0), TWindow(0, "Tic Tac Toe")
  38. // -MQEnd- [Op_Init] [TTTWin::TTTWin] <0000002E.0000003E> 
  39. {
  40. // -MQBeg- [Op_Body] [TTTWin::TTTWin] <0000002E.0000003E> Retained!
  41.   Attr.X = 5;
  42.   Attr.Y = 10;
  43.   Attr.W = TGW_WIDTH  + 2*GetSystemMetrics(SM_CXBORDER);
  44.   Attr.H = TGW_HEIGHT + GetSystemMetrics(SM_CYBORDER)  + 
  45.                         GetSystemMetrics(SM_CYCAPTION) +
  46.                         GetSystemMetrics(SM_CYMENU);
  47.   Attr.Style &= ~(WS_THICKFRAME | WS_MAXIMIZEBOX);
  48. // -MQEnd- [Op_Body] [TTTWin::TTTWin] <0000002E.0000003E> 
  49. }
  50.  
  51. TTTWin::~TTTWin()
  52. {
  53. // -MQBeg- [Op_Body] [TTTWin::~TTTWin] <0000002E.0000003F> Retained!
  54.   theDisplay = NULL;  // So that the base class does not delete this!!
  55. // -MQEnd- [Op_Body] [TTTWin::~TTTWin] <0000002E.0000003F> 
  56. }
  57.  
  58. void
  59. TTTWin::DisplayWelcomeMsg()
  60. {
  61. // -MQBeg- [Op_Body] [TTTWin::DisplayWelcomeMsg] <0000002E.00000040> Retained!
  62.   MessageBox("Welcome to Tic Tac Toe", "", MB_OK);
  63. // -MQEnd- [Op_Body] [TTTWin::DisplayWelcomeMsg] <0000002E.00000040> 
  64. }
  65.  
  66. void
  67. TTTWin::DisplayIllegalMove()
  68. {
  69. // -MQBeg- [Op_Body] [TTTWin::DisplayIllegalMove] <0000002E.00000041> Retained!
  70.   MessageBeep(0);
  71. // -MQEnd- [Op_Body] [TTTWin::DisplayIllegalMove] <0000002E.00000041> 
  72. }
  73.  
  74. void
  75. TTTWin::DisplayYouWin()
  76. {
  77. // -MQBeg- [Op_Body] [TTTWin::DisplayYouWin] <0000002E.00000042> Retained!
  78.   MessageBox("You win!", "", MB_OK);
  79. // -MQEnd- [Op_Body] [TTTWin::DisplayYouWin] <0000002E.00000042> 
  80. }
  81.  
  82. void
  83. TTTWin::DisplayYouLose()
  84. {
  85. // -MQBeg- [Op_Body] [TTTWin::DisplayYouLose] <0000002E.00000043> Retained!
  86.   MessageBox("You lose!", "", MB_OK);
  87. // -MQEnd- [Op_Body] [TTTWin::DisplayYouLose] <0000002E.00000043> 
  88. }
  89.  
  90. void
  91. TTTWin::DisplayDraw()
  92. {
  93. // -MQBeg- [Op_Body] [TTTWin::DisplayDraw] <0000002E.00000044> Retained!
  94.   MessageBox("It's a draw!", "", MB_OK);
  95. // -MQEnd- [Op_Body] [TTTWin::DisplayDraw] <0000002E.00000044> 
  96. }
  97.  
  98. void
  99. TTTWin::DrawGrid()
  100. {
  101. // -MQBeg- [Op_Body] [TTTWin::DrawGrid] <0000002E.00000045> Retained!
  102.   TClientDC dc(*this);
  103.   dc.SelectStockObject(BLACK_PEN);
  104.   MoveTo(dc, BOARDXOFFSET+SW_SIZE,     BOARDYOFFSET);
  105.   LineTo(dc, BOARDXOFFSET+SW_SIZE,     BOARDYOFFSET+(SW_SIZE*3));
  106.   MoveTo(dc, BOARDXOFFSET+(SW_SIZE*2), BOARDYOFFSET);
  107.   LineTo(dc, BOARDXOFFSET+(SW_SIZE*2), BOARDYOFFSET+(SW_SIZE*3));
  108.   MoveTo(dc, BOARDXOFFSET,             BOARDYOFFSET+SW_SIZE);
  109.   LineTo(dc, BOARDXOFFSET+(SW_SIZE*3), BOARDYOFFSET+SW_SIZE);
  110.   MoveTo(dc, BOARDXOFFSET,             BOARDYOFFSET+(SW_SIZE*2));
  111.   LineTo(dc, BOARDXOFFSET+(SW_SIZE*3), BOARDYOFFSET+(SW_SIZE*2));
  112. // -MQEnd- [Op_Body] [TTTWin::DrawGrid] <0000002E.00000045> 
  113. }
  114.  
  115. void
  116. TTTWin::Paint(TDC& /*dc*/, BOOL /*erase*/, TRect& /*rect*/)
  117. {
  118. // -MQBeg- [Op_Body] [TTTWin::Paint] <0000002E.00000048> Retained!
  119.   this->HandleEvent(TTT_Controller::UPDATE);
  120. // -MQEnd- [Op_Body] [TTTWin::Paint] <0000002E.00000048> 
  121. }
  122.  
  123. void
  124. TTTWin::ClearDisplay()
  125. {
  126. // -MQBeg- [Op_Body] [TTTWin::ClearDisplay] <0000002E.00000046> Retained!
  127.   this->DrawGrid();
  128. // -MQEnd- [Op_Body] [TTTWin::ClearDisplay] <0000002E.00000046> 
  129. }
  130.  
  131. void
  132. TTTWin::DisplayMove(int Row, int Col, char Move)
  133. {
  134. // -MQBeg- [Op_Body] [TTTWin::DisplayMove] <0000002E.00000047> Retained!
  135.   TClientDC dc(*this);
  136.   TRect r( this->GetRect(Row, Col).InflatedBy(-3, -3) );
  137.  
  138.   // Erase the cell
  139.   dc.SelectStockObject(WHITE_PEN);
  140.   dc.Rectangle(r);
  141.  
  142.   // Draw the move
  143.   r = r.InflatedBy(-2, -2);
  144.   dc.SelectStockObject(BLACK_PEN);
  145.   switch (Move)
  146.   {
  147.   case 'O':
  148.     dc.Ellipse(r);
  149.     break;
  150.   case 'X':
  151.     dc.MoveTo( r.TopLeft()     );
  152.     dc.LineTo( r.BottomRight() );
  153.     dc.MoveTo( r.TopRight()    );
  154.     dc.LineTo( r.BottomLeft()  );
  155.     break;
  156.   }  
  157. // -MQEnd- [Op_Body] [TTTWin::DisplayMove] <0000002E.00000047> 
  158. }
  159.  
  160. void
  161. TTTWin::SetupWindow()
  162. {
  163. // -MQBeg- [Op_Body] [TTTWin::SetupWindow] <0000002E.00000049> Retained!
  164.   TFrameWindow::SetupWindow();
  165.   this->Start();
  166. // -MQEnd- [Op_Body] [TTTWin::SetupWindow] <0000002E.00000049> 
  167. }
  168.  
  169. void
  170. TTTWin::EvLButtonDown(UINT, TPoint& pt)
  171. {
  172. // -MQBeg- [Op_Body] [TTTWin::EvLButtonDown] <0000002E.0000004A> Retained!
  173.   for (int Row=0; Row<3; Row++)
  174.     for (int Col=0; Col<3; Col++)
  175.     {
  176.       TRect r( this->GetRect(Row, Col) );
  177.       if ( r.Contains(pt) )
  178.       {
  179.         this->HandleEvent(TTT_Controller::MOVE, Row*3+Col);
  180.         return;
  181.       }  
  182.     }
  183. // -MQEnd- [Op_Body] [TTTWin::EvLButtonDown] <0000002E.0000004A> 
  184. }
  185.  
  186. void
  187. TTTWin::CmReset()
  188. {
  189. // -MQBeg- [Op_Body] [TTTWin::CmReset] <0000002E.0000004B> Retained!
  190.   this->HandleEvent(TTT_Controller::RESET);
  191. // -MQEnd- [Op_Body] [TTTWin::CmReset] <0000002E.0000004B> 
  192. }
  193.  
  194. TRect
  195. TTTWin::GetRect(int Row, int Col)
  196. {
  197. // -MQBeg- [Op_Body] [TTTWin::GetRect] <0000002E.0000004C> Retained!
  198.   int Left = BOARDXOFFSET + SW_SIZE * Col;
  199.   int Top  = BOARDYOFFSET + SW_SIZE * Row;
  200.   TRect r(Left, Top, Left+SW_SIZE-1, Top+SW_SIZE-1);
  201.   return r;
  202. // -MQEnd- [Op_Body] [TTTWin::GetRect] <0000002E.0000004C> 
  203. }
  204.  
  205. // -MQEnd- [Class_Body] [TTTWin] <00000000.00000009> 
  206.  
  207. // -MQBeg- [Module_Declarations_2] [owlwin_cc] <00000020.00000000> Retained!
  208. DEFINE_RESPONSE_TABLE1(TTTWin, TFrameWindow)
  209.   EV_WM_LBUTTONDOWN,
  210.   EV_COMMAND(CM_RESET, CmReset),
  211. END_RESPONSE_TABLE;
  212. // -MQEnd- [Module_Declarations_2] [owlwin_cc] <00000020.00000000> 
  213.