Используя следующий код:
import random
import pygame
mw = 165 # Matrix width
mh = 165 # Matrix height
margin = 0
newmatrix = []
finished = False
pygame.init()
matrix = []
for i in range(mw): # This block of code just creates a new 2d array and fill it with either a 1 or a 0 in each cell
matrix.append([])
for j in range(mh):
matrix[i].append(random.randint(0, 1))
def neighborchecker():
"""This long block of code checks the 8 cells around matrix[r][c] and checks if it is a 0
or 1, and based on that assigns that cell true or false, adding each cell up to
see how many cells are 1s or 0s and then assigning matrix[r][c] based on its
neighbors"""
for r in range(mw):
for c in range(mh):
try:
if matrix[r - 1][c] == 0:
left = False
else:
left = True
if matrix[r - 1][c - 1] == 0:
botleft = False
else:
botleft = True
if matrix[r][c - 1] == 0:
bot = False
else:
bot = True
if matrix[r + 1][c + 1] == 0:
botright = False
else:
botright = True
if matrix[r + 1][c] == 0:
right = False
else:
right = True
if matrix[r + 1][c + 1] == 0:
topright = False
else:
topright = True
if matrix[r][c - 1] == 0:
top = False
else:
top = True
if matrix[r - 1][c + 1] == 0:
topleft = False
else:
topleft = True
except IndexError:
pass
allneighbor = sum([left, botleft, bot, botright, right, topright, top, topleft])
if allneighbor < 2 or allneighbor > 3:
return 0
if allneighbor == 3:
return 1
def createnewmatrix(): # This block creates a new matrix with new values based on what neighborchecker() returns
for x in range(mw):
newmatrix.append([])
for y in range(mh):
newmatrix[x].append(neighborchecker())
print(newmatrix)
while not finished:
createnewmatrix()
В каждом блоке кода есть комментарий о том, что каждый из них делает / по крайней мере должен делать
То, что я ожидаю получить, это язапустите его, получите матрицу, полную 1 и 0, затем бросьте ее в цикл, чтобы проверить соседей каждой ячейки, и измените соответствующую ячейку на 'newmatrix', основываясь на этом.Тогда это также входит в цикл, чтобы продолжать обновлять newmatrix.
Если вы знакомы, я пытаюсь реализовать «Игру жизни» Конвея по-своему, и я понимаю, что это грязно, но когда я запускаю это - каждая ячейка newmatrix - 2-мерный массив около 27 тысяч значенийлибо ВСЕ 1, либо ВСЕ 0 меняются случайным образом, когда я его запускаю, что не имеет смысла для меня.