Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


This project is a simple Tic Tac Toe game for two players, written using HTML/CSS and Javascript, and built on the Ruby on Rails framework. Play now at

Table of Contents


This application was built primarily with HTML/CSS and Javascript, and uses simple methods that should be supported on all major browsers.

How to Play

Starting with player A, each player takes turns choosing where to place their marker (either X for player A or O for player B). Each marker is placed by left clicking once on the cell that the player wants to place their piece on. The current player is displayed at the top of the page.

When a game ends, the game will display one of three outcomes at the top, depending on which was reached:

  • Winner: Player A
  • Winner: Player B
  • Draw

Players can click on Restart? in order to reset the game, or press Undo to undo the previous move.

Future Improvements/Expansions

The code was designed to make improvements relatively easy. Current player increments as well as representations are designed so that adding new players is as easy as adding another symbol to the player list.

The undo function allows for either 1 or as many undos as desired, which can be switched between by commenting one line of code. A possible future improvement would be to implement a form that would let players choose how many undos to allow, between 0 and 9 (inclusive).

Currently the board is limited to 3x3. Enlarging it would require redesigning how winning combinations are checked, however that can be done in the winner function, so that the rest of the code does not need to be changed.

Another possible feature is the addition of tracking the number of wins a player has, whether locally in Javascript, or in a database using Rails.


Written by Andrew Zhao (2015)

Some topics in were used to debug issues that occurred, such as dealing with postgresql to upload to Heroku and an issue where click events were firing twice instead of once.