Improving software delivery in every organisation

Tic Tac Toe

This is an exercise in Software Design and Changing Requirements.

Don’t peek ahead at the later steps of this challenge, as part of the point of this is to deal with changing requirements.


Using the discipline of TDD, build a game of tic tac toe.

  • The game should allow a human to play against an AI.
  • The AI should be unbeatable.
  • The game should have a user interface of some kind.


  1. The game is played on a 3x3 grid.

  2. You are X, your opponent is O. Players take turns putting their marks in empty squares.

  3. The first player to get 3 of their marks in a row (up, down, across, or diagonally) is the winner.

  4. If all 9 squares are full and no player has 3 marks in a row, the game is over.


Once you have implemented all the rules here, and are happy with your system’s design go here