我正在尝试用 Python 构建康威生命游戏的基本版本。我制作了一个 0 数组作为空白背景,用 1 替换要着色的点。但是,我无法为 0 和 1 指定颜色并同时为绘图设置动画。这是完整的代码:
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import numpy as np
grid = np.zeros((11,11), dtype=np.int16)
def neighbors(x,y):
n_cells = [grid[x-1, y+1], grid[x, y+1], grid[x+1, y+1],
grid[x-1, y], grid[x+1, y],
grid[x-1, y-1], grid[x, y-1], grid[x+1, y-1]]
return sum(n_cells)
grid[3:6,5]=1
newgrid = grid.copy()
def updatefig(i):
for x in range(10):
for y in range(10):
if grid[x,y]==0:
if neighbors(x,y)==3:
newgrid[x,y]=1
else:
if neighbors(x,y)<2 or neighbors(x,y)>3:
newgrid[x,y]=0
return newgrid
fig, ax = plt.subplots()
ax = plt.gca()
ax.set_xticklabels([])
ax.set_yticklabels([])
ax.set_xticks([])
ax.set_yticks([])
plt.imshow(grid, cmap='binary')
ani = FuncAnimation(fig, updatefig, interval=100)
plt.show()
如果我在 plt.imshow() 中使用 cmap,我必须给出一个参数,这会导致静态绘图并且没有动画。如果我不指定颜色而只运行动画,则会出现白屏。我已经寻找解决方案并尝试过,但没有任何运气。
如果我可以在不使用 imshow 的情况下将颜色分配给 0 和 1,我认为它会成功。有任何想法吗?
编辑:我意识到我的循环有缺陷,它只提供 1 个更新的数组。我正在尝试解决这个问题,但无论如何仍然需要动画。
紫衣仙女
相关分类