Код игры ЖИЗНЬ на Python
import pygame
import random
# Инициализация Pygame
pygame.init()
# Размеры окна игры
WINDOW_WIDTH = 1800
WINDOW_HEIGHT = 1000
# Размеры ячейки
CELL_SIZE = 10
# Количество ячеек в окне
GRID_WIDTH = WINDOW_WIDTH // CELL_SIZE
GRID_HEIGHT = WINDOW_HEIGHT // CELL_SIZE
# Цвета
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
# Создание окна игры
screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption("Игра Жизнь")
# Функция для создания случайного начального состояния игрового поля
def create_random_grid():
grid = []
for _ in range(GRID_HEIGHT):
row = [random.randint(0, 1) for _ in range(GRID_WIDTH)]
grid.append(row)
return grid
# Функция для отображения игрового поля
def draw_grid(grid):
screen.fill(BLACK)
for y in range(GRID_HEIGHT):
for x in range(GRID_WIDTH):
if grid[y][x] == 1:
#r = random.randint(0, 255)
#g = random.randint(0, 255)
#b = random.randint(0, 255)
r=255
g=255
b=255
color = (r, g, b)
#color=(int(random*255), 255, 255)
pygame.draw.rect(screen, color, (x * CELL_SIZE, y * CELL_SIZE, CELL_SIZE, CELL_SIZE))
#pygame.draw.rect(screen, WHITE, (x * CELL_SIZE, y * CELL_SIZE, CELL_SIZE, CELL_SIZE))
# Функция для расчета следующего поколения игрового поля
def next_generation(grid):
new_grid = [[0] * GRID_WIDTH for _ in range(GRID_HEIGHT)]
for y in range(GRID_HEIGHT):
for x in range(GRID_WIDTH):
neighbors = count_neighbors(grid, x, y)
if grid[y][x] == 1:
if neighbors == 2 or neighbors == 3:
new_grid[y][x] = 1
else:
if neighbors == 3:
new_grid[y][x] = 1
return new_grid
# Функция для подсчета количества соседей у ячейки
def count_neighbors(grid, x, y):
count = 0
for dy in [-1, 0, 1]:
for dx in [-1, 0, 1]:
if dx == 0 and dy == 0:
continue
nx = x + dx
ny = y + dy
if 0 <= nx < GRID_WIDTH and 0 <= ny < GRID_HEIGHT:
count += grid[ny][nx]
return count
# Создание случайного начального состояния игрового поля
grid = create_random_grid()
# Счетчик ходов
turn = 0
# Основной игровой цикл
running = True
while running:
# Отображение игрового поля
draw_grid(grid)
# Обновление игрового поля
grid = next_generation(grid)
# Увеличение счетчика ходов
turn += 1
# Добавление случайных точек один раз за каждые 10 ходов
if turn % 10 == 0:
for _ in range(5):
x = random.randint(0, GRID_WIDTH - 1)
y = random.randint(0, GRID_HEIGHT - 1)
grid[y][x] = 1
# Обработка событий
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Обновление экрана
pygame.display.flip()
# Выход из программы
pygame.quit()