1 van 1

Game of life

Geplaatst: wo 20 feb 2008, 11:31
door jhnbk
Ik had weer even tijd te veel en ben begonnen met een game of life te schrijven

1 0 0 1 1 0 0 1 1 0

0 1 1 0 1 0 0 1 0 1

1 0 0 1 1 1 1 1 0 0

0 1 0 0 1 1 1 1 1 1

0 0 1 1 1 1 0 0 1 1

0 0 1 0 1 1 1 1 0 1

1 0 0 0 0 0 1 1 0 1

0 0 0 1 1 1 1 0 1 1

1 0 1 1 1 1 0 1 1 0

1 1 1 0 0 1 0 1 1 0

0 0 1 0 1 0 0 1 0 1

0 0 0 1 0 0 1 1 1 0

0 0 1 0 0 0 0 0 0 0

0 0 1 1 0 0 0 0 0 1

1 1 0 0 0 0 0 1 0 0

1 0 1 1 0 0 0 1 1 0

0 0 1 0 1 0 0 0 0 1

1 0 1 0 0 1 0 0 0 1

0 1 1 1 0 0 0 0 1 1

1 0 1 1 1 0 1 1 0 1

De vette cel zou in de volgende generatie levend moeten worden om dat het 3 levende buren heeft. Dit blijkt mis te lopen. Alhoewel ik denk dat op dat gebied mijn code klopt is er dus toch een fout in geslopen, ziet iemand deze. (Nog even de regels van het spel voor diegen die het niet kennen
Verborgen inhoud
1. Any live cell with fewer than two live neighbours dies, as if by loneliness.

2. Any live cell with more than three live neighbours dies, as if by overcrowding.

3. Any live cell with two or three live neighbours lives, unchanged, to the next generation.

4. Any dead cell with exactly three live neighbours comes to life.
)

Taal:python

Code: Selecteer alles

class cell:

def __init__(self,now=True,next=False):

self.now=now

self.next=next

class life:

def __init__(self,w,h):

self.board=[[cell(randBool()) for i in range(w)] for j in range(h)]

def nextgeneration(self):

for row in range(len(self.board)):

for col in range(len(self.board[row])):

n=0

for i in [-1,1,0]:

for j in [-1,1,0]:

if not (i==0 and j==0):

try:

if self.board[row+i][col+i].now==True:

n+=1

except IndexError:

pass

if self.board[row][col].now==True:

if n<2 or n>3:

self.board[row][col].next=False

else:

self.board[row][col].next=True

else:

if n==3:

self.board[row][col].next=True

else:

self.board[row][col].next=False

for row in range(len(self.board)):

for col in range(len(self.board[row])):

self.board[row][col].now=self.board[row][col].next

def printboard(self):

for row in range(len(self.board)):

for col in range(len(self.board[row])):

if self.board[row][col].now==True:

print "1",

else:

print "0",

print