Перейти к основному содержимому

Практикум Kivy — о разделе

Разработчику Начальный уровень

О разделе

Здесь — три сквозных учебных проекта на Python и Kivy: классические мини-игры с сенсорным управлением. Каждый проект можно отладить на десктопе (python main.py), а затем упаковать в APK (сборка APK).

Kivy в этих практикумах — не "ещё один Pygame", а фреймворк, где UI и тач — первоклассные граждане. Вы потренируете:

  • отрисовку на canvas (плитки, мяч, сегменты змейки);
  • жесты — свайп и перетаскивание;
  • игровой тик через Clock.schedule_interval;
  • разделение логики и интерфейса.

Теория фреймворка — Kivy — мобильные приложения и игры на Python. Мобильный контекст (тач, экраны, публикация) — раздел "Мобильные приложения".

Для кого материал

Нужны Python 3.10+, базовые классы и списки, установленный kivy>=2.3.0. Желательно прочитать обзор Kivy (разделы про Clock, canvas, on_touch_*).
Аналоги на Pygame (десктоп, клавиатура) — Практикум разработки игр, мини-игры в Lab.


Три игры — три навыка

ПрактикумЧему учитУправлениеКлючевые API
Kivy — 2048Дискретные ходы, модель без UI, JsonStoreСвайп / стрелкиGridLayout, свайп, JsonStore
Kivy — PongНепрерывная физика, ИИ, счётПеретаскиваниеClock, NumericProperty, AABB
Kivy — SnakeТик по сетке, рост, ускорениеD-pad + свайпschedule_interval, D-pad, set

Локальные проекты-образцы не требуются — полный код собирается из листингов этапов в каждой статье; финальная версия 2048 — на этапе 8, Pong — этап 9, Snake — этап 8.


Словарь раздела

ТерминЗначение
App.build()Корневая точка Kivy — возвращает дерево виджетов
canvas / canvas.beforeСлой рисования OpenGL внутри Widget
Clock.schedule_intervalИгровой тик с фиксированным dt (Pong, Snake)
NumericPropertyРеактивное поле — UI обновляется через bind
dp / spПлотность-независимые пиксели — обзор Kivy
JsonStoreЛёгкое сохранение на диск (рекорд в 2048)
Свайп vs drag2048/Snake — короткий жест; Pong — удержание и перетаскивание

Что общего у всех трёх проектов

Несмотря на разную механику, каркас одинаковый:

  • App.build() возвращает корневой layout (BoxLayout / FloatLayout).
  • Состояние игры живёт в отдельном классе или модуле, UI только отображает и передаёт ввод.
  • Ввод — touch-события; на ПК те же обработчики работают с мышью.
  • Запуск после каждого этапа — привычка из отладки и разработки: маленькие шаги, частая проверка.

Общая подготовка

Создайте отдельную папку под каждую игру (или один репозиторий с тремя подпапками).

mkdir my-kivy-game && cd my-kivy-game
python -m venv .venv
# Windows: .venv\Scripts\activate
pip install "kivy>=2.3.0"

Файл requirements.txt:

kivy>=2.3.0

Подробнее про venv — Зависимости Python.

Создайте main.py и запускайте после каждого этапа: python main.py. Если окно не открывается — не переходите к следующему шагу.


Рекомендуемый порядок

  1. 2048 — проще всего: ходы дискретные, постоянный Clock не нужен. Хороший старт для свайпов и GridLayout.
  2. Pong — непрерывная физика, schedule_interval, столкновения. Ближе всего к Pygame Pong, но с тачем вместо WASD.
  3. Snake — комбинирует тик, рост змейки и два способа ввода (свайп + D-pad), как в реальных мобильных играх.

После всех трёх:

  • попробуйте Buildozer для APK;
  • сравните с Flutter, если нужен продуктовый мобильный UI;
  • вернитесь к Мобильным играм за контекстом жестов и монетизации.

Как проходить каждый практикум

  1. Создайте папку проекта и requirements.txt с kivy>=2.3.0.
  2. Идите по этапам по порядку — после каждого запускайте python main.py.
  3. Отмечайте пункты Самопроверка в статье.
  4. В конце сверьте проект с суммой листингов всех этапов статьи или пройдите этапы 0–N подряд ещё раз.

Оценка времени на весь раздел — 6–10 часов при прохождении всех трёх игр подряд; одну игру можно уложить в один вечер (2–4 ч).


В подборках

Языки и первая программаPython — о разделе, Разработка игр на Python, Kivy — обзор.

Мобильная разработкаМобильные приложения — о разделе, Мобильные игры, Сборка мобильных приложений.

Разработка видеоигрПрактикум разработки игр, Python — Ping Pong (Pygame), SmallPong (Pharo).