Как отобразить игру жизни Конвея из массива массивов - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть список списков с именем 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.

Тем не менее, он все еще выглядит довольно медленным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...