import pygame import numpy as np import time # Инициализация Pygame pygame.init() # Определение размеров окна WINDOW_SIZE = (500, 500) # Создание окна screen = pygame.display.set_mode(WINDOW_SIZE) # Определение цветов BLACK = (0, 0, 0) WHITE = (255, 255, 255) # Определение размера клетки CELL_SIZE = 10 # Определение размера сетки GRID_SIZE = (WINDOW_SIZE[0] // CELL_SIZE, WINDOW_SIZE[1] // CELL_SIZE) # Создание массива клеток cells = np.zeros((GRID_SIZE[0], GRID_SIZE[1])) # Определение начального состояния клеток cells[2, 1] = 1 cells[2, 2] = 1 cells[2, 3] = 1 cells[1, 3] = 1 cells[0, 2] = 1 # Функция для отрисовки клетки def draw_cell(x, y): pygame.draw.rect(screen, WHITE, (x * CELL_SIZE, y * CELL_SIZE, CELL_SIZE, CELL_SIZE)) # Функция для отрисовки всех клеток def draw_cells(): for x in range(GRID_SIZE[0]): for y in range(GRID_SIZE[1]): if cells[x, y] == 1: draw_cell(x, y) # Функция для обновления состояния клеток def update_cells(): global cells new_cells = np.zeros((GRID_SIZE[0], GRID_SIZE[1])) for x in range(GRID_SIZE[0]): for y in range(GRID_SIZE[1]): # Подсчет количества живых соседей num_neighbors = ( cells[(x - 1) % GRID_SIZE[0], (y - 1) % GRID_SIZE[1]] + cells[x % GRID_SIZE[0], (y - 1) % GRID_SIZE[1]] + cells[(x + 1) % GRID_SIZE[0], (y - 1) % GRID_SIZE[1]] + cells[(x - 1) % GRID_SIZE[0], y % GRID_SIZE[1]] + cells[(x + 1) % GRID_SIZE[0], y % GRID_SIZE[1]] + cells[(x - 1) % GRID_SIZE[0], (y + 1) % GRID_SIZE[1]] + cells[x % GRID_SIZE[0], (y + 1) % GRID_SIZE[1]] + cells[(x + 1) % GRID_SIZE[0], (y + 1) % GRID_SIZE[1]] ) # Обновление состояния клетки if cells[x, y] == 1 and num_neighbors in [2, 3]: new_cells[x, y] = 1 elif cells[x, y] == 0 and num_neighbors == 3: new_cells[x, y] = 1 cells = new_cells # Цикл игры while True: # Очистка экрана screen.fill time.sleep(2)