问题描述
我最近一直在尝试制作康威的生活游戏,但是我的代码似乎无法按计划运行。有什么建议么?任何帮助表示赞赏,谢谢。 我的问题是循环创建了一个不会结束的模式,并且会在大多数变化中继续进行。实际上,大多数模式都结束并且不是无限的,但是我的循环只是继续前进,越来越大,直到通常达到与其他变化类似的模式。
规则很简单:
#任何有两个或三个活邻居的活细胞都能存活。
#任何有三个活邻居的死细胞都会变成活细胞。
#所有其他活细胞在下一代中死亡。同样,所有其他死细胞保持死亡。
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 (将#修改为@)