-<p> </p>
-
-<h4> Overview </h4>
-<p> This is a description of the signals the AI programs recieve, in order:
-<ol>
- <li> Previous turn's outcome (other player's move) OR "START" if it is the first turn </li>
- <li> A BOARD_WIDTH*BOARD_HEIGHT grid indicating the board state, with the AI program's own pieces revealed </li>
- <li> After the AI program makes a move, the outcome is printed to it, and the other program, which continues from step 1 </li>
-</ol>
-<p> I am considering removing Step 2, since <i>all</i> information needed for an AI to keep the board state is contained in the initial board state and then the movement result messages </p>
-
-<h3> End Game </h3>
-<h4> Query </h4>
-<p> At the end of the game, the manager program outputs the following: </p>
-<p> VICTORY </p>
-<p> To the winning AI program, and </p>
-<p> DEFEAT </p>
-<p> To the losing program. </p>
-<p> Both programs then have 2 seconds to exit succesfully, or the manager will kill them. </p>
-<h3> Invalid Responses and Timeouts </h3>
-<p> If any program fails to respond correctly, or gives an invalid move, or does not respond within 1 second, it will lose by default. </p>
-<p> In this case, the message </p>
-<p> ILLEGAL </p>
-<p> will be sent to the malfunctioning program, and </p>
-<p> DEFAULT </p>
-<p> to the other program </p>
-<p> Both programs then have 2 seconds to exit succesfully, or the manager will kill them. </p>
-
-<h2> Modifications/Clarifications to Rules </h2>
-<p> Refer to <a href="http://www.edcollins.com/stratego/"/>This site</a> for the original rules again </p>
-<p> Currently, the pieces taking part in the combat are not revealed; only the outcome of the combat is revealed. In a human game, the pieces would normally be revealed. I am planning to reveal the pieces, since not revealing pieces significantly reduces the value of low ranked pieces (normally used for working out enemy piece values). </p>
-<p> It is up to the AI program to keep track of pieces. The manager program will only reveal the identity of the AI program's own pieces; the other player's pieces will be marked with * or # characters. </p>
-<p> In a traditional game, two pieces of equal value will both be destroyed in combat. Currently, only one piece is destroyed and the outcome is randomly chosen. </p>
-
-<h2> Example Programs </h2>
-<h3>"Dummy" AI</h3>
-<p> Dummy randomly moves pieces. It attempts to not make illegal moves (although sometimes it still does). </p>
-<h3>"Forfax" AI</h3>
-<p> Forfax iterates through all possible moves and allocates a score between 0 and 1 to each move based on how desirable the move is. It then selects the highest scoring move. </p>
-<p> Forfax is pretty terrible, but can beat the Dummy AI <i>most</i> of the time. </p>
-<p> It is possible Forfax can be greatly improved by altering the scoring algorithms. </p>
-<p> Since we don't want the Sample AIs to beat every entrance, I'm not really going to try and improve Forfax unless I get bored. </p>
-<p> If you are writing an AI in C++, Forfax already contains a lot of useful functions. </p>
-
-<h2> Longterm Scoring </h2>
-<p> I haven't started a system for pairing AI's and keeping track of scores and winners etc yet </p>
-<p> I'll probably have a bash script that chooses who will play, and stores all the scores in files. I've done this before for a BrainF*** based "survival of the fittest" style thing, so I can probably recycle it </p>
-<p> </p>
-<p> I believe it will make things more interesting if programs are allowed to keep state of who they have played, and the various tactics used. </p>
-<p> Its kind of hard to implement this... at the moment programs are killed every time a game finishes</p>
-<p> Perhaps it will be easier if each program is allowed access to one directory, where it can create and read files? </p>
-<p> This would allow me to keep the manager program which actually plays the games seperate from the program for scoring and matching of opponents </p>
-<p> There'd probably be security issues with that though. </p>