Python Conway 的游戏人生修正

问题描述

我最近一直在尝试制作康威的生活游戏,但是我的代码似乎无法按计划运行。有什么建议么?任何帮助表示赞赏,谢谢。 我的问题是循环创建了一个不会结束的模式,并且会在大多数变化中继续进行。实际上,大多数模式都结束并且不是无限的,但是我的循环只是继续前进,越来越大,直到通常达到与其他变化类似的模式。

规则很简单:

#任何有两个或三个活邻居的活细胞都能存活。

#任何有三个活邻居的死细胞都会变成活细胞。

#所有其他活细胞在下一代中死亡。同样,所有其他死细胞保持死亡。

import time
import sched
timeout = 60.0 # Sixty seconds
import tkinter as tk
window = tk.Tk()
from functools import partial
class Game():
    def __init__(self):
        self.board = [["","",""],["",""]]
        self.buttons=[[],[],[]]
        self.info=[[],[]]
        for x in range(12):
            for y in range(12):
                if self.board[x][y] == "":
                    button = tk.Button(height=2,width=4,bg="white",command=partial(self.buttonpress,x,y))
                    self.buttons[x].append(button)
                    self.info[x].append(0)
                    button.grid(column=x,row=y)
        self.buttonstart = tk.Button(height=2,text="start",command=self.start)
        self.buttonstart.grid()
        self.started = False
    def start(self):
        self.started=True
        self.play_game()


    def buttonpress(self,y):
        if self.started==False:
            if self.board[x][y]=="":
                self.board[x][y]="."
                (self.buttons[x][y])["bg"] = "black"
            elif self.board[x][y]==".":
                self.board[x][y] = ""
                (self.buttons[x][y])["bg"] = "white"
    def count_info(self,y):
        try:

            if self.board[x - 1][y + 1] == ".":
                self.info[x][y] += 1
            if self.board[x][y + 1] == ".":
                self.info[x][y] += 1
            if self.board[x + 1][y + 1] == ".":
                self.info[x][y] += 1
            if self.board[x - 1][y] == ".":
                self.info[x][y] += 1
            if self.board[x + 1][y] == ".":
                self.info[x][y] += 1
            if self.board[x - 1][y - 1] == ".":
                self.info[x][y] += 1
            if self.board[x][y - 1] == ".":
                self.info[x][y] += 1
            if self.board[x + 1][y - 1] == ".":
                self.info[x][y] += 1
            # print(str(self.info[x][y]))
        except IndexError:
            pass
    def play_game(self):
        for x in range(12):
            for y in range(12):
                #print(self.board)
                if self.board[x][y]=="":
                    self.count_info(x,y)
                    if self.info[x][y]==3:
                        print("black")
                        self.board[x][y]="."
                        (self.buttons[x][y])["bg"] = "black"
        for x in range(12):
            for y in range(12):
                self.info[x][y] = 0
        for x in range(12):
            for y in range(12):
                self.count_info(x,y)
                if self.info[x][y] <= 1:
                    (self.buttons[x][y])["bg"] = "white"
                    print("white")
                    self.board[x][y] = ""
                elif self.info[x][y] >=4:
                    if self.board[x][y] == ".":
                        (self.buttons[x][y])["bg"] = "white"
                        print("white")
                        self.board[x][y] = ""
                elif self.info[x][y] == 3:
                    if self.board[x][y]=="":
                        print("black")
                        self.board[x][y] = "."
                        (self.buttons[x][y])["bg"] = "black"
                else:
                    pass

        for x in range(12):
            for y in range(12):
                self.info[x][y] = 0
        window.after(250,self.play_game)
game = Game()
window.mainloop()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)