Skip to content

NekoSilverFox/EasyQQ

Repository files navigation

EasyQQ

Войны самолетов

Have funny!

CodeQL Pylint CI

License project Python Version pygame

简体中文

Наша команда

  • Мэн Цзянин, группа 3530904/90102 (СПбПУ)
  • Ли Ицзя, группа 3530904/90102 (СПбПУ)
  • Miracle-Milk (Keimyung University)

Введение

Игроки могут управлять собственными самолетами и уничтожать вражеские самолеты!

Инструменты

  • Git - распределенный контроль версий
  • GitHub - хранилище кода
  • PyCharm - Разработка и тестирование программного обеспечения
  • CI/CD - непрерывная интеграция
  • Pylink - Автоматизированное тестирование кода, обеспечивающее последовательный стиль кода и соблюдение стиля PEP 8
  • Drawio - составление блок-схем

Игровой фон

  • Когда игра начинается, фоновое изображение непрерывно перемещается вниз
  • Визуально создать иллюзию, что самолет героя постоянно летит вверх
    • Фон игры постоянно меняется
    • Положение главного героя игры остается прежним

Процесс развития

  1. Понимание и краткое описание проекта

    • Нарисовать несколько неподвижных изображений в окне игры
    • Перемещайте изображения, чтобы анимировать их в зависимости от взаимодействия с пользователем или других обстоятельств
    • Определить, были ли уничтожены вражеские самолеты или нет, на основе перекрытия изображений и т.д.
  2. Создать основу игры

    • Определите обязанности основной программы
    • Реализуйте основные классы программы
    • Подготовьте набор игровых спрайтов
  3. Создание графического окна с помощью pygame

    • Инициализация и выход из игры

    • Понимание системы координат в игре

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

    • Простой игровой цикл

      Инициализация игры Игровой цикл
      Установите игровое окно Установите частоту обновления
      Нарисовать начальные позиции изображений Определить взаимодействие с пользователем
      Установите игровые часы Обновите все позиции изображения
      Обновление экрана
  4. Простая анимационная реализация героя

    • Запишите начальное положение героя
    • Перемещайте y - 1 - вверх каждый раз в игровом цикле
    • y <= 0 перемещает героя в нижнюю часть экрана
    • Требования.
      • Когда игра начинается, герой появляется в горизонтальной середине экрана, в 120 пикселях от нижней части экрана
      • Герой выпускает три пули подряд каждые 0,5 секунды
      • По умолчанию герой не двигается, и им нужно управлять по горизонтали с помощью клавиш со стрелками влево/вправо Прослушивание событий в игровом цикле
    • Улавливать действия пользователя и реагировать на них соответствующим образом
  5. Эльфы и эльфийские группы

    • Эльфы должны обладать двумя важными свойствами
      • изображение изображение, которое будет отображаться
      • rect положение изображения, которое будет отображаться на экране
    • группа спрайтов может содержать несколько объектов спрайтов Использование игровых спрайтов и групп спрайтов для создания вражеских машин
    • Создание вражеских самолетов с использованием производных игровых спрайтов и групп спрайтов и анимация вражеских самолетов
    • Импортирование модуля plane_sprites
    • Создание объектов спрайтов и объектов групп спрайтов при инициализации игры
    • В игровом цикле пусть группа спрайтов вызывает методы update() и draw(screen) соответственно.
    • Волшебник
      • Инкапсулирует изображение, положение прямоугольника и скорость
      • Предоставьте метод update() для обновления прямоугольника позиции в соответствии с требованиями игры
    • Группа мастеров
      • Содержит несколько объектов спрайта
      • метод обновления для всех спрайтов в группе спрайтов, чтобы вызвать метод обновления для обновления их позиций
      • метод draw(screen) для рисования всех спрайтов в группе спрайтов на экране
    • Требования.
      • Когда игра начинается, вражеский самолет будет появляться каждые 1 секунду
      • Каждый вражеский самолет летит к нижней части экрана с разной скоростью
      • Каждый вражеский самолет появляется в разном горизонтальном положении
      • Когда вражеский самолет покидает нижнюю часть экрана, он не возвращается на экран

Файловые обязанности

  • plane_main
    1. инкапсулировать основной класс игры
    2. создать игровой объект
    3. начать игру
  • plane_sprites
    • Инкапсулирует все подклассы спрайтов, которые используются в игре
    • Предоставить сопутствующие инструменты для игры

Вклад

Если вы обнаружите какие-либо проблемы в процессе использования, вы можете отправить issue или внести свои собственные изменения в fork и отправить pull request.

Если вы подаете запрос на перенос, пожалуйста, убедитесь, что стиль вашего кода соответствует существующему коду проекта (в соответствии с PEP 8), что переменные четко названы, и что они правильно прокомментированы.