По договоренности
Доброго времени суток!
Необходимо написать программу, которая вычисляла бы вероятность выигрыша в раздаче и показывала оптимальный ход для карточной игры "21 очко" с 1й колодой (36 карт).
Наверняка, все знают, как играть в "очко", но вот более подробное описание механики игры:
Правила:
-играют Дилер и Игрок. После раздачи карт (по 2 карты каждому), Игрок первым принимает решение Добрать или Остановиться. Игрок побеждает, если сумма очков больше, чем у Дилера, или если Дилер перебирает.
Дилер побеждает, если сумма его очков в итоге больше, или если Игрок перебирает.
Дилер добирает карты после того, как Игрок решит остановиться. Дилер обязан брать, если сумма его карт 16 и меньше. Если сумма карт от 17 до 21 Дилер обязан остановиться.
В случае, если Игрок набирает 21 очко, Дилер имеет право добрать себе карты, чтобы также набрать 21 и вывести раунд в ничью.
В случае, если Игрок или Дилер получает карманные 21 (в первой же раздаче получает комбинацию Т+10 или два туза, которые тоже считаются за 21), это означает моментальную победу в раунде.
Значения карт: Т 11, К 4, Д 3, В 2, остальные 6,7,8,9,10 по номиналу.
Как вижу реализацию программы:
1. Ввести значения стартовых карт Игрока и Дилера
2. Программа покажет вероятность победы в раздаче, исходя из этих карт
3. Программа покажет оптимальный ход для Игрока
4. После совершения хода, в программу можно ввести значение полученной карты и снова увидеть оптимальный ход, в изменившейся ситуации.
Расчет несложный, поскольку используется 1 колода, известно общее кол-во карт, следовательно стартовая вероятность выпадения карты после 1-го добора Игроком 1/32.
Но необходимо все это реализовать именно в формате десктопного софта. Язык написания, внешний вид абсолютно любые, лишь бы систему не тормозило. Возможность сохранять историю желательная, но не обязательная опция.
Пример программы, на которую этот софт может быть похож Poker Stove.