![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Jun 2011
Сообщений: 20
|
Здравствуйте, собственно такой вопрос, как реализовать сравнение комбинаций... был бы обычный покер на 5 карт, там еще более/менее понятно, но мне надо реализовать ОМАХУ, где всего 9 карт, 4 своих и 5 общих, и надо использовать не любые 5 карт из них, а 2 своих и 3 общих. Как искать одинаковые я примерно представляю, с цветом тоже проблем не должно быть, но вот как определить "улицу" (5 карт подряд, например 7,8,9,10,В) при том что может быть например в общих 7,9,В, а на руках 8 и 10 (тоесть искать последовательности раздельно нет смысла) - непонятно... (
|
|
|||||
|
У всех карт назначить индекс. Добавить в массив индексы карт на руках и на столе, отсортировать по-возрастанию.
Завести счетчик. Затем в цикле посмотреть, если текущий элемент массива больше предыдущего на 1 - плюсовать счетчик. Если счетчик == 5 (или сколько там) - последовательность есть. Сравниваете с шаблоном.
__________________
Кодинг, багинг, алгоритминг. me @ |
|
|||||
|
Регистрация: Jun 2011
Сообщений: 20
|
да, я так и хотел сделать, но ведь в таком варианте может выпасть не именно 2 своих и 3 общих карты, а например наоборот 3+2, или 4+1, а не 2+3... тоесть еще и это надо потом проверять... Ну в принципе я представляю себе как ето все сделать, но тут столько проверок получается, думал мб зря придумываю велосипед и на самом деле уже давным давно под такое написаны методы и алгоритмы...
|
|
|||||
|
Регистрация: Jun 2011
Сообщений: 20
|
да, и в результате я получаю что в етом объединенном массиве есть нужная мне последовательность, но все равно мне потом еще надо проверить какие карты были использованы в етой последовательности, если 4 из 1го массива и 1 из 2го, то мне такая последовательность не подходит из-за правил, мне нужна только та, которая состоит из 3х карт 1го массива и 2х карт 2го массива. + из 9 карт ведь может оказаться так что будет несколько последовательностей, например 6,7,8,9,10,В,Д,К,Т - тогда у меня получится 5 последовательностей (6-10,7-В,8-Д,9-К и 10-Т), мне их надо все сохранить, потом проверить какие из них подходят по правилам (3+2) и потом еще если таких окажется больше 1й, то еще и на старшинство сравнивать придется(ну со старшинством проблем нет, ето понятно как сделать). В общем получается ничего особо сложного нет, просто надо делать несколько промежуточных/временных переменных, где сохранять результаты перебора, а потом из них выбирать подходящие/лучшие...
|
|
|||||
|
Modus ponens
|
Можно каждой карте прописать потенциальные выигрышные вариации. Т.е. для карты "валет пик" потенциальными выигрышными вариацияму будут "дама пик" и "десятка пик", и проверять наличие потенциальных выигрышных вариантов (ну и помечать те, которые уже проверены). Я, к сожалению, не знаю правил покера, поэтому мне сложно предложить что-то более конкретное, но в принципе, для такого типа игр, в общем, оно бы работало, но может есть более простой способ.
__________________
Hell is the possibility of sanity |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Ваша комбинация "улица" по русски называется "стрейт" или "стрит" и это не от слова "street", а от слова "straight"
__________________
Отряд Котовскага |
|
|||||
|
Регистрация: Jun 2011
Сообщений: 20
|
Котяра, ну я в покер учился играть еще в 7 лет, тогда я не знал таких сложных слов как "straight". "street" мне было понятней ) Поетому по привычке и называю так... )
wvxvw, да ну тогда уж проще все таки просто делать сортировку по возрастанию и смотреть есть ли там идущие подряд карты.. Просто странно что нет каких то готовых решений, ведь я не первый кто пишет покер. Ну или если они и есть, то все самописные, которые в паблик не стремятся выкладывать... |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:09. |
|
|
« Предыдущая тема | Следующая тема » |
|
|