2016-04-10 13 views
-1

Ich habe versucht, Conways Spiel des Lebens in Python zu machen, und speichern Sie dann die Ausgabe in ein Bild, aber ich denke, dass etwas mit der Logik nicht stimmt, da die meisten Bilder nicht ganz aussehen richtig. (Siehe Bild) game of life picConways Spiel des Lebens in Python

import PIL.Image, random 

WIDTH = 1366 
HEIGHT = 768 
ROUNDS = 10 

DEAD = (0, 0, 0) 
ALIVE = (0, 64, 255) 

print("Creating image") 
img = PIL.Image.new("RGB", (WIDTH, HEIGHT)) 
data = img.load() 

print("Creating grid") 
grid = [] 
for y in range(HEIGHT): 
    grid.append([]) 
    for x in range(WIDTH): 
     grid[y].append(random.randint(0, 1)) 

for i in range(ROUNDS): 
    print("Starting round", i + 1, "of", ROUNDS) 
    for y in range(HEIGHT): 
     for x in range(WIDTH): 
      n = 0 
      for y2 in range(-1, 2): 
       for x2 in range(- 1, 2): 
        if x2 != 0 and y2 != 0 and grid[(y + y2) % HEIGHT][(x + x2) % WIDTH] == 1: 
         n += 1 
      if n < 2: 
       grid[y][x] = 0 
      elif n > 3: 
       grid[y][x] = 0 
      elif grid[y][x] == 1 and n > 1 and n < 4: 
       grid[y][x] = 1 
      elif grid[y][x] == 0 and n == 3: 
       grid[y][x] = 1 

print("Rendering image") 
for y in range(HEIGHT): 
    for x in range(WIDTH): 
     if grid[y][x] == 1: 
      data[x, y] = ALIVE 
     else: 
      data[x, y] = DEAD 

print("Saving image") 
img.save("gofl.png") 
+0

Was meinst du mit "Sieht nicht korrekt aus"? –

+0

@arc_lupus siehe Bild –

+0

Und Sie erwarten? –

Antwort

1

Ihr Programm nicht richtig in seinem aktuellen Zustand arbeiten, weil man die nächste Generation in dem gleichen Raster zu berechnen, wo die letzte Generation gespeichert ist. Sie benötigen ein neues (leeres) Raster, um die nächste Generation zu speichern. In Ihrer Implementierung überschreiben Sie bereits beim Generieren der nächsten Generation die letzte Generation.

Verwandte Themen