--- /dev/null
+#ifndef CONTROLLER_H
+#define CONTROLLER_H
+
+#include "stratego.h"
+#include "program.h"
+
+/**
+ * Class to control an AI program for a game of Stratego
+ * Inherits most features from the Program class
+ */
+
+class Controller : public Program
+{
+ public:
+ Controller(const Piece::Colour & newColour, const char * executablePath) : Program(executablePath), colour(newColour) {}
+ virtual ~Controller() {}
+
+ Board::MovementResult Setup(const char * opponentName); //Requests the AI program for the initial positioning of its pieces.
+
+ Board::MovementResult MakeMove(std::string & buffer); //Queries the AI program for a response to the state of Board::theBoard
+
+ const Piece::Colour colour; //Colour identifying the side of the AI program.
+
+
+};
+
+#endif //CONTROLLER_H
+
+