2016-04-10 6 views
-1

Conway'in oyun hayatını python'da yapmaya çalıştım ve çıktıyı bir fotoğrafa kaydettim ama mantığın yanlış bir şey olduğunu düşünüyorum. doğru. Geçen nesil saklandığı aynı ızgarada nesil hesaplamak çünkü game of life picPython'da hayat oyunu Conway

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

"Doğru görünmüyor" ile ne demek istiyorsun? –

+0

@arc_lupus resme bakın –

+0

Ve bekler misiniz? –

cevap

1

Programınız şu anki durumunda düzgün çalışamaz (resme bakın). Yeni nesli saklamak için yeni (boş) bir ızgaraya ihtiyacınız var. Uygulamanızda, gelecek nesli hesaplarken son neslin üzerine yazıyorsunuz.