簡體   English   中英

Python Conway人生游戲實現

[英]Python Conway Game of Life Implementation

我正在用Python實現Conway的生活游戲,並希望生成一個小的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()

我本質上希望能夠將網格對象傳遞給此類,並使其在代理狀態為0的任何地方都可以更新畫布繪制白色正方形。

盡管這在原理上是可行的(即:它會產生初始顯示),但它似乎沒有更新。 我從中調用的代碼:

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中更新畫布。 嘗試在grid.moveAgent(...)之后添加以下行

 g.C.update()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM