Changed the directory structure.
[progcomp2012.git] / home / progcomp / judge / manager / controller.h
diff --git a/home/progcomp/judge/manager/controller.h b/home/progcomp/judge/manager/controller.h
new file mode 100644 (file)
index 0000000..55c233d
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef CONTROLLER_H
+#define CONTROLLER_H
+
+#include "stratego.h"
+#include <string>
+
+/**
+ * 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
+
+

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