--- /dev/null
+#ifndef AI_CONTROLLER_H
+#define AI_CONTROLLER_H
+
+#include "controller.h"
+#include "program.h"
+
+/**
+ * Class to control an AI program playing Stratego
+ * Inherits mostly from Program
+ */
+class AI_Controller : public Controller, private Program
+{
+ public:
+ AI_Controller(const Piece::Colour & newColour, const char * executablePath, const double newTimeout = 2.0) : Controller(newColour), Program(executablePath), timeout(newTimeout) {}
+ virtual ~AI_Controller() {}
+
+
+
+ virtual MovementResult QuerySetup(const char * opponentName,std::string setup[]);
+ virtual MovementResult QueryMove(std::string & buffer);
+
+ virtual void Message(const char * message) {Program::SendMessage(message);}
+
+
+ private:
+ const double timeout; //Timeout in seconds for messages from the AI Program
+
+};
+
+#endif //AI_CONTROLLER_H