Этот конспект не сохранится

Закроешь вкладку — потеряешь. Зарегистрируйся — и он будет в библиотеке навсегда.

Telegram

Ваш конспект

YouTubeРазработка игры на Python и PyGame / Полный курс для начинающих

🎮 Изучение библиотеки PyGame для создания 2D игр

🎯 Основные концепции библиотеки PyGame

Ключевые тезисы

  • PyGame — библиотека для создания игр на Python, позволяющая отображать графику, обрабатывать события и управлять ресурсами.
  • Библиотека упрощает разработку игр, предоставляя инструменты для работы с графикой, звуком и анимацией.
  • Игры состоят из изображений (спрайтов), которые можно двигать и менять, создавая анимацию.
  • PyGame работает на различных платформах (Windows, Android) и позволяет писать код один раз, запуская игру на разных устройствах.

🛠️ Основы разработки на PyGame

1. Установка необходимого ПО

  • Установите Python с официального сайта python.org.
  • Установите среду разработки (например, PyCharm) или любой удобный редактор кода.
  • Установите библиотеку PyGame через пакетный менеджер PIP:
    pip install pygame
    

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

  • Импортируйте библиотеку:
    import pygame
    
  • Инициализируйте игру и установите размеры окна:
    pygame.init()
    screen = pygame.display.set_mode((600, 300))
    
  • Создайте бесконечный цикл для обновления экрана и обработки событий:
    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
                pygame.quit()
        pygame.display.update()
    

3. Работа с графикой

  • Загрузка изображений:
    bg = pygame.image.load('images/bg.png')
    
  • Отображение изображения на экране:
    screen.blit(bg, (0, 0))
    
  • Создание простых объектов (квадратов, кругов):
    pygame.draw.rect(screen, (255, 0, 0), (50, 50, 100, 100))  # Красный квадрат
    pygame.draw.circle(screen, (0, 0, 255), (250, 150), 30)  # Синий круг
    

4. Работа с текстом

  • Создание шрифта и текстовой поверхности:
    font = pygame.font.Font('fonts/font.ttf', 40)
    text_surface = font.render('IT Programmer', True, (255, 255, 255))
    
  • Отображение текста:
    screen.blit(text_surface, (300, 100))
    

5. Анимация и движение

  • Изменение координат объектов для создания движения:
    player_x = 150
    player_speed = 5
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        player_x -= player_speed
    if keys[pygame.K_RIGHT]:
        player_x += player_speed
    

6. Обработка событий и взаимодействие

  • Отслеживание нажатий клавиш и обработка столкновений:
    player_rect = pygame.Rect(player_x, 250, 50, 170)
    ghost_rect = pygame.Rect(620, 250, 50, 170)
    if player_rect.colliderect(ghost_rect):
        print('Вы проиграли!')
    

7. Таймеры и автоматическое создание объектов

  • Создание таймера для периодического появления врагов:
    ghost_timer = pygame.USEREVENT + 1
    pygame.time.set_timer(ghost_timer, 1000)  # Каждую секунду
    ghost_list = []
    while running:
        for event in pygame.event.get():
            if event.type == ghost_timer:
                ghost_list.append(pygame.Rect(620, 250, 50, 170))
    

8. Звуковые эффекты

  • Подгрузка и воспроизведение звука:
    bg_sound = pygame.mixer.Sound('sounds/bg.mp3')
    bg_sound.play(-1)  # Зациклить звук
    

🧩 Разработка игры: ключевые механики

👾 Автоматическая генерация врагов

  • Враги создаются через таймер и добавляются в список ghost_list_in_game.
  • Каждый враг — это прямоугольник (Rect) с изображением.
  • Координаты врагов постоянно изменяются (движение к игроку).
  • При столкновении врага с игроком игра завершается.

💥 Система проигрыша

  • Введена переменная-флаг gameplay (по умолчанию True).
  • При столкновении с врагом gameplay = False.
  • При gameplay == False отображается экран проигрыша.
  • Экран проигрыша содержит:
    • Текстовую надпись "Вы проиграли!"
    • Кнопку "Играть заново" с обработчиком клика.

🔫 Механика стрельбы

  • При отпускании клавиши B создаётся снаряд (пуля).
  • Снаряды хранятся в списке bullets.
  • Каждый снаряд — Rect с изображением bullet.png.
  • Снаряд движется вправо (x += 4).
  • При столкновении снаряда с врагом оба объекта удаляются.
  • Ограничение боезапаса: переменная bullets_left = 5.

🧹 Оптимизация и управление объектами

  • Удаление вышедших за экран объектов:
    • Враги удаляются при x < -10.
    • Снаряды удаляются при x > 618 (ширина экрана).
  • Очистка при перезапуске:
    • Очистка списков врагов и снарядов.
    • Сброс боезапаса (bullets_left = 5).
    • Возврат игрока в начальную позицию (x = 150).

📱 Сборка проекта в APK (Android)

🔧 Необходимые инструменты

  • Библиотека Buildozer для сборки.
  • Библиотека Cython для конвертации Python-кода.

⚙️ Настройка buildozer.spec

  • Название приложения: title = My App.
  • Пакет: package.name = myapp, package.domain = com.itproger.
  • Поддерживаемые расширения: добавлены ttf (шрифты) и mp3 (аудио).
  • Зависимости: requirements = python3,kivy,python-for-android,pygame.
  • Ориентация: orientation = landscape (горизонтальный режим).
  • Полный экран: fullscreen = 1.
  • Архитектура: поддержка 32-битных (armeabi-v7a) и 64-битных (arm64-v8a) процессоров.

🛠️ Исправление путей к ресурсам

Для корректной работы на Android все пути к изображениям, шрифтам и аудио должны использовать абсолютный путь вида:
/data/data/com.itproger.myapp/files/app/images/icon.png

🚀 Сборка APK

Команда для создания APK-файла:

buildozer android debug deploy run

Готовый APK-файл появляется в папке bin/.


💡 Итоги и рекомендации

🎯 Выводы

  1. ✅ PyGame предоставляет мощные инструменты для создания 2D игр с минимальными усилиями.
  2. ✅ Библиотека подходит как для начинающих, так и для опытных разработчиков.
  3. ✅ Ключевые аспекты: работа с графикой, обработка событий, анимация, звук и таймеры.
  4. ✅ Создана полноценная игра с генерацией врагов, стрельбой и системой проигрыша.
  5. ✅ Реализована оптимизация (удаление невидимых объектов).
  6. ✅ Проект успешно собран в APK для запуска на Android-устройствах.
  7. ✅ PyGame позволяет быстро прототипировать и изучать игровые механики.

💡 Рекомендации

  • Для коммерческих/сложных игр лучше рассматривать C++ или C#.
  • Рекомендуется закреплять знания через разработку собственной игры.
  • Для глубокого изучения Python есть комплексные программы (веб-разработка, GUI, боты).

⚠️ КРИТИЧЕСКИ ВАЖНО:
✅ ПРАВИЛЬНО: Используйте метод convert() или convert_alpha() для оптимизации изображений.
❌ НЕПРАВИЛЬНО: Не забывайте корректно завершать игру через pygame.quit().

🎮 PyGame: создание 2D игр на Python от основ до сборки APK — конспект на EchoNote