- Spam Proofing (kinda)
- This was a bit finicky since I'm relying on a verification method to check when a move is valid before allowing the move to be counted, which takes about 10 ticks to get into effect. However after those 10 ticks, all inputs are disabled until the next turn.
- This was achieved by using RS NOR latches for every input. It is also impossible for a player to overwrite a cell since there is a circuit that blocks the input of one side if the other side already has an active signal on that cell.
- Win Detection
- This was done by using 16 AND gates, of which some are linked using OR gates to simplify the output.
- Only when I was nearing completion I was told that I only needed 8 AND gates and the turn signals to determine the winner. Unfortunately, by then it was too late.
- Draw Detection
- The game will forcibly lock down if the game finds a draw. The game will be playable again once the reset button is pressed.
- Turn Detection
- This was done simply by using the disabling mechanism mentioned in the spam proofing section. When one side's inputs are disabled, a signal will be sent to the other side to enable the inputs on the other side.
- Endgame Lock
- This is done to prevent any further moves after the game has ended. A reset button must be pushed in order to play again.
- Signal Lights
- There are two additional lights in the control area for each player. One light indicates if it is their turn, while the other light is a win indicator.
Each player will go to their respective sides. Each player has a 3x3 grid of buttons, each button representing a cell on the board. The + side always starts the game (can be seen from the turn lights). To play, the players take turns pressing the corresponding cell buttons to play tic tac toe. When the game ends when a person wins, a win indicator light will turn on accordingly. Controls of both sides will be forcibly locked down until the reset button is pressed (located in the middle bottom of the board).
Comments
Heads up
I wrote this with indentation and line breaks, however none of it seems to work. Just in case you were wondering why everything is so messy :)