Skip to content

jfspencer/tictactoe

Repository files navigation

tictactoe

FRP TicTacToe

Note:

  • .gitignore not added for dev consumption convenience

Base Spec

  • build a tic tac toe game
  • use a mobile framework (like ionic)
  • Allow 2 players to play tic tac toe (Follow the rules of tic tac toe)
  • Have 3x3 grid on which the players can play
  • Allow the players to take turns marking spaces on the 3x3 grid
  • Recognize when a player has won and declare that player as victorious
  • Allow the user to start a new game
  • unit tests (coverage could be better)

Some things that would be cool to add UX Support Spec

  • seamlessly responsive to screen sizes from mobile to desktop
  • lazy load the UI to minimize load time
  • UI should indicate which player is active for a given turn
  • Logic mechanics should use Reactive Functional Programming techniques (https://www.reactivemanifesto.org)
  • Implement no take backs
  • Game state should be reactively durable

Remote Play Spec

  • setup couchDB instance for testing
  • requires a unique name. name will be persisted to the user lookup db.
  • provide a list of users to play against
  • allow remote user to accept or deny a new game
  • Use CQRS to prevent remote user overwrites/conflicts and allows for rollback of game state
  • one database as a user lookup dictionary
    • include online state flag, to prevent orphan game requests
  • one database per user for write side operations
  • stream in other users' to complete UI game state
  • prevent user from marking the board during the other players turn