Как сделать платформер на Python с Pygame: пошаговое руководство

Как сделать платформер на Python с Pygame: пошаговое руководство

Введение

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

Установка Pygame

Для начала нам необходимо установить библиотеку Pygame. Рекомендуется создать виртуальное окружение, чтобы избежать конфликтов с другими библиотеками.

python -m venv venv
source venv/bin/activate # для Windows: venv\Scripts\activate
pip install pygame

После успешной установки, давайте проверим, что Pygame работает, запустив следующий код:

import pygame
print(f"Pygame version: {pygame.ver}")

Если версия вывелась корректно, значит Pygame установлен и работает.

Создание базового окна игры

Инициализация Pygame

Первым шагом будет инициализация Pygame и создание игрового окна.

import pygame

pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption('Платформер')

Создание игрового цикла

Теперь добавим основной игровой цикл, который будет обрабатывать события и обновлять экран.

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    pygame.display.flip()

Добавление игрока

Создание класса игрока

Для управления игроком создадим класс Player с методами для отрисовки и перемещения.

class Player:
    def __init__(self, x: int, y: int):
        self.x = x
        self.y = y
        self.width = 50
        self.height = 60
        self.velocity = 5

    def move(self, keys):
        if keys[pygame.K_LEFT]:
            self.x -= self.velocity
        if keys[pygame.K_RIGHT]:
            self.x += self.velocity

    def draw(self, surface):
        pygame.draw.rect(surface, (0, 0, 255), (self.x, self.y, self.width, self.height))

Реализация механики прыжков

Добавление гравитации и прыжков

Для прыжков и гравитации добавим соответствующие методы в класс Player.

class Player:
    # остальной код...

    def __init__(self, x: int, y: int):
        self.x = x
        self.y = y
        self.width = 50
        self.height = 60
        self.velocity = 5
        self.is_jumping = False
        self.jump_count = 10

    def jump(self):
        self.is_jumping = True
        self.jump_count = 10

    def apply_gravity(self):
        if self.is_jumping:
            if self.jump_count >= -10:
                neg = 1
                if self.jump_count < 0:
                    neg = -1
                self.y -= (self.jump_count ** 2) * 0.5 * neg
                self.jump_count -= 1
            else:
                self.is_jumping = False

Создание платформ

Создание класса платформы

Для начала создадим класс Platform, который будет ответственен за отрисовку платформ.

class Platform:
    def __init__(self, x: int, y: int, width: int, height: int):
        self.x = x
        self.y = y
        self.width = width
        self.height = height

    def draw(self, surface):
        pygame.draw.rect(surface, (0, 255, 0), (self.x, self.y, self.width, self.height))

Обработка столкновений

Метод проверки столкновений

Добавим функцию для проверки столкновений между игроком и платформами.

def check_collision(player: Player, platform: Platform) -> bool:
    if (player.x + player.width > platform.x and
        player.x < platform.x + platform.width and
        player.y + player.height > platform.y and
        player.y < platform.y + platform.height):
        return True
    return False

Добавление врагов

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

Для врагов создадим отдельный класс Enemy с методами для движения и отрисовки.

class Enemy:
    def __init__(self, x: int, y: int):
        self.x = x
        self.y = y
        self.width = 50
        self.height = 50

    def move(self):
        self.x -= 1  # Враг движется влево

    def draw(self, surface):
        pygame.draw.rect(surface, (255, 0, 0), (self.x, self.y, self.width, self.height))

Завершение проекта

Теперь, когда у нас есть базовые элементы нашей игры, включим их в основной игровой цикл и добавим окончательные детали.

# Основной игровой цикл
running = True
player = Player(100, 500)
platforms = [Platform(100, 400, 150, 10), Platform(300, 300, 150, 10)]
enemies = [Enemy(600, 500)]

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()
    player.move(keys)
    if keys[pygame.K_SPACE]:
        player.jump()

    player.apply_gravity()

    # Отрисовка объектов
    screen.fill((0, 0, 0))
    player.draw(screen)
    for platform in platforms:
        platform.draw(screen)
    for enemy in enemies:
        enemy.move()
        enemy.draw(screen)

    pygame.display.flip()

Заключение

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


Добавить комментарий