This project is an HTML implementation of the board game Atropos. This is an abstract game that is based on Sperner's Lemma. This implementation will allow for many configuration options for play, including different board sizes and player controls (including Human and different CPU levels).
Atropos is an abstract board game played on a triangular grid of circles, each of which can be colored one of three colors. In the game, the boundary begins pre-colored and the inner circles are left blank. A turn in Atropos consists of choosing one of the internal circles and coloring it one of the three colors. If that choice of color creates a triangle with all three colors, then that player immediately loses. The boundary of the triangle is colored to demonstrate Sperner's Lemma; there is no way to color all internal nodes without creating a three-colored triangle. The two players cannot color the entire board without one player losing.
To provide for more flexible play, the page will allow for many configuration options, including changing the board size and changing who controls each player. The "standard" board size is seven open circles on a side, but I'd like to allow for between 4 and 12. For the player options, I'd like to include choices for: a human player, a random player, and different levels of computer players.
For this project, I'm going to begin with the CombinatorialGames.js code used to implement other abstract games such as Clobber and Domineering. This will help provide the basic mechanisms for alternating turns between two players.
In order to use that code, I'm going to have to implement the entire Atropos logic on top of the (abstract) CombinatorialGame class. This logic is a bit complicated, since each circle depends on the six surrounding circles. I'll also have to write my own GUI, since it's not similar enough to any of the previously-implemented games. Since the CombinatorialGames.js source does not support misere games, I'm going to have to enforce that a play cannot be made that creates a three-colored triangle. This is going to have to work via the GUI to prevent players from choosing colors that would otherwise be illegal.
Although it would be great to connect players across the Internet, that is beyond the scope of this project. Two-player games will require that both players are sharing a device.
This game is primarily for enjoyment, so it will be a success when:
|Jan. 24||Look at combinatorialGames.js to see how other combinatorial games have been built. Plan out different classes with MVC breakdown.|
|Jan. 31||Come up with interfaces (i.e. "public" methods) for each of the classes. Create class diagram.|
|Feb. 7||Program the class for the model of an Atropos state.|
|Feb. 14||Program the view. Update the model if necessary.|
|Feb. 21||Code up the .php site for the game. Make sure that the view looks good.|
|Feb. 28||Work on programming the controller.|
|Mar. 7||Finish programming the controller.|
|Mar. 14||Spring Break!|
|Mar. 21||Add computer players. (Can use ones provided by CG framework.) Add text to explain the rules.|
|Mar. 28||User testing: Kristi on Monday, Matt on Thursday. Make updates based on results of testing.|
|Apr. 3||Add variable board sizes.|
|Apr. 10||User testing: round 2. Kristi on Monday, Chad on Wednesday. Make changes based on results.|
|Apr. 17||Stretch goal: Atropos-specific AI.|
|Apr. 24||Clean up everything in prep for presentation.|
|May 1||Stretch goal: Add the myth (origin story) to the page.|
The project is designed to be used by anyone who might want to play Atropos. My stakeholders include:
In order to ensure that stakeholders are pleased, I'll be running user testing of the game with Kristi Queen, Matt Brine, and Chad Lerrim at the times given in the schedule above.
Before now, I have never dealt with graphics in a web browser, aside from basic CSS. I assume that there is some built-in graphics I can work with in HTML 5 that can be generated on the fly. I really hope there's a way to use graphics with clickable elements.
Some things that could slow me down include:
In the lab, I have access to a computer, with IE, Firefox, and Chrome all ready for testing. I have an Android phone and regular access to an Android tablet. I don't think I'll need any additional resources to complete this project.