X-Git-Url: https://git.ucc.asn.au/?p=progcomp2012.git;a=blobdiff_plain;f=manager%2Fcontroller.h;h=1a8ce024e8af19480365438f7ad04c2d5d7e4793;hp=1fac88d382093425d76b6b7723aa31032bda8d76;hb=fe470c015d73d07c44f0e951a2bb205d95763f22;hpb=2ab27eb698cfd57977cc9cc25edcbfbeb3b1b1ee diff --git a/manager/controller.h b/manager/controller.h index 1fac88d..1a8ce02 100644 --- a/manager/controller.h +++ b/manager/controller.h @@ -2,28 +2,43 @@ #define CONTROLLER_H #include "stratego.h" -#include "program.h" +#include /** - * Class to control an AI program for a game of Stratego - * Inherits most features from the Program class + * Class to control a player for Stratego + * Abstract base class */ -class Controller : public Program +class Controller { public: - Controller(const Piece::Colour & newColour, const char * executablePath) : Program(executablePath), colour(newColour) {} + Controller(const Piece::Colour & newColour, const char * newName = "no-name") : colour(newColour), name(newName) {} virtual ~Controller() {} - MovementResult Setup(const char * opponentName); //Requests the AI program for the initial positioning of its pieces. + MovementResult Setup(const char * opponentName); - MovementResult MakeMove(std::string & buffer); //Queries the AI program for a response to the state of Board::theBoard + MovementResult MakeMove(std::string & buffer); - const Piece::Colour colour; //Colour identifying the side of the AI program. + + + void Message(std::string & buffer) {Message(buffer.c_str());} + virtual void Message(const char * string) = 0; + + virtual MovementResult QuerySetup(const char * opponentName, std::string setup[]) = 0; + virtual MovementResult QueryMove(std::string & buffer) = 0; + virtual bool Valid() const {return true;} + + const Piece::Colour colour; + + std::string name; }; + + + + #endif //CONTROLLER_H