- double CombatSuccessChance(Piece * attacker, Piece * defender, const Piece::Colour & accordingTo) const;
- double MovementBaseScore(Piece * move, const Board::Direction & dir, const Piece::Colour & accordingTo) const;
- double MovementTotalScore(Piece * move, const Board::Direction & dir, const Piece::Colour & accordingTo) const;
+ typedef enum {OK, NO_NEWLINE, EXPECTED_ATTACKER, UNEXPECTED_DEFENDER, NO_ATTACKER, NO_DEFENDER, COLOUR_MISMATCH, INVALID_QUERY, BOARD_ERROR, VICTORY} Status;
+
+ Status Setup(); //Waits for input to determine colour and board size, and then responds with setup
+ Status MakeMove(); //Should be called each turn - determines Forfax's move
+
+
+ //Move score functions
+ double MovementScore(Piece * move, const Board::Direction & dir) const; //Calculate total score
+ double CombatSuccessChance(Piece * attacker, Piece * defender) const; //Calculate chance of success in combat
+ double IntrinsicWorth(int x, int y) const; //How much a given point on the board is worth
+ double VictoryScore(Piece * attacker, Piece * defender) const; //How much killing the defender is worth
+ double DefeatScore(Piece * attacker, Piece * defender) const; //How much losing is worth
+
+
+ void PrintBoard(std::ostream & out);