У меня есть список списков с именем game
.
game = [[0, 1, 1, 1, 0, ...], [1, 0, 0, 0, ...], ...]
Где game[x][y]
дает значение в x
координата x
и y
координата y
Где 1
означает, что он жив, а 0
означает, что он мертв. У меня есть функция, которая будет обновлять массив в соответствии с правилами игры жизни Конвея.
Однако я не могу придумать хороший способ отобразить это графически.
Я надеялся использовать что-то вроде matplotlib, а затем я могу просто обновлять его каждые 1/30 секунды, если я хочу 30fps или что-то еще. Хотя я не уверен, как это сделать.
РЕДАКТИРОВАТЬ:
Вот то, что я хотел достичь:
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
.
Тем не менее, он все еще выглядит довольно медленным.