Я прошу помочь с общим алгоритмом для всех. На данный момент делаю под покер-рум Poker Mira. Снимайте нужные карты в базу да и все и подставляйте.
А я думаю, что нужно сделать вот так:
Делаем шаблоны всех комбинаций, условно для каждой комбинации нужное кол-во "ячеек", в массивах не оч я ещеЮ но уже начинаю осваивать.
// Пара
Две ячейки, в которые могут поместится только карты одинакового достоинства
// Две пары
Четыре ячейки, для 2х разных пар
// Сет
Три ячейки для трех карт одинакового достоинства
и т.д.
Раздаются карты, сначала 2шт, делается проверка по всех шаблонах. Максимальная комбинация Пара.
Потом еще 3 карты на стол дают, снова анализируются из всех шаблонов. На руках может быть карты 5-6, а на столе 8-9-Туз. В этом случает у нас почти собран Стрит (5 карт подряд, в этом случае 5-6-7-8-9). Как видим нам не хватает 7ки для сложившейся комбинации. НО на стол дальше приходит еще 1 карта, снова анализируем и делаем вывод. Допустим падает Двойка. У нас снова нету комбинации, но есть последняя карта, которая еще выпадает на стол.
По выше указанному коду не выйдет научить бота понимать, что у него еще есть шансы для сбора комбинации.
Алгоритмы, действий при разных комбинациях (Сбрасывать, Равнять ставку, Подымать ставку, Делать Ва-Банк) я сам сделаю и выложу сюда, но вначале нужно вышеуказанные проблемы решить.
Выложу описание возможных комбинаций в покере, шаблоны которых нужно сделать:
[spoiler]// Пара
Две карты одного ранга
// Две пары
Две карты одного ранга и две другого
// Сет
3 карты одного ранга
// Стрит
5 последовательных карт
(туз может использовать как самая старшая, так и как самая младшая карта)
Пример, когда туз самая младшая карта: Туз-двойка-тройка-четверка-пятерка
Пример, когда туз самая старшая карта : Десятка-валет-дама-король-туз
// Флеш
5 любых карт одной масти
// Фул хаус
3 карты одного ранга и пара (То есть пара + сет)
// Каре
4 карты одного ранга
// Стрит фшел
5 последовательных карт одной масти. (То есть тот же стрит, только когда еще все карты, которые делают стрит еще и одной масти)
// Флеш рояль
5 старших карт одной масти
A,K,Q,J,10 и все одной масти - Самая сильная комбинация в покере. [/spoiler]
Каждая комбинация содержит в себе 5 карт (Даже пара, хоть там и нужно только 2 карты, но тогда еще учитываются карты которые есть еще так называемые КИКЕРА, НО этим можно пренебречь) . Всего карт, которые мы видим 7. Две нам дают на руки, которые видим только мы и 5 карт на стол для всех игроков.