Вам нужно две копии сетки, чтобы сделать это правильно.Когда вы рассчитываете новое поколение ячеек, вы должны использовать значение всех соседних ячеек предыдущего поколения.Но вы перезаписываете каждую ячейку во время цикла, поэтому у некоторых соседей будут новые значения вместо старых.
Итак, создайте две сетки, назовите одну current_cells
, а другую next_cells
.Используйте current_cells
при расчете, каким должен быть новый цвет, и присвойте его next_cells[x][y].colour
.У вас также должно быть предложение else
, которое просто копирует
next_cells[x][y].colour = current_cells[x][y].colour;
В конце цикла поменяйте местами их роли:
[next_cells, current_cells] = [current_cells, next_cells];