Практикум 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 drag | 2048/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. Если окно не открывается — не переходите к следующему шагу.
Рекомендуемый порядок
- 2048 — проще всего: ходы дискретные, постоянный
Clockне нужен. Хороший старт для свайпов иGridLayout. - Pong — непрерывная физика,
schedule_interval, столкновения. Ближе всего к Pygame Pong, но с тачем вместо WASD. - Snake — комбинирует тик, рост змейки и два способа ввода (свайп + D-pad), как в реальных мобильных играх.
После всех трёх:
- попробуйте Buildozer для APK;
- сравните с Flutter, если нужен продуктовый мобильный UI;
- вернитесь к Мобильным играм за контекстом жестов и монетизации.
Как проходить каждый практикум
- Создайте папку проекта и
requirements.txtсkivy>=2.3.0. - Идите по этапам по порядку — после каждого запускайте
python main.py. - Отмечайте пункты Самопроверка в статье.
- В конце сверьте проект с суммой листингов всех этапов статьи или пройдите этапы 0–N подряд ещё раз.
Оценка времени на весь раздел — 6–10 часов при прохождении всех трёх игр подряд; одну игру можно уложить в один вечер (2–4 ч).
Kivy — 2048
Пошаговый практикум 2048 на Kivy — логика Game2048, плитки, свайпы, счёт и JsonStore; 8 этапов до играбельной версии.
Kivy — Pong
Пошаговый практикум Pong на Kivy — ракетки, мяч, Clock, столкновения, тач-управление и ИИ; 9 этапов до победы до 7 очков.
Kivy — Snake
Пошаговый практикум Snake на Kivy — сетка, тик змейки, еда, ускорение, свайп и D-pad; 8 этапов до играбельной змейки.
Практикум Kivy — о разделе
Три пошаговые мобильные игры на Python и Kivy — 2048, Pong и Snake; свайпы, Clock, canvas и разделение логики и UI.
В подборках
Языки и первая программа — Python — о разделе, Разработка игр на Python, Kivy — обзор.
Мобильная разработка — Мобильные приложения — о разделе, Мобильные игры, Сборка мобильных приложений.
Разработка видеоигр — Практикум разработки игр, Python — Ping Pong (Pygame), SmallPong (Pharo).