Код игры ЖИЗНЬ на 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()


Последнее изменение: Monday, 19 June 2023, 21:31