Домашнее задание по модулю "Программирование на Python"

Домашнее задание по модулю "Программирование на Python"
Механика настольной игры и основные правила

Виды карт
Полная колода карт для игры «МТС Карты» в игре 108 карт:
  • Карты 4 цветов (синий, жёлтый, красный, зелёный) с номерами от 0 до 9 (76 шт, с цифрами от 1 до 9, по две одинаковых на каждый цвет, и четыре карты разных цветов с цифрой 0) — обычные карты;
  • 8 карт «Возьми две», 8 карт «Ход обратно», 8 карт «Пропусти ход» по 2 на каждый цвет — карты действия;
  • 4 карты «Заказать цвет», 4 карты «Возьми четыре» на чёрном фоне — карты действия.

Карты действий и их назначение
  • Ход обратно — направление хода меняется;
  • Пропусти ход — следующий по направлению игры игрок пропускает ход;
  • Возьми две — следующий по направлению игры игрок берёт 2 карты из колоды банка и пропускает свой ход;
  • Закажи цвет — игрок заказывает цвет и следующий по направлению игры игрок должен сделать ход либо картой заказанного цвета, либо карту с чёрным фоном;
  • Закажи цвет + возьми четыре — игрок заказывает цвет и следующий по направлению игры игрок берёт 4 карты из колоды и пропускает ход.

Игроки
  • Игрок человек запускает игру с указанием кол-ва игроков в целом;
  • Игрок человек вписывает свое имя;
  • Создаются игроки-боты;
  • Бот имитирует мыслительный процесс и ожидает хода 5сек;
  • Игроки будут обладать именем и картами;
  • Игроки перемешиваются и рандом выбирает первого игрока;
  • Игрок человек сможет видеть карты его с руки и иметь возможность ввести в консоль номер карты для хода;
  • Бот перебирает все карты с руки пока стол не примет его ход;
  • Игрок человек сможет нажать кнопку «Крикнуть МТС» после своего успешного хода и до начала хода следующего игрока, валидным будет считать только в случае, когда осталась одна последняя карта;
  • Человек должен иметь возможность Взять карту из Прикупа, в случае если нечем ходить;
  • Бот должен с вероятностью 30% «кричать МТС» когда у него осталась одна карта после успешного хода;
  • Бот должен иметь возможность Взять карту из Прикупа, в случае если все карты для хода перебрал.

Колода и стол
  • Формируется Стол, на котором будут жить колоды и карты хода и методы валидации хода;
  • Формируется и перемешивается колода Прикупа из 108 карт, описанных выше;
  • Игрокам раздается по 7 карт из Прикупа;
  • Сдаётся по 7 карт каждому играющему;
  • Первая карта достается из Прикупа после раздачи игрока и кладется на стол, формируя первую карту Сброса;
  • Прикуп остается как есть из оставшихся в нем карт после всех раздач и первого автохода;
  • Стол умеет валидировать ход на корректность хода Игрока;
  • Стол умеет проверять;
  • Использованные карты сбрасываются в Сброс, на начало игры в Сбросе только первая карта.

Ход игры
  • Кол-во игроков задается при старте игры от 2 до 10 (argparse c установленными возможными значениями);
  • В свой ход каждый игрок должен положить карту в игровую колоду, при этом карта должна совпадать с верхней картой в игровой колоде по цвету или по картинке;
  • Если у игрока нет подходящей карты, то он берёт одну карту из колоды банка и, если она подходит, он может сделать ход только этой картой, или забрать на руку;
  • Игрок может пойти в свой ход картой на чёрном фоне (специальной) независимо от того, какая карта лежит сейчас верхней в игровой колоде;
  • Когда игрок кладёт в Сброс свою предпоследнюю карту, то он должен сказать: «МТС!» до начала следующего хода следующего игрока;
  • Если игрок не сказал этого до начала хода следующего игрока (Боты думают 5 сек), то он берёт 2 карты из основной колоды Прикупа;
  • Стол проверяет кол-во карт у прошлого игрока и условие Крикнутого слова "МТС":
  1. Если осталась 1 карта и не было выкрикнуто слово МТС - выдает 2 карты этому игроку;
  2. Если "МТС" выкрикнуто, а кол-во карт не равно 1 - выдает 2 карты этому игроку;
  3. Сбрасывает свойство Крикнуто в False.
  • Если основная колода Прикупа закончилась:
  1. верхняя карта Сброса остается;
  2. все остальные тасуются, переворачиваются и становятся новой колодой Прикупа.
  • Игра продолжается;
  • Раунд выигрывает игрок, сбросивший все карты.
Понравился урок?