如何从阵列中展示Conway的生命游戏

时间:2019-11-01 00:52:51

标签: python matplotlib

我有一个名为game的列表。

game = [[0, 1, 1, 1, 0, ...], [1, 0, 0, 0, ...], ...]

game[x][y]给出x坐标xy坐标y处的值

1表示它还活着,0表示它已经死了。我有一个函数,可以根据Conway的《生命游戏》的规则更新数组。

但是,我无法找到一种以图形方式显示此内容的好方法。

我希望使用matplotlib之类的东西,如果我想要30fps的话,我可以每1/30秒更新一次。虽然,我不确定该怎么做。

编辑:

这是我想要实现的目标:

fps = 15
while True:
    plt.imshow(game, cmap='binary')
    plt.show()
    game = update_game(size, game)
    time.sleep(1/fps)

但是,似乎每次都保存一个新图像,所以这基本上使我的计算机崩溃了……我该如何更新它?

EDIT2: 我再试一次

def main():
    size = [125, 125]
    game = populate_game(size)
    fps = 30
    fig, ax = plt.subplots()
    # plt.axis("off")
    img = ax.imshow(game, interpolation="nearest", cmap="binary")
    ani = animation.FuncAnimation(fig, update_game, fargs=(size, game, img,), interval=1000/fps, repeat=True)
    plt.show()

其中update_game在运行img后返回img.set_data(new_game),其中new_game是更新后的game数组。

但是,它似乎仍然很滞后。

0 个答案:

没有答案