Итак, я пишу код для имитации «Игры жизни» Конвея.Мне удалось в основном реализовать игру, однако есть еще один шаг, который я пропускаю
Я обработал все, кроме логики для определения, жива или нет клетка.Мы используем числовые массивы для хранения 1 и 0, где 1 считается живым, а 0 - мертвым.
Есть ли какой-нибудь способ, которым я мог бы перебрать массив и напечатать, является ли ячейка живой или мертвой?или это какая-то форма?
Вот мой код.
Для первоначального создания.
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import clear_output
from time import sleep
def update_plot(array, figsize=(7,5), title=''):
clear_output(wait=False)
plt.figure(figsize=figsize)
plt.imshow(array,cmap="gray")
plt.title(title)
#plt.grid(True)
plt.xlabel('Remember alive is white, dead is black')
plt.show();
Тогда это для запуска игры.
def startup(random_percent=None):
size_to_build = input("enter the size of your game of life\n")
dimension = int(size_to_build)
##Build the game board, bias is an optional parameter you can pass the function
if random_percent==None:
game_board = np.random.randint(2,size=(dimension,dimension))
else:
game_board = np.arange(dimension**2)
#In place shuffle
np.random.shuffle(game_board)
#Grab number we should make alive
alive = int(np.floor(len(game_board)*random_percent))
#Set those elements to be alive
zeros = np.zeros(dimension**2)
alive_cells = game_board[0:alive:1]
zeros[alive_cells]=1
game_board = zeros.reshape(dimension,-1)
return game_board
И это для запуска игры.
def game_of_life():
start_board = startup()
board = start_board
count = 1
not_stable = True
while not_stable:
title_plot="This is iteration number: " + str(count)
update_plot(board,title=title_plot)
board_prev = board
board = update_game_board(board)
if np.array_equal(board_prev,board):
not_stable = False
sleep(2)
count+=1
print("Stable game conditions reached after:",count,"iterations")
Это функция, которую я пытаюсь уточнить.
def update_game_board(input_board):
for element in input_board:
print("Alive Or Dead")
return np.logical_not(input_board)*1
Как бы я получил доступ к "мертвым"и "Живые" элементы в массиве?
Я довольно новичок в numpy и python и почти не работал с ним. Любая помощь будет принята с благодарностью!