1
0
Fork 0
mirror of https://github.com/EDeev/pixel_gamble.git synced 2026-10-07 23:49:29 +03:00
pixel_gamble/README.md
Egor Deev 4ecb9257c8 Pixel Gamble 2.0: законченная игра на ресурсах Ninja Adventure
- 10 волн, 5 видов врагов со своим поведением и босс в три фазы
- меч, копьё и посох, 11 улучшений между волнами, опыт и уровни
- меню, пауза, настройки, итоги партии и рекорд, русский и английский
- мир 480×270 с масштабированием, интерфейс в 960×540, скорости от dt
- асинхронный цикл: та же игра в браузере через pygbag
- тесты без окна, автоигрок, CI, релизы exe/Linux, GitHub Pages
- README на двух языках; исходная версия — релиз v1.0.0
2026-10-07 12:29:41 +00:00

8.5 KiB
Raw Blame History

Pixel Gamble

Русский · English

CI Release

Пиксельный экшен на выживание на Python и pygame: десять волн врагов, улучшения между волнами и финальный бой с Красным самураем. Партия занимает около 10 минут, рекорд сохраняется.

▶ Играть в браузере · Скачать для Windows и Linux

Статус: начат как учебный проект Яндекс Лицея (2022), в 2026 доработан до законченной игры; версия с защиты — в релизе v1.0.0

Геймплей

Стек: Python 3.10+ · pygame · pygbag (браузерная сборка) · PyInstaller · pytest

Как играть

Действие Клавиши
Движение WASD или стрелки
Удар левая кнопка мыши, пробел или J
Сменить оружие Q, колесо мыши, 1–3
Пауза Esc или P
Полный экран F11

При ударе мышью оружие бьёт в сторону курсора, с клавиатуры — туда, куда смотрит герой.

Что в игре

  • 10 волн. Враги появляются у краёв арены, каждая следующая волна больше и сильнее, 10-я — босс.
  • 5 видов врагов с разным поведением:
    • слайм медленно ползёт к игроку;
    • летучая мышь петляет и пролетает над камнями;
    • ниндзя замахивается и делает выпад;
    • скелет держит дистанцию и метает сюрикены;
    • демон-циклоп предупреждает вспышкой и бросается тараном.
  • Босс — Красный самурай с тремя фазами: рубит мечом вблизи, с 60% здоровья добавляет рывок с веером сюрикенов, с 30% ускоряется, призывает помощников и стреляет кольцом.
  • Три оружия: меч бьёт широким взмахом, копьё — дальше и насквозь, посох стреляет зарядами.
  • 11 улучшений: между волнами нужно выбрать одно из трёх — сердца, урон, скорость, новое оружие, тройной заряд, лечение за победы и другие.
  • Опыт и уровни. Сердечки выпадают из врагов и разбитых камней и лечат.
  • Меню, пауза, настройки (громкость, язык, полный экран), итоги партии и рекорд.
  • Два языка: русский и английский.
Выбор улучшения Босс
Улучшения Босс

Быстрый старт

Проще всего — играть в браузере или скачать готовый файл со страницы релизов: PixelGamble-windows.exe или PixelGamble-linux.tar.gz, Python для них не нужен.

Из исходников:

git clone https://github.com/EDeev/pixel_gamble.git
cd pixel_gamble
pip install -r requirements.txt
python game/main.py

Рекорд и настройки хранятся в %APPDATA%\pixel_gamble (Windows), ~/.local/share/pixel_gamble (Linux), в браузере — в localStorage.

Устройство

game/
├── main.py              # точка входа (рабочий стол и браузер)
├── pixelgamble/
│   ├── app.py           # окно, главный цикл, меню, настройки, итоги
│   ├── game.py          # партия: волны, бой, камера, интерфейс боя
│   ├── player.py        # герой и оружие
│   ├── enemies.py       # пять видов врагов
│   ├── boss.py          # Красный самурай, три фазы
│   ├── waves.py         # состав волн и очередь появления
│   ├── upgrades.py      # улучшения между волнами
│   ├── world.py         # арена из плиток
│   ├── bot.py           # автоигрок для проверок и записи GIF
│   └── …                # ресурсы, эффекты, интерфейс, тексты, сохранения
└── assets/              # графика, звук, музыка и шрифты
tools/import_assets.py   # перенос нужных файлов из набора Ninja Adventure
web/template.tmpl        # шаблон страницы для pygbag

Мир рисуется в разрешении 480×270 и масштабируется в два раза, а интерфейс — поверх, в 960×540, поэтому пиксели остаются чёткими и текст читается. Скорости не зависят от FPS. Игровой цикл асинхронный, поэтому тот же код работает в браузере через pygbag.

Проверки

pip install -r requirements-dev.txt
ruff check .
pytest
python game/main.py --bot --fast --frames 7200   # автоигрок, две минуты игры без окна

Тесты запускаются без окна и звука. Проверяются:

  • автоигрок проходит первые волны;
  • босс проходит все три фазы, победа и смерть ведут на экран итогов;
  • улучшения применяются, а каждая волна выпускает ровно свой состав;
  • сохранение переживает испорченный файл;
  • персонаж не проходит сквозь стены.

CI прогоняет всё это на Python 3.10 и 3.12.

Сборка

  • Релиз: тег v* собирает PixelGamble-windows.exe и PixelGamble-linux.tar.gz через PyInstaller и прикладывает их к релизу.

  • Браузерная версия: каждый пуш в main собирает её через pygbag и выкладывает на GitHub Pages. Локально это делается так:

    pip install pygbag==0.9.3
    python -m pygbag --build --width 960 --height 540 --template web/template.tmpl game
    

Ресурсы

  • Графика, звуки, музыка и шрифт заголовка — Ninja Adventure (pixel-boy, лицензия CC0), текст лицензии — game/assets/LICENSE-ninja-adventure.txt.
  • Шрифт интерфейса — Tiny5 (SIL Open Font License, game/assets/fonts/OFL.txt).
  • Шаблон страницы — на основе стандартного шаблона pygbag.

Лицензия

Учебный проект (Яндекс Лицей, 2021–2022 учебный год), доработанный в 2026 — код доступен для изучения, отдельной лицензии нет.

Автор

Деев Егор Викторович — GitHub · Telegram · egor@deev.space


⭐ Если проект оказался полезным, поставьте звёздочку на GitHub!

Сделано с ❤️ — deev.space