我想将数组转换成图像然后制作动画
I want to convert the arrays into an image an then animate it
所以我试图想出一个康威的生命游戏代码,这让我想到了这个。它可能不是最有效的,但我是一名编码初学者,我想让事情变得简单。我想做的就是让游戏动起来,而不仅仅是展示上一代游戏。另外,我想知道如何无限地 运行 游戏,因为如您所见,此代码具有预先确定的世代数。在此先感谢您的帮助,这是我的代码:
import numpy as np
import matplotlib.pyplot as plt
x=np.random.randint(2, size=(50,50))
for b in range (0,100):
y=np.zeros((50,50), dtype=np.int)
for c in range(1,48):
for d in range(1,48):
if x[c][d]==1:
if x[c][d-1]+x[c][d+1]+x[c-1][d-1]+x[c-1][d]+x[c-1][d+1]+x[c+1][d-1]+x[c+1][d]+x[c+1][d+1]<2 or x[c][d-1]+x[c][d+1]+x[c-1][d-1]+x[c-1][d]+x[c-1][d+1]+x[c+1][d-1]+x[c+1][d]+x[c+1][d+1]>3:
y[c][d]=0
else:
y[c][d]=1
if x[c][d]==0:
if x[c][d-1]+x[c][d+1]+x[c-1][d-1]+x[c-1][d]+x[c-1][d+1]+x[c+1][d-1]+x[c+1][d]+x[c+1][d+1]==3:
y[c][d]=1
else:
y[c][d]=0
x=y.copy()
plt.imshow(x)
plt.grid(False)
plt.show()
当我在 Macbook 上 运行 时,我在各种动画示例(以及相关的 blocking/nonblocking 示例)方面运气不佳。
一个对我有用的简单的东西:
...
x=np.random.randint(2, size=(50,50))
p = plt.imshow(x)
...
x = y.copy()
p.set_data(x)
plt.pause(.1)
所以我试图想出一个康威的生命游戏代码,这让我想到了这个。它可能不是最有效的,但我是一名编码初学者,我想让事情变得简单。我想做的就是让游戏动起来,而不仅仅是展示上一代游戏。另外,我想知道如何无限地 运行 游戏,因为如您所见,此代码具有预先确定的世代数。在此先感谢您的帮助,这是我的代码:
import numpy as np
import matplotlib.pyplot as plt
x=np.random.randint(2, size=(50,50))
for b in range (0,100):
y=np.zeros((50,50), dtype=np.int)
for c in range(1,48):
for d in range(1,48):
if x[c][d]==1:
if x[c][d-1]+x[c][d+1]+x[c-1][d-1]+x[c-1][d]+x[c-1][d+1]+x[c+1][d-1]+x[c+1][d]+x[c+1][d+1]<2 or x[c][d-1]+x[c][d+1]+x[c-1][d-1]+x[c-1][d]+x[c-1][d+1]+x[c+1][d-1]+x[c+1][d]+x[c+1][d+1]>3:
y[c][d]=0
else:
y[c][d]=1
if x[c][d]==0:
if x[c][d-1]+x[c][d+1]+x[c-1][d-1]+x[c-1][d]+x[c-1][d+1]+x[c+1][d-1]+x[c+1][d]+x[c+1][d+1]==3:
y[c][d]=1
else:
y[c][d]=0
x=y.copy()
plt.imshow(x)
plt.grid(False)
plt.show()
当我在 Macbook 上 运行 时,我在各种动画示例(以及相关的 blocking/nonblocking 示例)方面运气不佳。
一个对我有用的简单的东西:
...
x=np.random.randint(2, size=(50,50))
p = plt.imshow(x)
...
x = y.copy()
p.set_data(x)
plt.pause(.1)