/** - # players - length of run required to win - grid dimensions & size of those dimensions - which faces are open **/ #include #include "Board.h" #include "Output.h" // player dispositions #define OPTIMISTIC 'O' #define PESSIMISTIC 'P' #define UNCERTAIN 'U' #define RANDOM 'R' #define LOSER 'L' class Game { public: Game(int n, int l) : board(n) { winningRunLength = l; srand((unsigned)time(0)); } Board board; Move Random(char player, Board b); Move MiniMax(char player, Board b, int count, char heuristic); int minimaxHelper(char player, Board b, Move mv, bool max, int count, char heuristic); Move playToLoss(char player, Board b, int count); vector getLegalMoves(char player, Board b); Board newBoardWithMove(Board oldB, Move m); int optimisticBoardScore(Board& b, char p); int pessimisticBoardScore(Board& b, char p); int uncertainBoardScore(Board& b, char p); private: int winningRunLength; };