Game of Life


Today we are going to talk about something that fascinated me for a long time. The Game of Life by John Conway.

Game of Life is a zero-player game created by mathematician John Conway in 1970 and is a cellular automation game.  This game is about cells that are born, live and dies in different turns with some simple rules.

Let´s say our world is a grid and every position of the grid can have a living cell or no cell. In every turn by some rules that I am about to describe, for every point of the grid a cell can born, keep alive or die.

The rules are:

  1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.
  2. Any live cell with two or three live neighbors lives on to the next generation.
  3. Any live cell with more than three live neighbors dies, as if by over-population.
  4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.

Simple, right? Well, yes, but still fascinates lots of people (including me).

Another thing: What is the meaning of “neighbors”? Every point on the grid has 8 neighbors that are the adjacent points (I am trying to use points instead of cells, because I am using “cells” for our living creatures in the game).

If you still don’t understand well what is this about, well, maybe John Conway can explain a little more about his “game”, some good concepts and if he hats or not his creation (the channel Numberphile that is really great BTW contains some other videos of John Conway).

There are some “patterns” that appear in the game:

Game of Life Patterns
Game of Life Patterns


There are lots of implementations of the game in any language that you like, so, starting next post lets do some code to implement this on JavaScript and Canvas (yes, last post I was talking about how great is Python, but in the first coding post I will be doing this in JavaScript, this is how crazy is this blog).

What´s more, I just found an old video in my channel about an implementation I made using QB64:

Leave a Reply

Your email address will not be published. Required fields are marked *