Hier ist ein Code von Conways Spiel des Lebens, das ich zwischen zwei Gewürzen von Zellen gemacht habe, die zusammenarbeiten. Ich möchte die Animation nach etwa 10 Generationen stoppen. Ich habe versucht, die "Frames" der Animation zu verwenden, aber die Animation hört nicht auf. Wie höre ich es nach 10 Tagen auf? Hier ist der Code:Animation stoppen - Conways Spiel des Lebens
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import random
N = 100
OnTypeOne = 10
OnTypeTwo= -10
OFF = 0
vals = [OnTypeOne , OnTypeTwo, OFF]
# populate grid with random on/off - more off than on
grid = np.random.choice(vals, N*N, p=[0.2,0.2, 0.6]).reshape(N, N)
def update(data):
global grid
x=0
# copy grid since we require 8 neighbors for calculation
# and we go line by line
newGrid = grid.copy()
for i in range(N):
for j in range(N):
# compute 8-neghbor sum
# using toroidal boundary conditions - x and y wrap around
# so that the simulaton takes place on a toroidal surface.
total = (abs (grid[i, (j-1)%N])+ abs (grid[i, (j+1)%N]) +
abs (grid[(i-1)%N, j]) + abs (grid[(i+1)%N, j]) +
abs (grid[(i-1)%N, (j-1)%N]) + abs (grid[(i-1)%N, (j+1)%N]) +
abs (grid[(i+1)%N, (j-1)%N]) + abs (grid[(i+1)%N, (j+1)%N]))/10
# apply Conway's rules
if grid[i, j] == OnTypeOne:
if (total < 2) or (total > 3):
newGrid[i, j] = OFF
if (total==3):
newGrid[i, j] = OnTypeOne
if grid[i, j] == OnTypeTwo:
if (total < 2) or (total > 3):
newGrid[i, j] = OFF
if (total==3):
newGrid[i, j] = OnTypeTwo
if grid[i, j] == OFF:
if total==3:
x=random.random()
if x<=0.5:
newGrid[i,j]=OnTypeOne
elif x>0.5:
newGrid[i,j]=OnTypeTwo
if total!=3:
newGrid[i,j]=OFF
# update data
mat.set_data(newGrid)
grid = newGrid
return [mat]
# set up animation
fig, ax = plt.subplots()
mat = ax.matshow(grid)
ani = animation.FuncAnimation(fig, update, frames=10,
interval=50,save_count=50
, blit=True)
plt.show()
danken Ihnen sehr viel. Es klappt! – Idit