🎮 Коллекция классических аркадных игр: Snake, Tetris, Arkanoid и Pac-Man на Python с Pygame
Project description
🎮 Game Collection
Коллекция классических аркадных игр на Python с Pygame
✨ Особенности
| 🐍 Snake | 🧩 Tetris | 🎯 Arkanoid | 👻 Pac-Man |
|---|---|---|---|
| Классическая змейка с растущей механикой | Блочная головоломка с очисткой линий | Breakout-стиль с физикой мяча | Навигация по лабиринту с точками и призраками |
| Бомбы и золотые яблоки | Поворот фигур и комбо | Разрушение блоков | Избегание призраков |
| Анимации взрывов | Система очков | Ракеты и спецэффекты | Режимы призраков |
🚀 Установка
📦 Из исходного кода
# Клонируйте репозиторий
git clone https://github.com/hleserg/game.git
cd game
# Установите в режиме разработки
pip install -e .
# Или с зависимостями для разработки
pip install -e ".[dev]"
🎯 Из PyPI
# Стандартная установка
pip install game-collection
# Если проблемы с правами на Windows:
pip install game-collection --no-deps --user
🪟 Windows
Если возникают проблемы с правами доступа pygame на Windows:
# Автоматический установщик
install_game.bat
# Или ручная установка
pip install game-collection --no-deps --user
🎮 Использование
💻 Командная строка
После установки запустите коллекцию игр:
# Через точку входа (если PATH настроен)
game-collection
# Через Python модуль (всегда работает)
python -m game
# Через локальный файл (для разработки)
python src/game/main.py
🔧 Устранение неполадок
Если команда game-collection не найдена:
- Windows: Запустите
setup_path.batот имени администратора - Альтернатива: Всегда используйте
python -m game - Подробности: См. Руководство по установке Windows
🛠️ Разработка
# Запуск игры
python -m game
# Запуск тестов
python -m pytest tests/
# Тесты с покрытием
python -m pytest tests/ --cov=src/game
# Проверка качества кода
python -m ruff check src/
python -m mypy src/
# Сборка исполняемого файла
python build_exe.py
# Установка pre-commit хуков
pre-commit install
# Запуск pre-commit на всех файлах
pre-commit run --all-files
🐛 Отладочные функции
Игра включает отладочный оверлей, который можно переключать во время игры:
- F1: Переключить отладочный оверлей вкл/выкл
- F2: Сбросить историю FPS
- F3: Переключить полноэкранный режим
Отладочный оверлей показывает:
- FPS в реальном времени и историю FPS
- Текущую игру и состояние
- Позицию мыши
- Нажатые клавиши
- Статистику производительности
🎮 Управление
| Клавиша | Действие |
|---|---|
| Стрелки | Движение во всех играх |
| Пробел | Пауза/Запуск |
| ESC | Выход/Назад |
| F1 | Отладочный оверлей |
| F2 | Сброс истории FPS |
| F3 | Полноэкранный режим |
⚙️ Конфигурация
Игра использует систему конфигурации, которая сохраняет настройки в соответствующих директориях:
- Windows:
%LOCALAPPDATA%/hleserg/GameCollection/ - macOS:
~/Library/Application Support/GameCollection/ - Linux:
~/.local/share/GameCollection/
📁 Файлы конфигурации
config.json: Настройки игр, управление, аудио и уровни сложностиscores.json: Рекорды для всех игр
🔧 Опции конфигурации
Конфигурация включает:
- Дисплей: Разрешение, полноэкранный режим, FPS
- Управление: Привязки клавиш для каждой игры
- Настройки игр: Скорость, размер сетки, жизни и т.д.
- Аудио: Уровни громкости и включение/выключение
- Сложность: Легкий, Обычный, Сложный пресеты
🏗️ Разработка
📁 Структура проекта
src/
├── game/
│ ├── __init__.py
│ ├── __main__.py # Точка входа
│ ├── main.py # Основной игровой цикл
│ ├── config.py # Управление конфигурацией
│ ├── config.json # Конфигурация по умолчанию
│ ├── games/ # Реализации игр
│ │ ├── base.py # Базовый класс игры
│ │ ├── logic.py # Чистые функции игровой логики
│ │ ├── snake.py # Игра Змейка
│ │ ├── tetris.py # Игра Тетрис
│ │ ├── arkanoid.py # Игра Арканоид
│ │ └── pacman.py # Игра Pac-Man
│ └── ui/ # Пользовательский интерфейс
│ ├── menu.py # Главное меню
│ └── scores.py # Управление рекордами
tests/ # Модульные тесты
docs/ # Документация
🧪 Тестирование
Проект включает комплексные модульные тесты для всей игровой логики:
# Запуск всех тестов
python -m pytest tests/
# Запуск конкретного файла тестов
python -m pytest tests/test_tetris_logic.py
# Запуск с покрытием
python -m pytest tests/ --cov=src/game/games --cov-report=html
🔍 Качество кода
Проект использует современные инструменты Python:
- Ruff: Быстрый линтинг и форматирование
- MyPy: Статическая проверка типов
- Pytest: Фреймворк тестирования
- Appdirs: Платформо-специфичные директории данных
📦 Сборка исполняемых файлов
# Сборка с PyInstaller
python build_exe.py
# Или вручную
pyinstaller --onefile --windowed --name GameCollection src/game/__main__.py
📋 Требования
- Python 3.10+
- Pygame 2.5.0+
- Appdirs 1.4.4+ (для управления директориями данных)
🛠️ Требования для разработки
- Ruff 0.1.0+ (линтинг и форматирование)
- MyPy 1.8.0+ (проверка типов)
- Pytest 7.4.0+ (тестирование)
- PyInstaller 5.13.0+ (сборка исполняемых файлов)
🤝 Вклад в проект
- Форкните репозиторий
- Создайте ветку для функции
- Внесите изменения
- Запустите проверки качества:
python -m ruff check src/ && python -m mypy src/ - Отправьте pull request
📄 Лицензия
MIT License - см. файл LICENSE для подробностей.
📝 Журнал изменений
См. CHANGELOG.md для подробного списка изменений.
Сделано с ❤️ на Python и Pygame
⭐ Поставьте звезду, если проект вам понравился!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file game_collection-1.2.0.tar.gz.
File metadata
- Download URL: game_collection-1.2.0.tar.gz
- Upload date:
- Size: 49.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ca0174ae7ae6ca2c041903cff998f6faef1635f45b6002a31b1524ff4803d3d
|
|
| MD5 |
34b7a8329bd5df2e00594b8834e31ec9
|
|
| BLAKE2b-256 |
99b198b02fc2613b41d5518d50eac65aad8757fae1014438630a98cd71e80357
|
File details
Details for the file game_collection-1.2.0-py3-none-any.whl.
File metadata
- Download URL: game_collection-1.2.0-py3-none-any.whl
- Upload date:
- Size: 49.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b7100aa99afb72fc1153fc1f59fb8316fe39f50c92aef4dc8b190f840248a21
|
|
| MD5 |
82c8299855f8be8856fb4460162228c9
|
|
| BLAKE2b-256 |
3afa3704ca53f3bef6415371475ec393ed8ffeae27eca74df5bb6a5b41cb4e9a
|