Ich implementiere Conways Spiel des Lebens in Python und möchte eine kleine GUI produzieren, um das sich entwickelnde Modell zu sehen.Python Conway Spiel des Lebens Implementierung
Mein Code:
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()
ich im Wesentlichen in der Lage sein wollen, ein Raster-Objekt dieser Klasse zu übergeben und haben es die Leinwand zeichnen weiße Quadrate zu aktualisieren, wo ein Agent Status 0.
Während dies hat funktioniert im Prinzip (Ie: Es erzeugt die anfängliche Anzeige) es scheint nicht zu aktualisieren. Der Code, von dem ich es nenne:
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)
Irgendwelche Ratschläge, wie ich meinen Code verbessern könnte?
Danke!
hinzuzufügen Es gibt bessere Möglichkeiten, Animation als eine benutzerdefinierte Schleife zu tun, die 'sleep' enthält. Siehe http://StackOverflow.com/a/25431690/7432 –