Merge branch 'master' of git://git.ucc.asn.au/progcomp2012
[progcomp2012.git] / judge / manager / ai_controller.h
1 #ifndef AI_CONTROLLER_H
2 #define AI_CONTROLLER_H
3
4 #include "controller.h"
5 #include "program.h"
6
7 /**
8  * Class to control an AI program playing Stratego
9  * Inherits mostly from Program
10  */
11 class AI_Controller : public Controller, private Program
12 {
13         public:
14                 AI_Controller(const Piece::Colour & newColour, const char * executablePath, const double newTimeout = 60.0) : Controller(newColour, executablePath), Program(executablePath), timeout(newTimeout) {}
15                 virtual ~AI_Controller() {}
16
17                 
18
19                 virtual MovementResult QuerySetup(const char * opponentName,std::string setup[]);
20                 virtual MovementResult QueryMove(std::string & buffer);
21
22                 virtual void Message(const char * message) 
23                 {
24                         //fprintf(stderr, "Sending message \"%s\" to AI program...\n", message);
25                         Program::SendMessage(message);
26                 }
27                 virtual void Pause() {Program::Pause();} //Hack wrapper
28                 virtual void Continue() {Program::Continue();} //Hack wrapper
29
30                 virtual bool Valid() const {return Program::Running();}
31
32
33         private:
34                 const double timeout; //Timeout in seconds for messages from the AI Program
35
36 };
37
38 #endif //AI_CONTROLLER_H

UCC git Repository :: git.ucc.asn.au