TicTacToeBoard.h
上传用户:laixiong
上传日期:2007-03-11
资源大小:2994k
文件大小:2k
源码类别:

Symbian

开发平台:

C/C++

  1. /*
  2. * ==============================================================================
  3. *  Name        : TicTacToeBoard.h
  4. *  Part of     : TicTacToe
  5. *  Interface   : 
  6. *  Description : 
  7. *  Version     : 
  8. *
  9. *  Copyright (c) 2005 Nokia Corporation.
  10. * ==============================================================================
  11. */
  12. #ifndef __TICTACTOE_BOARD_H__
  13. #define __TICTACTOE_BOARD_H__
  14. //  INCLUDES
  15. #include <e32std.h>
  16. // CONSTANTS
  17. const TInt KTicTacToeRows = 3;
  18. const TInt KTicTacToeColumns = 3;
  19. const TInt KTicTacToeCells = KTicTacToeRows * KTicTacToeColumns;
  20. // MACROS
  21. // DATA TYPES
  22. enum TTicTacToePlayer
  23. {
  24. ETttPlayerNone, ETttPlayerNought, ETttPlayerCross
  25. };
  26. // FUNCTION PROTOTYPES
  27. // FORWARD DECLARATIONS
  28. // CLASS DECLARATION
  29. /**
  30. * Maintains the state of the board, allows moves to be made and checks whether
  31. * a player has won.
  32. */
  33. class TTicTacToeBoard
  34.     {
  35.     public:  // Constructors and destructor
  36.         /**
  37.         * C++ default constructor.
  38.         */
  39.         TTicTacToeBoard();
  40.         /**
  41.         * Destructor.
  42.         */
  43.         virtual ~TTicTacToeBoard();
  44.     public: // New functions
  45.         /**
  46.         * Reset the board to initial state.
  47.         */
  48.         void Reset();
  49.         /**
  50.         * Get the player who has taken a given cell.
  51.         * @param aColumn Zero-based column index.
  52.         * @param aRow Zero-based row index.
  53.         * @return The player.
  54.         */
  55.         TTicTacToePlayer Player(TInt aColumn, TInt aRow) const;
  56.         
  57.         /**
  58.         * Attempt to move a player into a cell.
  59.         * @param aCell Zero-based cell index.
  60.         * @param aPlayer Which player.
  61.         * @return ETrue if the move was made.
  62.         */
  63.         TBool Move(TInt aCell, TTicTacToePlayer aPlayer);
  64.         /**
  65.         * Check whether a player has three in a row.
  66.         * @param aPlayer Which player.
  67.         * @return ETrue if the player has won.
  68.         */
  69.         TBool HasWon(TTicTacToePlayer aPlayer);
  70.         /**
  71.         * Check whether the game is a draw.
  72.         * @return ETrue if it is.
  73.         */
  74.         TBool IsDraw();
  75.     private:    // Data
  76.         // Contents of the grid cells
  77.         TTicTacToePlayer iCells[KTicTacToeCells];
  78.         // Flag indicating whether the game is finished
  79.         TBool iCanMove;
  80.     };
  81. #endif      // __TICTACTOE_BOARD_H__
  82. // End of File