Skip to content

astravys/trading-house-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Торговый Дом 1.0b — торговая игра в Древнем Риме

icon

Описание

Торговый Дом — это игра, в которой вы играете роль купца в Древнем Риме. Доступны две версии интерфейса: графическая (GUI) и текстовая (CLI).

Ваша задача — за ограниченное количество игровых циклов заработать целевую сумму денариев, отправляя караваны в города, торгуя товарами, преодолевая случайные события на пути и управляя ресурсами.

screenshot

Особенности:

  • Графический интерфейс (GUI) на customtkinter с античной тематикой
  • Адаптивный интерфейс — автоматическое подстройка размера окна под разрешение экрана
  • Исправленная сборка --onefile — стабильная работа исполняемых файлов без ошибок загрузки
  • Текстовый интерфейс (CLI) для терминала
  • Фоновая музыка в тематике Древнего Рима с автоматическим перемешиванием
  • Три уровня сложности (Легкий, Средний, Сложный)
  • Система караванов с курьерами и повозками
  • Случайные события в пути и городах
  • Динамическая экономическая система с модификаторами цен
  • Подробная статистика и финансовые отчёты
  • Автоматическая сборка исполняемых файлов через PyInstaller

Установка и запуск

Вариант 1: Готовый исполняемый файл (рекомендуется)

  1. Создайте билд из исходного кода (см. "Вариант 3" ниже)
  2. Перейдите в папку dist/TradingHouse/
  3. Запустите:
    • GUI версия: TradingHouse.exe
    • CLI версия: TradingHouse.exe cli

Вариант 2: Запуск из исходного кода

  1. Убедитесь, что установлен Python 3.10+:

    python --version
  2. Клонируйте репозиторий:

    git clone <repository-url>
    cd trading-house-cli
  3. Установите зависимости:

    pip install -r requirements.txt
  4. Запустите игру:

    # GUI версия (по умолчанию)
    python main.py
    
    # CLI версия  
    python main.py cli
    
    # Явно указать GUI
    python main.py gui

Вариант 3: Создание собственного билда

  1. Выполните шаги 1-3 из "Варианта 2"

  2. Создайте билд:

    # Обычный билд (папка с файлами)
    python build.py
    
    # Один исполняемый файл
    python build.py --onefile
    
    # Билд с отладочной информацией
    python build.py --debug
    
    # Очистить старые билды
    python build.py --clean
  3. Готовый билд будет в папке dist/TradingHouse/

  4. Запустите 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

История изменений

Версия 1.0b

  • Исправлена сборка --onefile: Решена проблема с загрузкой файлов конфигурации в режиме одного исполняемого файла
  • Улучшенная обработка ресурсов: Добавлена правильная обработка путей к файлам для PyInstaller
  • Стабильность билдов: Исправлены ошибки при запуске исполняемых файлов, собранных в режиме --onefile
  • Совместимость PyInstaller: Корректная работа функций get_resource_path() во всех модулях

Версия 1.0a

  • Адаптивный интерфейс: Добавлена автоматическая подстройка размера окна под разрешение экрана пользователя
  • Улучшенная совместимость: Окно автоматически масштабируется от 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 - список зависимостей

Скрипт сборки build.py

Автоматизированный скрипт сборки включает:

  • Проверку установки PyInstaller
  • Автоматическую очистку предыдущих билдов
  • Настройку иконки приложения
  • Включение всех необходимых файлов и зависимостей
  • Создание информационных файлов
  • Проверку результата сборки

Авторы

Проект разработан командой:

  • Ковтун Кирилл Евгеньевич
  • Лахова Мария Александровна
  • Хисматулин Ренат Амирович

Вклад в проект

Мы приветствуем вклад в развитие игры! Вы можете:

  1. Сообщить об ошибке - создайте Issue с описанием проблемы
  2. Предложить новую функцию - опишите идею в Discussions
  3. Внести код - создайте Pull Request с вашими изменениями
  4. Улучшить документацию - исправьте опечатки или дополните README

Как внести вклад:

  1. Форкните репозиторий
  2. Создайте ветку для вашей функции (git checkout -b feature/amazing-feature)
  3. Зафиксируйте изменения (git commit -m 'Add amazing feature')
  4. Отправьте в ветку (git push origin feature/amazing-feature)
  5. Создайте Pull Request

Игра создана с любовью к истории Древнего Рима и классическим торговым стратегиям. "Audentes fortuna iuvat" — Фортуна благоволит смелым!

🏛️ Создано с ❤️ для любителей стратегических игр и истории Древнего Рима

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages