Pygame is python module designed to writing games. Pygame was written by Pete Shinners and released under open source.It provides excellent GUI so that we can design the games easily rather than text based programmings.

A quick introduction about pygame is available here

Some Interesting Implementations using pygame is explained below

- Koch snowflake
- Conway's game of life
- Sierpinski triangle

### Koch snowflake

Is it possible to think a shape whose area is finite, but the perimeter is infinite? Yes ,Koch snow flake is an interesting mathematical curve whose area is converging, But the perimeter is infinite.It is an example of non euclidean geometry. Another property is that the koch curve is continues every where,but not differentiable any where.

I construct this koch curve using pygame in recursive fasion. Here I cunstuct a order-1 fractal first, then call that function repeatedly.

My recursive function is

def koch(screen,order,a):

if order == 0:

for angles in [60,-120,60,0]:

forward(1)

right(angles)

else:

for angles in [60,-120,60,0]:

koch(screen, order - 1,a)

right(angles)

if order == 0:

for angles in [60,-120,60,0]:

forward(1)

right(angles)

else:

for angles in [60,-120,60,0]:

koch(screen, order - 1,a)

right(angles)

My koch curve is

Koch Snowflake |

The complete code is posted in my github

### Sierpinski triangle

Sierpinski triangle is basic examples of self-similar sets, i.e. it is a mathematically generated pattern that can be reproducible at any magnification or reduction.

Its construction starts from an single triangle. And extend as follows

My algorithm

- Create an equilateral triangle. And store its points in save its points in two dimentional list like this a = [[(300,190), (450,450), (150,450)]]
- Calculate the middle points of each side and make the new list as follows. . a1 = a[i][0]

a2 = a[i][1]

a3 = a[i][2]

md1 = midpoint(a1, a2)

md2 = midpoint(a2, a3)

md3 = midpoint(a3, a1)

a.append([a1,md1,md3])

a.append([md1,a2,md2])

a.append([md2,a3,md3]) - Now we get a new two dimensional list and make this in a loop where take the varies the value of i from 0 to 3^6.
- Draw Triangles . . for element in a:

elem = element

pygame.draw.polygon(screen,white,(elem[0],elem[1],elem[2]),1)

Sierpinski Triangle |

### Conway's Game of Life

Conway's game of life cellular automation which is invented by British mathematician John Horton Conway. It is a zero player game and it depends anly on the initials states.

This game can be easily implemented using pygame module of python.The next states is determined by the rules that are described below

- Any live cell with fewer than two live neighbours dies, as if caused by under-population.
- Any live cell with two or three live neighbours lives on to the next generation.
- Any live cell with more than three live neighbours dies, as if by overcrowding.
- Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.

Conway's Game of life (From Wikipedia) |

My Algorithm is

- Create a widow and divide it into squares
- Create a two dimensional matrix and initialize it to zero. matrix = [[0 for i in xrange(20)] for i in xrange(20)]
- Let the element '1' of matrix indicate live cell and '0' indicates dead. Initialize some live cells
- Then check the neighboring cells by the rules. def nextstage(m):

for i in range(1,19):

for j in range(1,19):

count = m[i-1][j-1]+m[i][j-1]+m[i+1][j-1]+m[i+1][j]+m[i+1][j+1]+m[i][j+1]+m[i-1][j+1]+m[i-1][j]

if m[i][j] == 1 and count <= 2:

m[i][j] = 0

elif m[i][j] == 1 and(count == 2 or count == 3):

m[i][j] = 1

elif m[i][j] == 1 and count > 3:

m[i][j] = 0

elif m[i][j] == 0 and count == 3:

m[i][j] = 1 - Then update and repeat the steps

my complete code is posted in my github

## No comments:

## Post a Comment