Skip to content

QuadDarv1ne/PongClone

 
 

Repository files navigation

PongClone

DOI ORCID Tests Python Pygame

image image

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)

🎮 Управление

Игрок 1 (левая ракетка)

Клавиша Действие
W Вверх
S Вниз

Игрок 2 (правая ракетка, если 2 игрока)

Клавиша Действие
Вверх
Вниз

Общее

Клавиша Действие
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/UX

  • Анимации — плавные переходы 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

Добавление локализации

  1. Откройте PyPong/locales/en.json или ru.json
  2. Добавьте перевод в формате "ключ": "значение"
  3. Используйте в коде: from PyPong.ui.localization import t; t("ключ")

Сборка для Android

См. 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 руководство

🤝 Вклад

  1. Fork репозиторий
  2. Создайте ветку (git checkout -b feature/amazing-feature)
  3. Commit изменения (git commit -m 'Add amazing feature')
  4. Push (git push origin feature/amazing-feature)
  5. Откройте Pull Request

📄 Лицензия

Проект распространяется на условиях открытой лицензии. См.:

👨‍🏫 Авторы

Преподаватель: Dupley Maxim Igorevich

Разработчик: QuadDarv1ne

Дата создания: 18/07/2024

Последнее обновление: 24/03/2026

🙏 Благодарности

  • pygame-ce — игровой движок
  • Atari — создатели оригинального Pong (1972)

Star History Chart

Packages

 
 
 

Contributors

Languages

  • Python 99.7%
  • Other 0.3%