Реализация учебной симуляции казино с пользовательскими коллекциями и псевдослучайной моделью.
# 1. Создать и активировать виртуальное окружение
python -m venv .venv
source .venv/bin/activate
# 2. Запустить программу
python -m src.main
# 3. Или с параметрами
python -m src.main --steps 50 --seed 123Для получения справки: python -m src.main --help
Ключевые папки:
- src/ - основная реализация предметной модели и симуляции
main.py- точка входа для запуска программыcasino_game.py- класс Casino и функция run_simulationgame_objects.py- классы Player, Chip, Goose, WarGoose, HonkGoosecollections.py- коллекции PlayerCollection, GooseCollection, CasinoBalance
- tests/ - базовые unit-тесты и запуск короткой детерминированной симуляции
- Player - игрок с полем balance и методами deposit/withdraw.
- Chip - фишка казино с реализованным add (сложение фишек).
- Goose - базовый гусь; два подкласса:
- WarGoose - атакует игрока и крадёт часть баланса;
- HonkGoose - при вызове honk влияет на балансы игроков.
- Пользовательские коллекции:
- PlayerCollection, GooseCollection - списковые коллекции с поддержкой итерации, len, индексации и срезов.
- CasinoBalance - словарная коллекция name -> amount с логированием в setitem и методом change_balance.
- Casino - класс, содержащий коллекции игроков/гусей/балансов и набор событий.
- run_simulation(steps: int = 20, seed: int | None = None) -> None — функция симуляции, детерминируемая по seed.
Требования, выполненные в реализации:
- Как минимум две пользовательские коллекции — списковая и словарная.
- Магический метод с предметным смыслом: Chip.add, Goose.add (объединение гусей), CasinoBalance.setitem (логирование).
- Симуляция использует random и при заданном seed воспроизводима.
- На каждом шаге выполняется одно случайное событие; логи выводятся в консоль.
# Быстрый запуск всех тестов
pytest -q
# Подробный вывод
pytest -v
# Запуск конкретного теста
pytest tests/test_casino_game.py -v