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 рекомендуется изучить дополнительные ресурсы.