X-Git-Url: https://git.ucc.asn.au/?p=progcomp2012.git;a=blobdiff_plain;f=home%2Fprogcomp%2Fjudge%2Fmanager%2Fcontroller.h;fp=home%2Fprogcomp%2Fjudge%2Fmanager%2Fcontroller.h;h=55c233d3db1bac9d09ce29e01a1d7c4e80580f44;hp=0000000000000000000000000000000000000000;hb=e3b15cd5dea739f7523920d83bda592db95a7b93;hpb=7f7bc05439b70b3139086086608996de3c9ae2ed diff --git a/home/progcomp/judge/manager/controller.h b/home/progcomp/judge/manager/controller.h new file mode 100644 index 0000000..55c233d --- /dev/null +++ b/home/progcomp/judge/manager/controller.h @@ -0,0 +1,44 @@ +#ifndef CONTROLLER_H +#define CONTROLLER_H + +#include "stratego.h" +#include + +/** + * Class to control a player for Stratego + * Abstract base class + */ + +class Controller +{ + public: + Controller(const Piece::Colour & newColour, const char * newName = "no-name") : colour(newColour), name(newName) {} + virtual ~Controller() {} + + MovementResult Setup(const char * opponentName); + + MovementResult MakeMove(std::string & buffer); + + virtual bool HumanController() const {return false;} //Hacky... overrides in human_controller... avoids having to use run time type info + + void Message(const 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 + +