我想将数组转换为图像然后为其设置动画

时间:2016-04-12 19:52:46

标签: python python-3.x numpy conways-game-of-life

所以我试图想出一个康威的生命游戏代码,这引导我去看这个。它可能不是最有效的,但我是一个初学者,我想保持简单。我想要做的就是为游戏制作动画,而不仅仅是显示游戏的最后一代。此外,我想知道如何无限制地运行游戏,因为您可以看到此代码具有预定数量的代。在此先感谢您的帮助,这是我的代码:

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()

1 个答案:

答案 0 :(得分:0)

当在Macbook上运行时,我已经在各种动画示例(以及相关的阻塞/非阻塞示例)中获得了可怕的运气。

对我有用的简单事情: ... x=np.random.randint(2, size=(50,50)) p = plt.imshow(x) ... x = y.copy() p.set_data(x) plt.pause(.1)