В этом цикле статей мы начнём и закончим разработку игры "Питон" на языке Python. Ведь питон на питоне – это забавно. Но в чём смысл, скажете вы, этих "змеек" уже писано-переписано.
Здесь мы заострим внимание не просто на реализации алгоритма змейки (который можно описать в одном абзаце), а на создании полноценного продукта, где 90% всей работы занимает не алгоритм, а сопутствующие задачи – дизайн, пользовательский интерфейс, дополнительные сервисы. И как нетрудно догадаться, эти задачи легко переносятся на любую другую игру.
Мы также применим более продвинутые концепции программирования, такие как ООП и шаблоны проектирования. Для столь маленького проекта это наверное перебор, но не помешает для обучения.
Мы также поработаем со звуковыми эффектами и может быть даже напишем музыку.
После написания первой рабочей версии мы сделаем вторую, с улучшенной графикой и анимацией.
Читайте также: Игра Robots на Python и Javascript
Начнём, как это всегда следует делать, с дизайн-документа, но здесь он будет очень кратким. Это просто напоминание о том, с чего нужно начинать.
1. Общее описание
Игрок управляет питоном, который ползает по прямоугольному полю произвольного размера W*H.
2. Графическое представление
Поле состоит из квадратов, в которых могут находиться:
- Стена. Присутствует на поле с самого начала и не изменяется.
- Яблоко. Появляется в свободных клетках поля по случайным координатам на определённое время.
- Сегмент тела питона. При движении питон занимает клетки поля своим телом.
- Голова питона. Осуществляет движение питона в выбранном направлении.
- Хвостом питона считаются все сегменты его тела после головы.
3. Описание геймплея
Первоначально питон состоит из двух сегментов: голова и 1-сегментный хвост. Голова после старта игры находится в непрерывном движении. Вслед за головой движется хвост. Задача игрока – изменять направление движения головы (влево, вправо, вверх, вниз) так, чтобы:
- не сталкиваться со стенами
- не сталкиваться с хвостом
- сталкиваться с яблоками
При столкновении головы со стеной или хвостом игрок теряет одну жизнь, и уровень начинается заново. Когда потрачены все жизни, игра заканчивается и игрок теряет весь прогресс.
При столкновении головы с яблоком яблоко "съедается" (исчезает), а хвост удлиняется на некоторое количество сегментов. Движение хвоста приостанавливается, а голова продолжает движение, за счёт чего между головой и хвостом вставляются новые сегменты.
После того, как яблоко съедено, в случайном месте поля в свободном квадрате немедленно появляется новое яблоко.
Если яблоко не съедено в течение некоторого времени, оно исчезает и появляется в другом месте.
Целью игрока является съесть как можно больше яблок, не столкнувшись с препятствиями.
Когда питон достигает нужной длины, происходит переход на следующий уровень (новое игровое поле).
4. Игровые экраны
В целях сокращения объёма текста не буду описывать словами, просто приведу макеты (это макеты, а не окончательный дизайн):
Как видим, тут есть над чем поработать и даже глубоко закопаться.
Техническую реализацию начнём обсуждать в следующих частях. Части будут выходить по возможности каждый день, так что не пропустите.
Читайте дальше: