【问题标题】:I have a problem with my "Game of life" on python我在 python 上的“生活游戏”有问题
【发布时间】:2022-11-27 14:42:59
【问题描述】:

我不知道为什么,但我检查“现场游戏”的 3 条规则的“def”无法正常工作。我有 2 个列表,其中包含 0 和一些 1 来检查程序。 3 points 应该给这个 image 但它给了 this

def upd(mass,screen,WHITE,mass1):
    BLACK = (0,0,0)
    for i in range(len(mass)-1):
        for j in range(len(mass[i])-1):
            if mass[i][j] == 0:
                if near(mass,i,j) == True:
                    mass1[i][j]=1
                    print("case1")
            if mass[i][j] == 1:
                if (near(mass,i,j)==False):
                    mass1[i][j]=0
                    print("case 2")
                if (near(mass,i,j)==False):
                    mass1[i][j]=0
                    print("case 3")
    for i in range(len(mass1)-1):
        for j in range(len(mass1[i])-1):
            if mass1[i][j] == 1:
                p.draw.rect(screen, (WHITE), Rect((j*10,i*10), (10,10)))
            else:
                p.draw.rect(screen, (BLACK), Rect((j*10,i*10), (10,10)))
    mass=mass1
def near(mass,i,j):
    counter = 0
    if mass[i][j+1]==1:
        counter+=1
    if mass[i][j-1]==1:
        counter+=1
    if mass[i+1][j]==1:
        counter+=1
    if mass[i-1][j]==1:
        counter+=1
    if mass[i+1][j+1]==1:
        counter+=1
    if mass[i-1][j+1]==1:
        counter+=1
    if mass[i+1][j-1]==1:
        counter+=1
    if mass[i-1][j-1] == 1:
        counter+=1
    if counter<2 or counter == 0:
        return False
    if counter > 3:
        return False
    if counter == 3:
        return True

log 重复每个圆圈

我不擅长 python 所以我觉得这段代码很可怕:) 我非常感谢任何建议

【问题讨论】:

  • 还有另一个规则,如果 no.of.neibours==2 那么单元格会存活到下一次迭代,但我无法在你的函数中看到该条件 near()
  • @Hariharan 在那种情况下,它只是存在于“质量”中,没有任何变化
  • @Rabbid76 我应该试试这个,ty
  • @Rabbid76 我有 2 个列表“mass”和“mass1”,用于检查和绘图的 mass 和包含新值的 mass1,在圆圈之后“mass”采用“mass1”值
  • @Rabbid76 我更改了 mass1 以计算邻居数量,并且有效。太感谢了!

标签: python pygame


【解决方案1】:

mass = mass1并没有复制网格的内容,它只是在mass中放置了对mass1的引用(实际上只是在upd范围内的局部变量mass中)。您必须深度复制网格:

for i in range(len(mass1)):
    for j in range(len(mass1[i])):
        mass[i][j] == mass1[i][j]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多