-
Notifications
You must be signed in to change notification settings - Fork 0
/
FindWinner.h
54 lines (36 loc) · 1.03 KB
/
FindWinner.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
#ifndef FIND_WINNER_H
#define FIND_WINNER_H
/*
* Class to test whether either the human or computer has won the game.
* Also finds whether a single move will win the game for either the
* computer or the human.
*
*/
#include "Game.h"
#include "Player.h"
#include "Destroyer.h"
#include <set>
#include <vector>
typedef set<IntSet> IntSetSet;
typedef vector<IntSetSet> IntSetSetVector;
// We want this class to be a singleton, since
// we'll need it a lot in the tree.
class FindWinner
{
public:
static FindWinner* Instance();
bool hasWinner(const Player* player_p) const;
private:
FindWinner();
~FindWinner();
IntSetSet winningMoves_m;
void buildWinningMovesSet();
friend class Destroyer<FindWinner>;
static FindWinner* instance_m_p;
static Destroyer<FindWinner> destroyer_m;
// Give this a value here so we can use it for the array
static const int winner_array_cols_m = 3;
static const int winning_moves_array_m[][winner_array_cols_m];
static const int winner_array_rows_m;
};
#endif // FIND_WINNER_H