Untitled

Дилер… хороший человек

Цель: ознакомиться с базовым синтаксисом языка C#, основными механизмами ООП.

Задачи

Необходимо спроектировать и реализовать следующие классы:

1. Дилер
2. Колода
3. Игральная карта

Далее опишем подробнее требования к функционалу каждого из них.

Дилер

В любом порядочном казино должен быть Крупье.

Крупье́

(фр. croupier) — банкомёт в игорном доме, ведёт игру, выдаёт участникам их выигрыши и забирает проигранные ставки.

В рамках системы, которую мы проектируем - к зоне ответственности дилера относится раздача карт (чтобы процесс игры был честным!), размешивание колоды и введение её в игру.

В этой лабораторной работе мы с вами создадим такую сущность, которая смогла бы для любой игры гарантировать растасованную (честно и из колоды, изначально разложенной в правильном порядке!) колоду, с которой в дальнейшем смогут взаимодействовать игроки.

Таким образом, дилер - первая сущность, которая имеет право взаимодействовать с колодой после её создания. Система должна гарантировать его эксклюзивное право на это, конструктор колоды не должен вызываться другими сущностями.

После того как создан экземпляр колоды дилер должен уметь её “размешать”. То есть расположить карты внутри изначально упорядоченной колоды в случайном порядке.

Для этого предполагается использовать алгоритм Perfect Shuffle, известный вам по курсу АиСД (почитать подробнее можно тут)

Другие сущности при необходимости получить колоду для игры - должны иметь возможность получить её только через диллера, в уже “размешанном виде”.

<aside> 🧪 Hint: подумайте над тем, какой интерфейс должен быть доступен сущностям-игрокам при общении с диллером

</aside>