Так что я пытался придумать код игры Конуэй в жизни, и это привело меня к этому. Возможно, он не самый эффективный, но я начинающий кодер, и я хотел, чтобы все было просто. Все, что я хочу сделать, это оживить игру и не только отобразить последнее поколение игры. Кроме того, я хотел бы знать, как запустить игру неопределенно, потому что, как вы видите, этот код имеет предварительно определенное количество поколений. Заранее спасибо за вашу помощь и вот мой код:Я хочу преобразовать массивы в изображение, а затем одушевить его
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()
Unrelated, но так как вы уже используете NumPy вы можете использовать нарезку, чтобы все соседи, как 'np.sum (х [я-1: Я + 2 , j-1: j + 2]) - x [i, j] '. Также я бы не стал вычислять одинаковое количество соседей два или три раза, просто назначив ему переменную. Наконец, приведен пример анимации для 'imshow': http://matplotlib.org/examples/animation/dynamic_image.html – roadrunner66