Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Лабораторная работа №4 — Вариант: «Казино и Гуси»

Реализация учебной симуляции казино с пользовательскими коллекциями и псевдослучайной моделью.

Быстрый старт

# 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_simulation
    • game_objects.py - классы Player, Chip, Goose, WarGoose, HonkGoose
    • collections.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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages