The Inspiration

The project was inspired by Misère Play theory.
I wanted to take the predictable Tic-Tac-Toe and turn it into a high-stakes mental battle where the goal is shifted toward spatial avoidance rather than completion.


Building the Experience

The core challenge was the Identity of Symbols.
Unlike standard games, there is no distinction between Player 1 and Player 2 on the board.

I built a validation system that scans the grid after every turn to detect line formations, but instead of crowning a winner, it triggers a “Game Over” for the active player.


The Technical Logic

To determine the loss condition, the script iterates through an array of winning combinations.
If any combination is filled with three "X" marks, the turn-based logic flags the final turn:

$$ LossCondition = \sum_{i=1}^{3} Cell(Combination_{i}) == 3 $$


Challenges Faced

The biggest hurdle was Visual Clarity.
Since everyone uses the same symbol, it was difficult to communicate whose move caused the loss.

I solved this by implementing dynamic status messages and a specific “Loser” UI overlay that clarifies the game state immediately.


What I Learned

  • Logic Inversion: Flipping standard win conditions requires a different mental model of game state.
  • State Synchronization: Managing a shared board where both players have the same permissions.

Built With

  • api
  • javascript
  • lensstudio
  • persistentstorage
  • photopea
  • turnbased
  • vscode
Share this project:

Updates