Торговый Дом — это игра, в которой вы играете роль купца в Древнем Риме. Доступны две версии интерфейса: графическая (GUI) и текстовая (CLI).
Ваша задача — за ограниченное количество игровых циклов заработать целевую сумму денариев, отправляя караваны в города, торгуя товарами, преодолевая случайные события на пути и управляя ресурсами.
Особенности:
- Графический интерфейс (GUI) на customtkinter с античной тематикой
- Адаптивный интерфейс — автоматическое подстройка размера окна под разрешение экрана
- Исправленная сборка --onefile — стабильная работа исполняемых файлов без ошибок загрузки
- Текстовый интерфейс (CLI) для терминала
- Фоновая музыка в тематике Древнего Рима с автоматическим перемешиванием
- Три уровня сложности (Легкий, Средний, Сложный)
- Система караванов с курьерами и повозками
- Случайные события в пути и городах
- Динамическая экономическая система с модификаторами цен
- Подробная статистика и финансовые отчёты
- Автоматическая сборка исполняемых файлов через PyInstaller
- Создайте билд из исходного кода (см. "Вариант 3" ниже)
- Перейдите в папку
dist/TradingHouse/ - Запустите:
- GUI версия:
TradingHouse.exe - CLI версия:
TradingHouse.exe cli
- GUI версия:
-
Убедитесь, что установлен Python 3.10+:
python --version
-
Клонируйте репозиторий:
git clone <repository-url> cd trading-house-cli
-
Установите зависимости:
pip install -r requirements.txt
-
Запустите игру:
# GUI версия (по умолчанию) python main.py # CLI версия python main.py cli # Явно указать GUI python main.py gui
-
Выполните шаги 1-3 из "Варианта 2"
-
Создайте билд:
# Обычный билд (папка с файлами) python build.py # Один исполняемый файл python build.py --onefile # Билд с отладочной информацией python build.py --debug # Очистить старые билды python build.py --clean
-
Готовый билд будет в папке
dist/TradingHouse/ -
Запустите
TradingHouse.exeдля GUI илиTradingHouse.exe cliдля CLI
- GUI (графический): Современный интерфейс с кнопками и окнами в античном стиле, включает фоновую музыку
- CLI (текстовый): Классический текстовый интерфейс в терминале
- Автоматический запуск: Музыка начинает играть сразу при запуске игры
- Тематические треки: Музыка в стиле Древнего Рима создает атмосферу эпохи
- Автоматическое перемешивание: Плейлист автоматически перемешивается после завершения
- Управление воспроизведением: Кнопки паузы/воспроизведения и регулятор громкости (только в GUI)
- Информация о треке: Отображение текущего трека и позиции в плейлисте (только в GUI)
- Легкая (Via Facilior): Больше стартового капитала, меньше рисков, благоприятные условия торговли
- Нормальная (Via Mercatoris): Сбалансированные условия, умеренные риски и награды
- Сложная (Via Imperatoris): Меньше денег, больше рисков, суровые условия торговли
В начале игры:
- У вас есть стартовый капитал, склад товаров, курьеры и повозки
- Игра проходит по циклам (ходам) с ограниченным временем
На каждом цикле вы можете:
- Просматривать список городов и текущие события в них
- Покупать товары на местном рынке
- Отправлять караваны в города для торговли
- Переходить к следующему циклу и ждать возвращения караванов
- Анализировать статистику и прибыльность
Цель игры: Достичь целевой суммы денег (обычно 15 000 денариев) за заданное количество циклов.
trading-house-cli/
├── core/ # Основная игровая логика
│ ├── caravan.py # Логика путешествий караванов
│ ├── events.py # Генерация событий в пути и городах
│ ├── finance.py # Расчёт прибыли, расходов и модификаторов
│ ├── game.py # Игровой процесс (циклы, миссии)
│ ├── goods.py # Загрузка и обработка товаров
│ ├── save_system.py # Система сохранений
│ └── world.py # Генерация мира и городов
├── models/ # Модели данных
│ ├── audio.py # Система управления фоновой музыкой
│ ├── caravan.py # Модель каравана
│ ├── city.py # Модель города
│ ├── courier.py # Модель курьера
│ ├── goods_item.py # Модель товара
│ ├── player.py # Модель игрока
│ └── wagon.py # Модель повозки
├── ui/ # Пользовательские интерфейсы
│ ├── cli.py # Текстовый интерфейс (CLI)
│ ├── gui.py # Графический интерфейс (GUI)
│ └── screens/ # Экраны GUI в античном стиле
│ ├── caravans_status_screen.py
│ ├── cities_overview_screen.py
│ ├── difficulty_screen.py # Экран выбора сложности
│ ├── main_menu_screen.py # Главное меню
│ ├── send_caravan_screen.py # Отправка караванов
│ └── shop_inventory_screen.py # Управление складом
├── data/ # Данные и конфигурация
│ ├── balance_config.json # Конфигурация баланса игры
│ ├── icon.ico # Иконка приложения
│ ├── music/ # Музыкальные файлы в тематике Древнего Рима
│ │ └── ...
│ └── ICON_README.md # Информация об иконке
├── dist/ # Готовые билды (создается при сборке)
│ └── TradingHouse/ # Папка с исполняемым файлом
├── build/ # Временные файлы сборки PyInstaller
├── main.py # Точка входа в игру
├── build.py # Скрипт создания билда через PyInstaller
├── requirements.txt # Зависимости проекта
├── TradingHouse.spec # Спецификация PyInstaller
└── README.md # Этот файл
- Два интерфейса: GUI с античной тематикой и фоновой музыкой, CLI на выбор
- Адаптивный дизайн: Автоматическое подстройка размера и компоновки интерфейса под разрешение экрана пользователя
- Стабильная сборка: Исправлены проблемы с загрузкой файлов в режиме --onefile PyInstaller
- Фоновая музыка: Тематические треки с автоматическим воспроизведением и перемешиванием
- Три уровня сложности с разными стартовыми условиями и модификаторами
- Система караванов с курьерами и повозками разных характеристик
- Ограниченное время - нужно успеть заработать за определенное количество циклов
- Автоматическая сборка билдов через PyInstaller для легкого распространения
- Динамические модификаторы цен:
- Спрос в городе (высокий/низкий для разных товаров)
- События в городе (фестивали, эпидемии, войны и т.д.)
- Дальность пути каравана (влияет на прибыль)
- Состояние каравана после путешествия
- 10 типов товаров: от зерна и вина до мечей и пряностей
- Детальная финансовая отчетность по каждому рейсу
- В пути:
- Болезнь курьера (снижение скорости)
- Поломка повозки (потеря товаров)
- Набег разбойников (потеря денег и товаров)
- Смерть курьера (полная потеря каравана)
- Благоприятные события (ускорение пути)
- В городах:
- Фестивали и праздники (повышение цен на определенные товары)
- Эпидемии (снижение спроса, повышение цен на лекарства)
- Войны и конфликты (спрос на оружие)
- Засухи и неурожаи (изменение цен на продовольствие)
- Подробные отчёты о рейсах с описанием всех событий
- Отображение всех активных модификаторов цен
- Расчёт прибыли и убытков с детализацией
- Статистика по курьерам и повозкам
- Автоматическое воспроизведение: Музыка запускается при старте игры
- Тематическая музыка: Композиции в стиле Древнего Рима
- Умное перемешивание: Плейлист автоматически перемешивается после завершения
- Интуитивное управление: Кнопки воспроизведения/паузы и регулятор громкости
- Информативность: Отображение текущего трека и позиции в плейлисте
- Безопасность: Автоматическое отключение при отсутствии pygame
- Windows: 7/8/10/11 (x64)
- Память: 100 MB свободного места
- Для GUI: Поддержка современных графических интерфейсов, разрешение экрана от 1200x800
- Для музыки: Аудиокодеки для MP3 (входят в состав Windows)
- Адаптивность: Автоматическая подстройка под любое разрешение экрана (от 1200x800 до 1920x1080)
- Python: 3.10 или выше
- Зависимости: customtkinter, pyinstaller, Pillow, pygame (для музыки)
- ОС: Windows, Linux, macOS
- Исправлена сборка --onefile: Решена проблема с загрузкой файлов конфигурации в режиме одного исполняемого файла
- Улучшенная обработка ресурсов: Добавлена правильная обработка путей к файлам для PyInstaller
- Стабильность билдов: Исправлены ошибки при запуске исполняемых файлов, собранных в режиме --onefile
- Совместимость PyInstaller: Корректная работа функций get_resource_path() во всех модулях
- Адаптивный интерфейс: Добавлена автоматическая подстройка размера окна под разрешение экрана пользователя
- Улучшенная совместимость: Окно автоматически масштабируется от 1200x800 до 1920x1080 в зависимости от монитора
- Оптимизация отображения: Игра корректно отображается на экранах с различными соотношениями сторон
- Стабильность GUI: Исправлены проблемы с отображением на мониторах разных размеров
# Клонирование репозитория
git clone <repository-url>
cd trading-house-cli
# Создание виртуального окружения (рекомендуется)
python -m venv venv
venv\Scripts\activate # Windows
# или source venv/bin/activate # Linux/Mac
# Установка зависимостей
pip install -r requirements.txt# Клонирование репозитория
git clone <repository-url>
cd trading-house-cli
# Создание виртуального окружения (рекомендуется)
python -m venv venv
venv\Scripts\activate # Windows
# или source venv/bin/activate # Linux/Mac
# Установка зависимостей
pip install -r requirements.txt# Обычный билд (папка с файлами) - быстрый запуск
python build.py
# Один файл - удобно для распространения, но медленный запуск
python build.py --onefile
# Билд с отладкой - для разработки, показывает консоль
python build.py --debug
# Очистка старых билдов
python build.py --cleanПосле сборки в папке dist/TradingHouse/ будет:
TradingHouse.exe- основной исполняемый файл с иконкой_internal/- папка с библиотеками Python и зависимостямиdata/- папка с конфигурационными файлами игры и музыкой
В папке dist/ также создаются:
BUILD_INFO.txt- информация о версии и сборкеREADME.md- копия документацииrequirements.txt- список зависимостей
Автоматизированный скрипт сборки включает:
- Проверку установки PyInstaller
- Автоматическую очистку предыдущих билдов
- Настройку иконки приложения
- Включение всех необходимых файлов и зависимостей
- Создание информационных файлов
- Проверку результата сборки
Проект разработан командой:
- Ковтун Кирилл Евгеньевич
- Лахова Мария Александровна
- Хисматулин Ренат Амирович
Мы приветствуем вклад в развитие игры! Вы можете:
- Сообщить об ошибке - создайте Issue с описанием проблемы
- Предложить новую функцию - опишите идею в Discussions
- Внести код - создайте Pull Request с вашими изменениями
- Улучшить документацию - исправьте опечатки или дополните README
- Форкните репозиторий
- Создайте ветку для вашей функции (
git checkout -b feature/amazing-feature) - Зафиксируйте изменения (
git commit -m 'Add amazing feature') - Отправьте в ветку (
git push origin feature/amazing-feature) - Создайте Pull Request
Игра создана с любовью к истории Древнего Рима и классическим торговым стратегиям. "Audentes fortuna iuvat" — Фортуна благоволит смелым!
🏛️ Создано с ❤️ для любителей стратегических игр и истории Древнего Рима
