gpt4 book ai didi

Python 康威生命游戏实现

转载 作者:行者123 更新时间:2023-12-01 04:01:05 25 4
gpt4 key购买 nike

我正在用 Python 实现康威的生命游戏,并希望制作一个小型 GUI 来查看模型的演变。

我的代码:

def __init__(self,grid):
self.top = Tkinter.Tk()

self.multiplier = 50

self.gridSize = grid.getSize()
self.gridArray = grid.getGrid()



self.C = Tkinter.Canvas(self.top, bg="black", height = self.gridSize[1]*self.multiplier,
width=self.gridSize[0]*self.multiplier)
self.C.pack()


def renderGrid(self, grid):



for x in range(0,self.gridSize[1]-1):
for y in range(0,self.gridSize[0]-1):

agent = grid.getAtPos(Coordinates2D(x,y))
agent = agent[0]

mx = x*self.multiplier
my = y*self.multiplier

if(agent.state == 0):
p = self.C.create_rectangle(mx,my,mx+self.multiplier,my+self.multiplier,
fill="white", width=3)

self.C.update()

我本质上希望能够将网格对象传递给此类,并让它更新 Canvas ,在代理状态为 0 的地方绘制白色方 block 。

虽然这原则上有效(即:它产生初始显示),但它似乎没有更新。我调用它的代码:

grid = ObjectGrid2D(10,10, "golgrid")
g = GameOfLifeRenderer(grid)


for i in range(10):
print i
for x in range(10):
for y in range(10):

h = GOLCell(1)
h.state == 0
grid.moveAgent(Coordinates2D(x,y), h)
g.renderGrid(grid)
sleep(5)

关于如何改进我的代码有什么建议吗?

谢谢!

最佳答案

您似乎没有在 forloop 中更新 Canvas 。尝试在 grid.moveAgent(...)

之后添加以下行
 g.C.update()

关于Python 康威生命游戏实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36502441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com