Atropos Web Game

CS 4760: Senior Project Proposal

Kyle Burke

Project Statement

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).

Project Description

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.

In order to support play on both conventional computers and mobile devices, the implementation will be created in HTML 5.0 and Javascript. The game should run fully in a mobile browser, so more restrictive languages will only be included on the server-side. This is the first time this game will be implemented so that it is widely accessible on so many devices. (Earlier versions used Java Applets, which are usually not supported on mobile devices.)

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.

Project Goals and Objectives/Deliverables

Project Scope

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.

Success Factors and Benefits

This game is primarily for enjoyment, so it will be a success when:


Spring 2016

Week Goal
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.

Limitations and Restrictions

Some things that could slow me down include:

Resources Required

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.