forked from ChicoState/TicTacToeBoard
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTicTacToeBoard.h
58 lines (49 loc) · 1.59 KB
/
TicTacToeBoard.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#ifndef _TICTACTOEBOARD_H_
#define _TICTACTOEBOARD_H_
const static int BOARDSIZE = 3;
enum Piece
{
X = 'X',
O = 'O',
Invalid = '?',
Blank = ' '
};
/**
* Class for representing a 3x3 Tic-Tac-Toe game board, using the Piece enum
* to represent the spaces on the board.
**/
class TicTacToeBoard
{
private:
Piece board[BOARDSIZE][BOARDSIZE];
Piece turn;
public:
//Constructor sets an empty board and specifies it is X's turn first
TicTacToeBoard();
/**
* Switches turn member variable to represent whether it's X's or O's turn
* and returns whose turn it is
**/
Piece toggleTurn();
/**
* Places the piece of the current turn on the board, returns what
* piece is placed, and toggles which Piece's turn it is. placePiece does
* NOT allow to place a piece in a location where there is already a piece.
* In that case, placePiece just returns what is already at that location.
* Out of bounds coordinates return the Piece Invalid value. When the game
* is over, no more pieces can be placed so attempting to place a piece
* should neither change the board nor change whose turn it is.
**/
Piece placePiece(int row, int column);
/**
* Returns what piece is at the provided coordinates, or Blank if there
* are no pieces there, or Invalid if the coordinates are out of bounds
**/
Piece getPiece(int row, int column);
/**
* Returns which Piece has won, if there is a winner, Invalid if the game
* is not over, or Blank if the board is filled and no one has won.
**/
Piece getWinner();
};
#endif