Урок посвящен созданию простой игры на Python с использованием библиотеки Pygame. Разработаем фундамент для будущей игры, вдохновлённой классической аркадой Space Invaders.
Планирование игры
В качестве первого проекта воссоздадим Space Invaders (1978). Это хороший выбор для начинающих разработчиков игр на Python, подобный «Hello, world!» в игровой разработке.
Игрок управляет лазерной пушкой, уничтожая ряды инопланетян. Пушка перемещается горизонтально внизу экрана. Цель – уничтожить все волны пришельцев. Новый флот пришельцев появляется после уничтожения предыдущего; скорость движения пришельцев увеличивается с каждой волной. При столкновении пришельцев с пушкой игрок теряет жизнь. За каждого уничтоженного пришельца начисляются очки. В рамках данного урока реализуем базовую логику игры.
Установка Pygame
Установите библиотеку Pygame с помощью pip, менеджера пакетов Python:
pip install pygame
Это установит Pygame версии 2.0.1 или выше.
Создание проекта
Создайте пустой проект в PyCharm (или любой другой IDE). Для хранения игровых ресурсов (изображения, звуки и т.д.) создайте папку assets.
Основной код игры
Создайте файл space_invaders.py. Функция game_init инициализирует игру и создаёт окно:
import pygame
import sys
def game_init():
pygame.init()
screen = pygame.display.set_mode((1200, 800))
pygame.display.set_caption("Космические защитники")
background_color = (0, 0, 0) # Черный цвет
return screen, background_color
Функция game_init инициализирует Pygame, создаёт игровое окно размером 1200×800 пикселей с заголовком «Космические защитники» и устанавливает чёрный цвет фона.
Основной цикл игры обрабатывает события и обновляет экран:
def main():
screen, background_color = game_init()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill(background_color)
pygame.display.flip()
pygame.quit()
sys.exit()
if __name__ == "__main__":
main()
Цикл обрабатывает события (включая закрытие окна), заполняет экран фоновым цветом и обновляет отображение.
Добавление лазерной пушки
Создайте файл gun.py для логики пушки. Для изображения пушки используйте пиксель-арт (рекомендуется использовать прозрачный фон). Сохраните изображение в папку assets/images.
Код файла gun.py:
import pygame
class Gun:
def __init__(self, screen):
self.screen = screen
self.image = pygame.image.load('assets/images/gun.png') # Замените на путь к вашему изображению
self.rect = self.image.get_rect()
self.rect.centerx = self.screen.get_rect().centerx
self.rect.bottom = self.screen.get_rect().bottom
def output(self):
self.screen.blit(self.image, self.rect)
Класс Gun загружает изображение пушки, определяет её положение (по центру внизу экрана) и предоставляет метод output для отрисовки на экране.
Импортируем класс Gun в основной файл и используем его для отрисовки пушки в главном цикле:
import pygame
import sys
from gun import Gun # Импорт класса Gun
# ... (функция game_init остаётся без изменений) ...
def main():
screen, background_color = game_init()
gun = Gun(screen) # Создание объекта пушки
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill(background_color)
gun.output() # Отрисовка пушки
pygame.display.flip()
pygame.quit()
sys.exit()
if __name__ == "__main__":
main()
Теперь при запуске игры отображается чёрное окно с лазерной пушкой внизу.
В этом уроке создан базовый каркас игры, включая инициализацию Pygame, создание игрового окна, обработку событий и отрисовку лазерной пушки. В следующих уроках добавим функционал управления пушкой, движения инопланетян и столкновений.