Задание №14
«Карточная игра "Дурак"»

Описание задачи
Дура́к» — карточная игра, популярная в России. В игре используется колода из 36 карт и участвуют от двух до шести игроков. Каждому раздаётся по 6 карт, следующая карта открывается и её масть устанавливает козырь для данной игры, и остальная колода кладётся сверху, так, чтобы козырная карта была всем видна. Цель игры — избавиться от всех карт. Последний игрок, не избавившийся от карт, остаётся в «дураках». В первой сдаче первым ходит игрок с младшим козырем; в дальнейших сдачах ходят либо «под дурака», то есть игрок справа от «дурака», либо «из-под дурака», то есть игрок слева, по договору. Ход делается всегда налево, и состоит из выкладывания одной или больше карт, и попытки игрока, под которого ходят, их покрыть либо старшей картой той же масти, либо картой козырной масти, если кроющаяся карта сама не является козырной — в таком случае её можно покрыть только старшим козырем. Если игрок, под которого ходят, отбился, то он ходит следующим, но сначала все игроки добирают до 6 карт, начиная с игрока, который ходил первым, и кончая игроком, который отбился. Если он не смог отбиться, то он принимает все карты, и следующим ходит игрок слева.
При участии четырёх или шести игроков возможна игра 2х2 или 3х3, когда игроки, сидящие через одного, являются партнёрами и не ходят друг под друга.

Ходить можно любым количеством карт одного достоинства. Игрок, под которого ходят, может крыть карты, а может принять. Ходящий игрок имеет право «подкинуть» карты, совпадающие по достоинству с любой картой на столе, включая те, которыми ходили, и те, которыми крыли. Если в игре участвуют более двух игроков, то игрок, который ходил, имеет право первого слова, но когда он кончил ходить, то остальные игроки имеют право подкинуть свои карты по тем же правилам. Нельзя подкидывать больше карт, чем остаётся у отбивающегося игрока . Также нельзя подкидывать всего больше шести карт, даже если у игрока на руках больше карт. При первом «отбое» даже нельзя подкидывать отбивающему игроку всего больше, чем 5 карт.

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

Функциональные требования:
  1. Программа должна быть реализована в консоли. По желанию студента возможно использование визуальных средств среды разработки.
  2. Программа должна реализовывать эффективный искусственный интеллект компьютера:
  • Искусственный интеллект должен учитывать сброшенные карты.
  • Искусственный интеллект должен уметь оценивать ценность карты и выбирать оптимальный ход. Например, не ходить в начале игры с козыря, крыть картой, которой нет у противника, беречь парные карты, крыть наименьшей картой.