Amazons - A Framework for Students to write AI

I took a Combinatorial Game Logic class, and it was pretty great (I liked learning more applications of raw logic) except for one thing. The final project was to write AI to play a game called Amazons (link to a Wikipedia page explaining the game). Unfortunately, in my opinion and the opinion of the other student in the class, the framework was...subpar. For example, when trying to figure out what move the AI should do, the AI would be passed a direct reference to the board. A lot of student errors were just modifications to the board they meant to undo, but didn't, or did so incorrectly. Since they were passed a direct reference, it was difficult to catch those sorts of errors. 

We decided, along with the professor for the class, to remake the framework, using proper object-oriented methodologies, in C++ instead of C. Since I was better at outlining interfaces and getting the game logic up and running, that was my primary area of responsibility. My partner handled creating a simple build system for pitting student AIs against each other.

You can download the Visual Studio project here. (Note that you'll want to compile in release, or reduce the number of iterations the game is running in main.)

I also was responsible for writing the test cases for Amazons, as well as ensuring that the game was being played perfectly randomly (all possible moves were being detected and the test AI was correctly randomly playing from them). You can see examples of these in main.cpp.