Direct in the fun

Quick install

First install the package either from github::
git clone git://github.com/jul/game_of_life.git

And do what you have to do :)

Or::
pip install gof

I made a package to write less docs.

To dive directly in the core of the topic::
python -i -mgof.demo

You’ll have a pseudo animation (could work on windows, but I am lazy), of a cellular automata. But this is not fun, you have to manipulate to really have fun.

Since you use python -i at the end of the demo you are left with an interactive session

Quick tour

Let’s use all the functions:

First seeing is believing::
>>> print grid
 '    '
-..............
 ..............
 ..............
 ..............
 ..............
-...X..........
 ...X..........
 ...X..........
 ..............
 XX...XXX.....X
-..............
 ...X..........
 ...X..........
 ...X..........
 ..............
-..............

So I may have overloaded __str__ so that you have a nice output. If you want to know more about the grid object:

>>> help(grid)

It does not tells you : grid.size_x, grid._size_y are attributes where the dimension of the matrix are stored.

Now, you want to clean the matrix, to play:

>>> bleach(grid, 20,40)
>>> print grid

This should show you a nice empty grid.

Before you play the game of life, you want to draw patterns on your grid. (The one I defined are not exhautive, you can draw your own.) Let’s add a glider, an oscillator, and a fixed block:

>>> at(grid, 10,20, glider)
>>> at(grid, 5,5, oscillator)
>>> at(grid, 15,25, still)
and see the result ::
>>> print grid
 '    '    '    '    '    '    '    '
-........................................
 ........................................
 ........................................
 ........................................
 ........................................
-.....XXX................................
 ........................................
 ........................................
 ........................................
 ........................................
-....................X.X.................
 ......................X.................
 .....................XX.................
 ........................................
 ........................................
-.........................XX.............
 .........................XX.............
 ........................................
 ........................................
 ........................................
let’s see how it evolves ::
>>> evolve(grid, 10, 5)
not stable yet? Let’s play 10 more iterations, slower::
>>> evole(grid, 10, 2)
Boring, want more surprises?::
>>> bleach(grid, 20,40, Bitmap(1<<20*40))
>>> dirty(grid, 10)

It adds pattern randomly on the grid

Then, just sit back and play 200 iterations at 5 times the slow speed ::
>>> evolve(grid, 200,5)

You may have stable result around 100-200 iterations. What it the Bitmap by the way ?

Well, then fun part is matrix is just a view on anything that looks like a mutable sequence, and an int is a mutable sequence of bits, no ?

When (and only when) using Bitmap you can make::
>>> print "{0:b}".format(grid.matrix._int)
100000000110000000000000000000000000011100000000000000000101100000100000000000011000001000000000001000000010000000000010000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000100000000000000000001010000001110000000000000000000000000111000000010000010001000000000100000100010100000001000001000100000000000001100001000000000001111000000000000000000000000000000000000000000000000000000001000000000000000000010000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000

The quickstart is over :)

Have fun