Pong Clone — это современная версия классической аркадной игры Pong (Atari, 1972) на Python с pygame-ce.
# Клонируйте репозиторий
git clone https://github.com/QuadDarv1ne/PongClone.git
cd PongClone
# Установите зависимости
pip install pygame-ce>=2.4.0Способ 1: Через скрипт запуска (рекомендуется)
# Windows
run_game.bat
# Linux/macOS
./run_game.shСпособ 2: Через Python
# Из корня проекта
python -c "from PyPong.pong import PongGame; PongGame().run()"
# Или напрямую
python PyPong/pong.py
# Или как модуль
python -m PyPong.mainСпособ 3: После установки через pip
pip install .
pypong # Запуск из любой директории# Запуск всех тестов
cd PyPong
python tests/test_all_features.py
# Запуск тестов с pytest
python -m pytest PyPong/tests/ -v# Запуск FPS бенчмарка
cd PyPong
python tests/test_fps_benchmark.py
# Или через pytest
python -m pytest PyPong/tests/test_fps_benchmark.py -vБенчмарк тестирует:
- Базовый FPS (без эффектов)
- Производительность с настройками Low/Medium/High
- Стресс-тест с множеством мячей и частиц
- Производительность рендеринга
- Стабильность кадров (frame pacing)
| Клавиша | Действие |
|---|---|
W |
Вверх |
S |
Вниз |
| Клавиша | Действие |
|---|---|
↑ |
Вверх |
↓ |
Вниз |
| Клавиша | Действие |
|---|---|
Enter |
Старт / Подтвердить |
Escape |
Пауза / Назад |
S |
Статистика (в меню) |
O |
Настройки (в меню) |
1/2/3 |
Выбор сложности |
- Поддерживается через
PyPong.gamepad - Автоматическое определение при подключении
PongClone/
├── PyPong/
│ ├── core/ # Ядро игры
│ │ ├── config.py # Конфигурация и константы
│ │ ├── entities.py # Игровые объекты (Paddle, Ball, PowerUp)
│ │ ├── game_state.py # Управление состояниями
│ │ ├── constants.py # Enum константы
│ │ ├── logger.py # Система логирования
│ │ ├── event_bus.py # Шина событий для decoupled коммуникации
│ │ ├── entity_pools.py # Object pooling для производительности
│ │ ├── object_pool.py # Базовая реализация object pool
│ │ └── profiler.py # Профилирование производительности
│ │
│ ├── systems/ # Игровые системы
│ │ ├── audio.py # Аудио менеджер
│ │ ├── stats.py # Статистика игр
│ │ ├── settings.py # Настройки игры
│ │ ├── achievements.py # Достижения (21 шт)
│ │ ├── arenas.py # Арены с препятствиями (5 типов)
│ │ ├── enhanced_ai.py # AI с предсказанием траектории
│ │ ├── enhanced_powerups.py # Power-up'ы (10 типов)
│ │ └── replay_system.py # Запись и воспроизведение
│ │
│ ├── ui/ # Пользовательский интерфейс
│ │ ├── ui.py # Базовые UI элементы
│ │ ├── enhanced_ui.py # Продвинутые компоненты
│ │ ├── effects.py # Визуальные эффекты
│ │ ├── themes.py # Темы оформления
│ │ ├── sound_themes.py # Звуковые темы (4 шт)
│ │ ├── localization.py # Локализация (7 языков)
│ │ ├── customization.py # Кастомизация (скины, темы)
│ │ ├── tutorial.py # Интерактивное обучение
│ │ └── accessibility.py # Accessibility для глухих (VisualIndicator)
│ │
│ ├── content/ # Игровой контент
│ │ ├── campaign.py # Кампания (10 уровней)
│ │ ├── challenges.py # Ежедневные/еженедельные челленджи
│ │ ├── minigames.py # Мини-игры (5 вариаций)
│ │ ├── modifiers.py # Модификаторы физики (10 типов)
│ │ └── tournament.py # Турнирный режим
│ │
│ ├── archive/ # Старые версии игры
│ ├── data/ # Сохранения (генерируется)
│ ├── locales/ # Локализация (en.json, ru.json)
│ ├── assets/ # Ресурсы (спрайты, звуки)
│ ├── tests/ # Тесты
│ │
│ ├── pong.py # Основная версия игры ⭐
│ ├── main.py # Android entry point
│ └── requirements.txt # Зависимости
│
├── buildozer.spec # Android сборка
├── BUILD_ANDROID.md # Инструкция по сборке APK
├── BUILD_DESKTOP.md # Инструкция для Desktop
└── README.md # Этот файл
| Версия | Файл | Строк | Функции |
|---|---|---|---|
| v1.0 | archive/pong_original.py |
309 | 2 игрока, базовая физика |
| v1.5 | archive/pong_enhanced.py |
299 | AI, power-ups, меню |
| v2.0 | archive/pong_v2.py |
329 | Сложность, очки, цвета |
| v3.0 | archive/pong_v3.py |
485 | Модульная архитектура |
| v4.0 | pong.py ⭐ |
~600 | Полная версия со всеми функциями |
| ------- | ---------- | ||
| Одиночная | Игра против AI с выбором сложности | ||
| 2 игрока | Локальный мультиплеер | ||
| Кампания | 10 уникальных уровней с боссами | ||
| Челленджи | Ежедневные и еженедельные задания | ||
| Мини-игры | 5 вариаций Pong | ||
| Турнир | Соревнование на выбывание |
- ✅ Type hints — полная типизация кода
- ✅ Логирование — централизованная система
- ✅ Обработка ошибок — graceful error handling
- ✅ Enum константы — type-safe константы
- ✅ Модульная архитектура
- ✅ Event Bus — decoupled коммуникация между системами
- ✅ Object Pooling — оптимизация allocations (Ball, PowerUp, Particle)
- ✅ Dirty Rect Rendering — рендеринг только измененных областей
- ✅ Профилирование — встроенный performance profiler
- ✅ Кампания — 10 уровней с уникальными механиками
- ✅ Челленджи — ежедневные/еженедельные задания
- ✅ Модификаторы — гравитация, ветер, замедление и др.
- ✅ Мини-игры — Target Practice, Survival, Time Attack и др.
- ✅ Достижения — 21 ачивка с наградами
- ✅ Power-up'ы — 10 типов (speed, shield, multi-ball...)
- ✅ Арены — 5 типов с препятствиями
- ✅ Replay — запись и воспроизведение матчей
- ✅ AI — предсказание траектории мяча
- ✅ Комбо — бонусы за серию успешных ударов
- ✅ Анимации — плавные переходы UI
- ✅ Particle effects — частицы при ударах и голах
- ✅ Звуковые темы — Classic, Retro, Futuristic, Minimal
- ✅ Кастомизация — 11 скинов ракеток, 7 мячей, 4 темы корта
- ✅ Туториал — интерактивное обучение
- ✅ Локализация — 🇬🇧 🇷🇺 🇪🇸 🇩🇪 🇫🇷 🇨🇳 🇯🇵
- ✅ Accessibility — визуальные индикаторы для глухих (HIT!, GOAL!, POWERUP!)
| Метрика | Значение |
|---|---|
| Версия | 2.0 |
| Модулей | 18+ |
| Строк кода | ~4000 |
| Классов | 50+ |
| Функций | 200+ |
| Тестов | 209/209 ✅ |
| Языков | 7 |
| Достижений | 21 |
| Power-up'ов | 10 |
| Арен | 5 |
| Уровней кампании | 10 |
| Мини-игр | 5 |
| Платформа | Статус | Инструкция |
|---|---|---|
| Windows | ✅ Готово | python PyPong/pong.py |
| Linux | ✅ Готово | python PyPong/pong.py |
| macOS | ✅ Готово | python PyPong/pong.py |
| Android | 🟡 Требуется сборка | BUILD_ANDROID.md |
- Python 3.10+
- pygame-ce 2.4.0+
cd PyPong
python tests/test_all_features.py- Откройте
PyPong/locales/en.jsonилиru.json - Добавьте перевод в формате
"ключ": "значение" - Используйте в коде:
from PyPong.ui.localization import t; t("ключ")
См. BUILD_ANDROID.md
| Файл | Описание |
|---|---|
| NOTES.md | Заметки разработчика, архитектура |
| BUILD_ANDROID.md | Сборка APK для Android |
| BUILD_DESKTOP.md | Сборка для Desktop |
| GITHUB_ACTIONS.md | CI/CD настройка |
| AI_CLI_MANUAL.md | AI CLI руководство |
- Fork репозиторий
- Создайте ветку (
git checkout -b feature/amazing-feature) - Commit изменения (
git commit -m 'Add amazing feature') - Push (
git push origin feature/amazing-feature) - Откройте Pull Request
Проект распространяется на условиях открытой лицензии. См.:
- LICENSE — лицензия на английском языке
- LICENSE_RU — лицензионный договор на русском языке (ГК РФ)
- Пользовательское соглашение (EULA)
- Политика конфиденциальности
Преподаватель: Dupley Maxim Igorevich
Разработчик: QuadDarv1ne
Дата создания: 18/07/2024
Последнее обновление: 24/03/2026