X-Git-Url: https://git.ucc.asn.au/?p=progcomp2012.git;a=blobdiff_plain;f=manager%2Fcontroller.h;h=1a8ce024e8af19480365438f7ad04c2d5d7e4793;hp=0e2e5ccf99e08693005506ff128ed1d6c98c610f;hb=b563784f7e8b559fc100e174331c99fc6a1beda8;hpb=f91a915d6f64f9d35e867d26e8ddb9c1b1ab0c1e diff --git a/manager/controller.h b/manager/controller.h index 0e2e5cc..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() {} - Board::MovementResult Setup(const char * opponentName); //Requests the AI program for the initial positioning of its pieces. + MovementResult Setup(const char * opponentName); - Board::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