mirror of
https://github.com/EDeev/pixel_gamble.git
synced 2026-06-16 21:21:03 +03:00
124 lines
5.7 KiB
Markdown
124 lines
5.7 KiB
Markdown
# Pixel Gamble
|
||
|
||
[](https://python.org)
|
||
[](https://pygame.org)
|
||
[](LICENSE)
|
||
|
||
## Описание проекта
|
||
|
||
Pixel Gamble — это полнофункциональная 2D action-RPG игра, разработанная на Python с использованием библиотеки Pygame. Проект демонстрирует реализацию классических игровых механик в современной объектно-ориентированной архитектуре.
|
||
|
||
## Ключевые особенности
|
||
|
||
### Игровые механики
|
||
- **Система боя**: Реализован динамический боевой процесс с различными типами атак
|
||
- **ИИ противников**: Интеллектуальные противники с различными поведенческими паттернами
|
||
- **Система прогрессии**: Механика получения опыта и развития персонажа
|
||
- **Физика столкновений**: Точная система коллизий с оптимизированными хитбоксами
|
||
|
||
### Техническая архитектура
|
||
- **Модульная структура**: Четкое разделение логики игры по компонентам
|
||
- **Система камеры**: Следящая камера с плавным движением
|
||
- **Карты уровней**: CSV-основанная система генерации игрового мира
|
||
- **Аудиосистема**: Интегрированное воспроизведение звуковых эффектов
|
||
|
||
## Технологический стек
|
||
|
||
- **Язык программирования**: Python 3.8+
|
||
- **Игровой движок**: Pygame 2.0+
|
||
- **Управление ресурсами**: CSV для уровней, PNG для графики
|
||
- **Архитектурный паттерн**: Entity-Component-System (ECS)
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
pixel_gamble/
|
||
├── code/
|
||
│ ├── main.py # Точка входа в приложение
|
||
│ ├── game.py # Основной игровой цикл
|
||
│ ├── level.py # Логика уровней и камеры
|
||
│ ├── player.py # Класс игрока
|
||
│ ├── enemy.py # Система противников
|
||
│ ├── entity.py # Базовый класс сущностей
|
||
│ └── data.py # Конфигурация и утилиты
|
||
├── data/
|
||
│ ├── map/ # CSV файлы карт
|
||
│ ├── textures/ # Графические ресурсы
|
||
│ └── audio/ # Звуковые файлы
|
||
└── requirements.txt # Зависимости проекта
|
||
```
|
||
|
||
## Установка и запуск
|
||
|
||
### Требования к системе
|
||
- Python 3.8 или выше
|
||
- Pygame 2.0+
|
||
|
||
### Процесс установки
|
||
|
||
1. **Клонирование репозитория**:
|
||
```bash
|
||
git clone https://github.com/DeevEV/pixel_gamble.git
|
||
cd pixel_gamble
|
||
```
|
||
|
||
2. **Установка зависимостей**:
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
3. **Запуск игры**:
|
||
```bash
|
||
cd code
|
||
python main.py
|
||
```
|
||
|
||
## Управление
|
||
|
||
- **W, A, S, D** — Перемещение персонажа
|
||
- **ЛКМ** — Атака
|
||
- **ESC** — Выход из игры
|
||
|
||
## Архитектурные решения
|
||
|
||
### Система сущностей
|
||
Игра построена на базовом классе `Entity`, обеспечивающем унифицированный интерфейс для всех игровых объектов с поддержкой:
|
||
- Движения и физики
|
||
- Анимационной системы
|
||
- Обработки столкновений
|
||
|
||
### Управление ресурсами
|
||
- CSV-файлы для описания структуры уровней
|
||
- Модульная система загрузки графических ресурсов
|
||
- Централизованное управление игровыми данными
|
||
|
||
### Производительность
|
||
- Оптимизированная система рендеринга с сортировкой по глубине
|
||
- Эффективная обработка столкновений
|
||
- Управление памятью через группы спрайтов Pygame
|
||
|
||
## Возможности расширения
|
||
|
||
Проект спроектирован с учетом масштабируемости:
|
||
- Легкое добавление новых типов противников
|
||
- Расширяемая система оружия
|
||
- Модульная архитектура уровней
|
||
- Гибкая система анимаций
|
||
|
||
## Лицензия
|
||
|
||
Этот проект распространяется под лицензией MIT.
|
||
|
||
## Контакты разработчика
|
||
|
||
**Деев Егор Викторович** - Backend Developer
|
||
- GitHub: [@EDeev](https://github.com/EDeev)
|
||
- Email: egor@deev.space
|
||
- Telegram: [@Egor_Deev](https://t.me/Egor_Deev)
|
||
|
||
---
|
||
|
||
<div align="center">
|
||
<sub>Проект создан в рамках изучения игровой разработки и демонстрации навыков программирования на Python.</sub>
|
||
<p><sub>Создано с ❤️ от вашего дорогого - deev.space ©</sub></p>
|
||
</div>
|