![]() |
сравнение комбинаций в покере
Здравствуйте, собственно такой вопрос, как реализовать сравнение комбинаций... был бы обычный покер на 5 карт, там еще более/менее понятно, но мне надо реализовать ОМАХУ, где всего 9 карт, 4 своих и 5 общих, и надо использовать не любые 5 карт из них, а 2 своих и 3 общих. Как искать одинаковые я примерно представляю, с цветом тоже проблем не должно быть, но вот как определить "улицу" (5 карт подряд, например 7,8,9,10,В) при том что может быть например в общих 7,9,В, а на руках 8 и 10 (тоесть искать последовательности раздельно нет смысла) - непонятно... (
|
У всех карт назначить индекс. Добавить в массив индексы карт на руках и на столе, отсортировать по-возрастанию.
Завести счетчик. Затем в цикле посмотреть, если текущий элемент массива больше предыдущего на 1 - плюсовать счетчик. Если счетчик == 5 (или сколько там) - последовательность есть. Сравниваете с шаблоном. |
да, я так и хотел сделать, но ведь в таком варианте может выпасть не именно 2 своих и 3 общих карты, а например наоборот 3+2, или 4+1, а не 2+3... тоесть еще и это надо потом проверять... Ну в принципе я представляю себе как ето все сделать, но тут столько проверок получается, думал мб зря придумываю велосипед и на самом деле уже давным давно под такое написаны методы и алгоритмы...
|
А какая разница?
У вас есть набор своих карт (массив, допустим) и набор карт на столе. Соединяете 2 массива индексов в один и сортируете его. |
да, и в результате я получаю что в етом объединенном массиве есть нужная мне последовательность, но все равно мне потом еще надо проверить какие карты были использованы в етой последовательности, если 4 из 1го массива и 1 из 2го, то мне такая последовательность не подходит из-за правил, мне нужна только та, которая состоит из 3х карт 1го массива и 2х карт 2го массива. + из 9 карт ведь может оказаться так что будет несколько последовательностей, например 6,7,8,9,10,В,Д,К,Т - тогда у меня получится 5 последовательностей (6-10,7-В,8-Д,9-К и 10-Т), мне их надо все сохранить, потом проверить какие из них подходят по правилам (3+2) и потом еще если таких окажется больше 1й, то еще и на старшинство сравнивать придется(ну со старшинством проблем нет, ето понятно как сделать). В общем получается ничего особо сложного нет, просто надо делать несколько промежуточных/временных переменных, где сохранять результаты перебора, а потом из них выбирать подходящие/лучшие...
|
Можно каждой карте прописать потенциальные выигрышные вариации. Т.е. для карты "валет пик" потенциальными выигрышными вариацияму будут "дама пик" и "десятка пик", и проверять наличие потенциальных выигрышных вариантов (ну и помечать те, которые уже проверены). Я, к сожалению, не знаю правил покера, поэтому мне сложно предложить что-то более конкретное, но в принципе, для такого типа игр, в общем, оно бы работало, но может есть более простой способ.
|
Ваша комбинация "улица" по русски называется "стрейт" или "стрит" и это не от слова "street", а от слова "straight"
|
Котяра, ну я в покер учился играть еще в 7 лет, тогда я не знал таких сложных слов как "straight". "street" мне было понятней ) Поетому по привычке и называю так... )
wvxvw, да ну тогда уж проще все таки просто делать сортировку по возрастанию и смотреть есть ли там идущие подряд карты.. Просто странно что нет каких то готовых решений, ведь я не первый кто пишет покер. Ну или если они и есть, то все самописные, которые в паблик не стремятся выкладывать... |
| Часовой пояс GMT +4, время: 09:33. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.