Создаем 2D платформер на Python с Pygame

Python подходит для создания 2D игр, и Pygame — популярная библиотека для этой цели.

Выбор библиотеки и установка

Для разработки 2D игр на Python существует несколько библиотек, таких как Pyglet, Tkinter. Мы воспользуемся Pygame. Установить её можно командой: pip install pygame.

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

Импортируем библиотеку Pygame, инициализируем главный объект, указываем размеры и название окна, создаём основной цикл.

import pygame

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

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

    pygame.display.flip()

pygame.quit()

Важно добавить условие выхода из цикла, например, обработку события закрытия окна.

Добавление игровых объектов

Добавим игровые объекты (например, игрока и фон). Для отображения используем функцию отрисовки внутри основного цикла, указывая объект и его координаты. Не забываем обновлять экран.

import pygame

# ... (код создания окна из предыдущего раздела) ...

player_x = 400
player_y = 300

while running:
    # ... (обработка событий) ...

    screen.fill((0, 0, 0)) # Заливаем экран черным цветом
    pygame.draw.rect(screen, (255, 0, 0), (player_x, player_y, 20, 20)) # Рисуем игрока красным квадратом
    pygame.display.flip()

pygame.quit()

Управление игроком и анимация

Добавим управление игроком с помощью клавиш. Изменяем координаты игрока (x и y) при нажатии стрелок. Используем pygame.time.Clock для установки частоты кадров (FPS).

import pygame

# ... (код создания окна и отрисовки из предыдущих разделов) ...

clock = pygame.time.Clock()
FPS = 30

while running:
    # ... (обработка событий) ...

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        player_x -= 5
    if keys[pygame.K_RIGHT]:
        player_x += 5
    if keys[pygame.K_UP]:
        player_y -= 5
    if keys[pygame.K_DOWN]:
        player_y += 5

    # ... (отрисовка) ...
    clock.tick(FPS)

pygame.quit()

Использование классов

Для лучшей организации кода используем классы Player и Platform.

import pygame

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((20, 20))
        self.image.fill((255, 0, 0))
        self.rect = self.image.get_rect()

class Platform(pygame.sprite.Sprite):
    def __init__(self, x, y, width, height):
        super().__init__()
        self.image = pygame.Surface((width, height))
        self.image.fill((0, 255, 0))
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y

# ... (код создания окна, игрового цикла и управления игроком с использованием классов) ...

Получили базовую структуру 2D платформера. Для более глубокого понимания Pygame рекомендуется изучить дополнительные ресурсы.

Что будем искать? Например,программа