The Game of Life, also known as Conway's Game of Life, is a cellular automaton created by mathematician John Horton Conway. It is a zero-player game, meaning that its evolution is determined by its initial state, requiring no further input.

Generation 0

You can take a look at the code at:

To begin, let's define the rules of the Game of Life. Each cell in the game is either "alive" or "dead". The state of a cell is determined by the state of its neighbors, which are the eight cells surrounding it.

If a cell is alive and has 2 or 3 live neighbors, it will stay alive in the next generation. If a cell is dead and has exactly 3 live neighbors, it will become alive in the next generation. In all other cases, the cell will remain dead or become dead in the next generation.

Now that we have the basic rules defined, let's create a colorful version of the game.

To implement the game, we will need to create a grid of cells and update their states according to the rules defined above. We can do this using a simple loop that iterates through each cell in the grid and checks its neighbors.

One of the interesting things about the Game of Life is that it can produce complex patterns and behaviors from simple rules. We finally color the cells deterministically based on the x and y coordinates of the cell for an extra layer of visual appeal.

// Use the x and y coordinates to generate rgb colors
// in a deterministic manner
function generateColor(x, y) {
  const r = Math.floor((x * y * 1234567) % 255)
  const g = Math.floor((x * y * 7654321) % 255)
  const b = Math.floor((x * y * 9876543) % 255)

  // Return the RGB color as a string
  return `rgb(${r}, ${g}, ${b})`