yellyex писал(а):
На данный момент я придумываю, как не писать все силы рук вручную, а уметь определять их, после сдачи игрокам. Это важно, так как в будущем ожидаются миллионы комбинаций.
Конечно. Это правильно. Я не вижу вообще никакой проблемы здесь. Масть - не важна, если она только не совпадает с такой же мастью при одинаковом достоинстве у тебя в руке (или тоже самое совпадение с картами на борде). По-любому, нужно ввести базовые компинации: пара, две пары, трипс/сет, стрит, флеш и т.д.
Алгоритм детекта должен проходить в несколько этапов:
Код:
Считаем сколько у нас одинаковых мастей (--> nCount)
if ( nCount == 5 ) {
Проверяем достоинства на: роял флэш, стрит флэш, флэш
} else {
Считаем несколько раз сколько у нас карт одинакового достинства (мы уже знаем, что одинаковых мастей < 5, соответственно, 3 комбинации уже позади)
Несколько этих подсчётов лучше в массив уложить, т.к. пара может быть на борде, пара может быть у нас, а может оказаться вообще каре.
И потом смотрим по каждому элементу, сколько карт у нас одинакового достоинства (вместе [u]с учётом борда[/u])
}
Реализацию последнего массива удобнее делать в виде HashMap, типа:
std::map < std::string, unsigned short > hashMap. Тогда получится:
hashMap[ "K" ] = 3; // 3 карты достоинства: Король (3 короля)
hashMap[ "10" ] = 3; // 3 десятки (в зависимости от этого либо трипс, либо сет)
и т.д. - добавляем в этот массив только те достоинства, что встретились нам. Потом проверять будет удобнее.
Но мне интересно будет как ты это будешь делать на блюпринтах, я их только неделю как изучаю, жесть как необычно и очень тяжко даётся. Поэтому будет интересно взглянуть.