#include "stratego.h"
#include "ai_controller.h"
#include "human_controller.h"
+#include "network_controller.h"
#include <cstring>
/**
* Class to manage the game
+ * Bit messy since I keep adding on parameters :P
*/
class Game
{
public:
- Game(const char * redPath, const char * bluePath, const bool enableGraphics, double newStallTime = 1.0, const bool allowIllegal=false, FILE * newLog = NULL, const Piece::Colour & newRevealed = Piece::BOTH, int maxTurns = 5000, const bool printBoard = false);
- Game(const char * fromFile, const bool enableGraphics, double newStallTime = 1.0, const bool allowIllegal=false, FILE * newLog = NULL, const Piece::Colour & newRevealed = Piece::BOTH, int maxTurns = 5000, const bool printBoard = false);
+ Game(const char * redPath, const char * bluePath, const bool enableGraphics, double newStallTime = 1.0, const bool allowIllegal=false, FILE * newLog = NULL, const Piece::Colour & newRevealed = Piece::BOTH, int maxTurns = 5000, const bool printBoard = false, double newTimeoutTime = 2.0, const char * newImageOutput = "");
+ Game(const char * fromFile, const bool enableGraphics, double newStallTime = 1.0, const bool allowIllegal=false, FILE * newLog = NULL, const Piece::Colour & newRevealed = Piece::BOTH, int maxTurns = 5000, const bool printBoard = false, double newTimeoutTime = 2.0, const char * newImageOutput = "");
virtual ~Game();
void Wait(double wait);
Piece::Colour Setup(const char * redName, const char * blueName);
+ MovementResult CheckVictoryAttrition();
MovementResult Play();
void PrintEndMessage(const MovementResult & result);
int TurnCount() const {return turnCount;}
static Game * theGame;
+ static int Tokenise(std::vector<std::string> & buffer, std::string & str, char split = ' '); //Helper - Split a string into tokens
+
+ private:
+ void MakeControllers(const char * redPath, const char * bluePath); //Create a controller based off a path
public:
int logMessage(const char * format, ...);
+ static void PrintResults(const MovementResult & result, std::string & buffer);
FILE * GetLogFile() const {return log;}
Controller * red;
Controller * blue;
int maxTurns;
const bool printBoard;
+
+ private:
+ double timeoutTime;
+ std::string imageOutput;
};
FileController(const Piece::Colour & newColour, FILE * newFile) : Controller(newColour, "file"), file(newFile) {}
virtual ~FileController() {}
- virtual void Message(const char * string) {} //Don't send messages
+ virtual bool Message(const char * string) {return true;} //Don't send messages
virtual MovementResult QuerySetup(const char * opponentName, std::string setup[]);
virtual MovementResult QueryMove(std::string & buffer);
virtual bool Valid() const {return file != NULL;}
};
+std::string itostr(int i);
#endif //MAIN_H