Project Page: github/chaos
This is a basic AI for the game Order and Chaos.
I heard about the game Order and Chaos from Tom Scott’s youtube video
The basics of the game are as follows:
- Two players have a role assigned, one is ORDER, the other is CHAOS
- The game board is a 6x6 grid
- The players alternate playing. Either player plays either an X or an O
- The ORDER player wins if there is a horizontal, vertical, or diagonal set of five Xes OR five Oes
- The CHAOS player wins by denying the ORDER playing such a set of five Xes or Oes until the game ends
Simple AI with alpha-beta pruning
There are 32 possible sets of 5 positions which can be a WIN for the ORDER player.
- 12 horizontal
- 12 vertical
- 4 diagonal \
- 4 diagonal /
The heuristic evaluates each of those 32 lines and assigns it a value.
- If there is a combination of Xes and Oes, then the value is -1 since order cannot win that line.
- Otherwise the score is positive and depends on the number of filled spaces in the line (XXX is valued higher than XX)
The overall heuristic is a sum of all 32 line heuristics
To quickly lookup the line heuristic. I used a simple Python script (generator.py) which generates a 1024 element lookup table. The 5 positions in a line are converted to a 10 bit value (2 bits per position). That value can be instantly converted to a value by indexing into the lookup table.
This is a simple NodeJS script which plays two AIs against each other. It requires the AI to accept the current board state as an argument and writes out a move to stdout
It will play the AIs back and forth until one of them is determined to be the winner