Простая 3D-игра на Python: урок для школьников

Введение в 3D-игры на Python

Создание игр — это увлекательный и творческий процесс, который может стать отличным способом изучения программирования. В этом уроке мы научимся создавать простую 3D-игру на Python с использованием библиотеки Pygame и Pygame Zero. Это идеальный проект для школьников, которые хотят погрузиться в мир разработки игр.

Что такое Pygame?

Pygame — это библиотека для языка Python, которая позволяет создавать игры и мультимедийные приложения. Она предоставляет множество инструментов для работы с графикой, звуком и вводом от пользователя. Благодаря своей простоте и доступности, Pygame стал популярным выбором для начинающих разработчиков.

Установка необходимых инструментов

Перед тем как начать, убедитесь, что у вас установлен Python. Если его нет, скачайте и установите последнюю версию с официального сайта. После этого установите Pygame, выполнив следующую команду в терминале:

pip install pygame

Создание простого игрового окна

Начнем с создания простого игрового окна. Откройте текстовый редактор и создайте новый файл с расширением .py. Вставьте следующий код:

import pygame
import sys

# Инициализация Pygame
pygame.init()

# Устанавливаем размеры окна
width, height = 800, 600
screen = pygame.display.set_mode((width, height))

# Основной игровой цикл
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    # Заливаем экран черным цветом
    screen.fill((0, 0, 0))
    pygame.display.flip()

Этот код создает окно размером 800 на 600 пикселей и заливает его черным цветом. Основной игровой цикл обрабатывает события, такие как закрытие окна.

Добавление 3D-объектов

Теперь давайте добавим 3D-объект в наше окно. Для этого мы будем использовать простую 3D-графику, представленную в виде 2D-проекций. Например, мы можем нарисовать куб.

def draw_cube(surface, color, position):
    # Рисуем куб в 2D
    pygame.draw.rect(surface, color, (*position, 50, 50))

# В основном игровом цикле добавляем вызов функции
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    screen.fill((0, 0, 0))
    draw_cube(screen, (255, 0, 0), (375, 275))  # Рисуем красный куб
    pygame.display.flip()

Функция draw_cube рисует красный квадрат, который будет представлять наш куб. Мы используем координаты для его размещения в центре окна.

Добавление движения

Чтобы сделать игру более интерактивной, добавим возможность перемещения куба с помощью клавиш. Обновим наш игровой цикл:

position = [375, 275]  # Начальная позиция куба

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        position[0] -= 5
    if keys[pygame.K_RIGHT]:
        position[0] += 5
    if keys[pygame.K_UP]:
        position[1] -= 5
    if keys[pygame.K_DOWN]:
        position[1] += 5

    screen.fill((0, 0, 0))
    draw_cube(screen, (255, 0, 0), position)
    pygame.display.flip()

Теперь куб будет двигаться в зависимости от нажатых клавиш. Это добавляет элемент управления и делает игру более интересной.

Добавление звуковых эффектов

Звуки могут значительно улучшить игровой процесс. Давайте добавим звуковой эффект, который будет воспроизводиться при перемещении куба. Для этого сначала загрузим звуковой файл:

pygame.mixer.init()
move_sound = pygame.mixer.Sound('move.wav')  # Замените на путь к вашему звуковому файлу

Теперь обновим код, чтобы воспроизводить звук при движении:

if keys[pygame.K_LEFT] or keys[pygame.K_RIGHT] or keys[pygame.K_UP] or keys[pygame.K_DOWN]:
    move_sound.play()

Теперь, когда вы будете перемещать куб, будет воспроизводиться звуковой эффект.

Создание уровня

Чтобы сделать игру более интересной, добавим уровень с препятствиями. Мы можем создать простую карту, где куб должен избегать столкновений с красными прямоугольниками.

obstacles = [(200, 200, 100, 100), (500, 400, 100, 100)]  # Список препятствий

def draw_obstacles(surface, obstacles):
    for obstacle in obstacles:
        pygame.draw.rect(surface, (255, 0, 0), obstacle)

# В основном игровом цикле добавляем отрисовку препятствий
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        position[0] -= 5
    if keys[pygame.K_RIGHT]:
        position[0] += 5
    if keys[pygame.K_UP]:
        position[1] -= 5
    if keys[pygame.K_DOWN]:
        position[1] += 5

    screen.fill((0, 0, 0))
    draw_obstacles(screen, obstacles)
    draw_cube(screen, (255, 0, 0), position)
    pygame.display.flip()

Теперь на экране будут отображаться препятствия, и игроку нужно будет избегать их.

Заключение

Поздравляем! Вы создали свою первую простую 3D-игру на Python. Этот проект может стать отличной основой для дальнейшего изучения программирования и разработки игр. Вы можете добавлять новые уровни, улучшать графику и звуки, а также экспериментировать с игровым процессом.

Примечание

Не забывайте сохранять свои изменения и тестировать игру после каждого обновления кода!

Если у вас возникли вопросы или вы хотите поделиться своими достижениями, не стесняйтесь обращаться к сообществу разработчиков игр. Удачи в ваших будущих проектах!