python中的生命游戏

2024-09-30 22:25:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在python3中制作Conway的生活游戏,但是输出不符合游戏规则。这里需要一些代码方面的帮助。正如您在下面的代码中所看到的,程序将检查每个单元的所有八个邻居是否处于活动状态。关于生命游戏规则,需要在下一代删除的单元将存储在一个数组中,类似于需要在下一代添加的单元,每个单元都存储在自己的数组中,称为remcell[]addcell[]

from random import randint
from os import system
from time import sleep

table_x = 30
table_y = 7
board = []
for y in range(table_y):
    boardx = []
    for x in range(table_x):
        if randint(0,2) == 0:
            boardx.append(1)
        else:
            boardx.append(0)
    board.append(boardx)

while True:
    for y in range(table_y):
        for x in range(table_x):
            if board[y][x] == 1:
                print("# ", end='')
            else:
                print(". ", end='')
        print("\n")

    remcell = []
    addcell = []
    for y in range(table_y):
        for x in range(table_x):
            val = 0
            for yp in range(-1,2):
                for xp in range(-1,2):
                    if (not yp+xp == 0) and x+xp < table_x-1 and y+yp < table_y-1:
                        val += board[y+yp][x+xp]
            if val < 2 or val > 3: remcell.append([y,x])
            if val == 3: addcell.append([y,x])

    for i in (addcell): board[i[0]][i[1]] = 1
    for h in (remcell): board[h[0]][h[1]] = 0

    sleep(0.1)
    system("cls")

Tags: infromboardforiftablerangeval