Найти в Дзене
ZDG

Пишем Питона на Питоне!

В этом цикле статей мы начнём и закончим разработку игры "Питон" на языке Python. Ведь питон на питоне – это забавно. Но в чём смысл, скажете вы, этих "змеек" уже писано-переписано.

Здесь мы заострим внимание не просто на реализации алгоритма змейки (который можно описать в одном абзаце), а на создании полноценного продукта, где 90% всей работы занимает не алгоритм, а сопутствующие задачи – дизайн, пользовательский интерфейс, дополнительные сервисы. И как нетрудно догадаться, эти задачи легко переносятся на любую другую игру.

Мы также применим более продвинутые концепции программирования, такие как ООП и шаблоны проектирования. Для столь маленького проекта это наверное перебор, но не помешает для обучения.

Мы также поработаем со звуковыми эффектами и может быть даже напишем музыку.

После написания первой рабочей версии мы сделаем вторую, с улучшенной графикой и анимацией.

Читайте также: Игра Robots на Python и Javascript

Начнём, как это всегда следует делать, с дизайн-документа, но здесь он будет очень кратким. Это просто напоминание о том, с чего нужно начинать.

1. Общее описание

Игрок управляет питоном, который ползает по прямоугольному полю произвольного размера W*H.

2. Графическое представление

Поле состоит из квадратов, в которых могут находиться:

  • Стена. Присутствует на поле с самого начала и не изменяется.
  • Яблоко. Появляется в свободных клетках поля по случайным координатам на определённое время.
  • Сегмент тела питона. При движении питон занимает клетки поля своим телом.
  • Голова питона. Осуществляет движение питона в выбранном направлении.
  • Хвостом питона считаются все сегменты его тела после головы.

3. Описание геймплея

Первоначально питон состоит из двух сегментов: голова и 1-сегментный хвост. Голова после старта игры находится в непрерывном движении. Вслед за головой движется хвост. Задача игрока – изменять направление движения головы (влево, вправо, вверх, вниз) так, чтобы:

  • не сталкиваться со стенами
  • не сталкиваться с хвостом
  • сталкиваться с яблоками

При столкновении головы со стеной или хвостом игрок теряет одну жизнь, и уровень начинается заново. Когда потрачены все жизни, игра заканчивается и игрок теряет весь прогресс.

При столкновении головы с яблоком яблоко "съедается" (исчезает), а хвост удлиняется на некоторое количество сегментов. Движение хвоста приостанавливается, а голова продолжает движение, за счёт чего между головой и хвостом вставляются новые сегменты.

После того, как яблоко съедено, в случайном месте поля в свободном квадрате немедленно появляется новое яблоко.

Если яблоко не съедено в течение некоторого времени, оно исчезает и появляется в другом месте.

Целью игрока является съесть как можно больше яблок, не столкнувшись с препятствиями.

Когда питон достигает нужной длины, происходит переход на следующий уровень (новое игровое поле).

4. Игровые экраны

В целях сокращения объёма текста не буду описывать словами, просто приведу макеты (это макеты, а не окончательный дизайн):

Главное меню
Главное меню
Основной игровой экран
Основной игровой экран
Режим паузы/меню
Режим паузы/меню
Гейм овер
Гейм овер
Экран победы
Экран победы
Финальный экран
Финальный экран
Таблица рекордов
Таблица рекордов
Настройки
Настройки

Как видим, тут есть над чем поработать и даже глубоко закопаться.

Техническую реализацию начнём обсуждать в следующих частях. Части будут выходить по возможности каждый день, так что не пропустите.

Читайте дальше: