Автокликер Clickermann :: Форум

Основной раздел => Использование => Topic started by: dmutruk on January 14, 2016, 03:35:43 PM

Title: Помогите с ботом для покера.
Post by: dmutruk on January 14, 2016, 03:35:43 PM
Здравствуйте. С момента моего начала ознакомления с кликером прошло довольно много времени и уже не мало написал скриптов для себя. А вот сейчас застрял((
Пишу бота для техасского холдема.
Карты приходящие в руку (префлоп) отличаются от карт, которые на стол выходят(флоп, терн, ривер).
Решил вместо поиска бмп-шек для каждой карты использовать подсчет пикселей фона в участке где картинка карты. Таким образом я избавился от проблемы, с тем что карты бывают черные и красные.
Потому использую 2 разных набора "колод" (разное кол-во пикселей фона для одной и той же карты в руке и на столе)
Code: (clickermann) [Select]
//ПРЕФЛОП
GETSCREEN(756,418, 792,444)
$Preflop_1 = PXLCOUNT(756,418,773,444, 16777215) // карманная карта 1
$Preflop_2 = PXLCOUNT(775,418,792,444, 16777215) // карманная карта 2
// КОЛИЧЕСТВО ПИКСЕЛЕЙ 16777215 ДЛЯ КАРТ ПРЕФЛОПА
// 2 = 311
// 3 = 320
// 4 = 328
// 5 = 306
// 6 = 285
// 7 = 346
// 8 = 255
// 9 = 279
// 10 = 213
// J  = 323   
// Q = 248
// K = 261
// A = 291

SWITCH($Preflop_1)
// 2
CASE(311)

// 3
CASE(320)

// 4
CASE(328)

// 5
CASE(306)

// 6
CASE(285)

// 7
CASE(346)

// 8
CASE(255)

// 9
CASE(279)

// 10
CASE(213)

// J
CASE(323)

// Q
CASE(248)

// K
CASE(261)

// A
CASE(291)
DEFAULT
// случай по умолчанию

END_SWITCH

SWITCH($Preflop_2)
// 2
CASE(311)

// 3
CASE(320)

// 4
CASE(328)

// 5
CASE(306)

// 6
CASE(285)

// 7
CASE(346)

// 8
CASE(255)

// 9
CASE(279)

// 10
CASE(213)

// J
CASE(323)

// Q
CASE(248)

// K
CASE(261)

// A
CASE(291)
DEFAULT
// случай по умолчанию

END_SWITCH

// ФЛОП
WAITMS(50)
GETSCREEN(501,237,668,270)
$card_1 = PXLCOUNT(501,237,520,270, 16777215)
$card_2 = PXLCOUNT(575,237,594,270, 16777215)
$card_3 = PXLCOUNT(649,237,668,270, 16777215)

// ТЕРН
WAITMS(50)
GETSCREEN(723,237,742,270)
$card_4 = PXLCOUNT(723,237,742,270, 16777215)

//РИВЕР
WAITMS(50)
GETSCREEN(797,237,816,270)
$card_5 = PXLCOUNT(797,237,816,270, 16777215)

WAITMS(50)
LOGWRITE ("Карта_1 = ", $card_1, " Карта_2 = ", $card_2, " Карта_3 = ", $card_3, " Карта_4 = ", $card_4, " Карта_5 = ", $card_5)

WAITMS(50)

// ФЛОП_1
SWITCH($card_1)
// 2
CASE(425)
CASE(426)
CASE(427)

// 3
CASE(429)
CASE(430)
CASE(431)

// 4
CASE(479)
CASE(480)
CASE(481)

// 5
CASE(455)
CASE(456)
CASE(457)

// 6
CASE(412)
CASE(413)
CASE(414)

// 7
CASE(507)
CASE(508)
CASE(509)

// 8
CASE(346)
CASE(347)
CASE(348)

// 9
CASE(403)
CASE(404)
CASE(405)

// 10
CASE(369)
CASE(370)
CASE(371)

// J
CASE(494)
CASE(495)
CASE(496)

// Q
CASE(415)
CASE(416)

// K
CASE(385)
CASE(386)
CASE(387)

// A
CASE(417)
CASE(418)
CASE(419)
DEFAULT
END_SWITCH

// ФЛОП_2
SWITCH($card_2)
// 2
CASE(425)
CASE(426)
CASE(427)

// 3
CASE(429)
CASE(430)
CASE(431)

// 4
CASE(479)
CASE(480)
CASE(481)

// 5
CASE(455)
CASE(456)
CASE(457)

// 6
CASE(412)
CASE(413)
CASE(414)

// 7
CASE(507)
CASE(508)
CASE(509)

// 8
CASE(346)
CASE(347)
CASE(348)

// 9
CASE(403)
CASE(404)
CASE(405)

// 10
CASE(369)
CASE(370)
CASE(371)

// J
CASE(494)
CASE(495)
CASE(496)

// Q
CASE(415)
CASE(416)

// K
CASE(385)
CASE(386)
CASE(387)

// A
CASE(417)
CASE(418)
CASE(419)
DEFAULT
END_SWITCH

// ФЛОП_3
SWITCH($card_3)
// 2
CASE(425)
CASE(426)
CASE(427)

// 3
CASE(429)
CASE(430)
CASE(431)

// 4
CASE(479)
CASE(480)
CASE(481)

// 5
CASE(455)
CASE(456)
CASE(457)

// 6
CASE(412)
CASE(413)
CASE(414)

// 7
CASE(507)
CASE(508)
CASE(509)

// 8
CASE(346)
CASE(347)
CASE(348)

// 9
CASE(403)
CASE(404)
CASE(405)

// 10
CASE(369)
CASE(370)
CASE(371)

// J
CASE(494)
CASE(495)
CASE(496)

// Q
CASE(415)
CASE(416)

// K
CASE(385)
CASE(386)
CASE(387)

// A
CASE(417)
CASE(418)
CASE(419)
DEFAULT
END_SWITCH

// ТЕРН_4
SWITCH($card_4)
// 2
CASE(425)
CASE(426)
CASE(427)

// 3
CASE(429)
CASE(430)
CASE(431)

// 4
CASE(479)
CASE(480)
CASE(481)

// 5
CASE(455)
CASE(456)
CASE(457)

// 6
CASE(412)
CASE(413)
CASE(414)

// 7
CASE(507)
CASE(508)
CASE(509)

// 8
CASE(346)
CASE(347)
CASE(348)

// 9
CASE(403)
CASE(404)
CASE(405)

// 10
CASE(369)
CASE(370)
CASE(371)

// J
CASE(494)
CASE(495)
CASE(496)

// Q
CASE(415)
CASE(416)

// K
CASE(385)
CASE(386)
CASE(387)

// A
CASE(417)
CASE(418)
CASE(419)
DEFAULT
END_SWITCH

// РИВЕР_5
SWITCH($card_5)
// 2
CASE(425)
CASE(426)
CASE(427)

// 3
CASE(429)
CASE(430)
CASE(431)

// 4
CASE(479)
CASE(480)
CASE(481)

// 5
CASE(455)
CASE(456)
CASE(457)

// 6
CASE(412)
CASE(413)
CASE(414)

// 7
CASE(507)
CASE(508)
CASE(509)

// 8
CASE(346)
CASE(347)
CASE(348)

// 9
CASE(403)
CASE(404)
CASE(405)

// 10
CASE(369)
CASE(370)
CASE(371)

// J
CASE(494)
CASE(495)
CASE(496)

// Q
CASE(415)
CASE(416)

// K
CASE(385)
CASE(386)
CASE(387)

// A
CASE(417)
CASE(418)
CASE(419)
DEFAULT
END_SWITCH

Для флопа,терна и ривера почему-то кол-во тех же пикселей иногда скачит -/+ 1 пиксель, потому для каждой карты у меня по 3  CASE'а. Только с дамой и тузом вышло, что между ними нельзя было так сделать, я проверил все позиции дамы и туза и вышло, что у дамы скачит только на -1 от первоначальных данных, а тузу уже свободные 3 "числа" отдал.

Задача в том, что я не могу придумать каким образом обозначить карты или цифрами, или строками, или еще чем-то. Так как комбинаций в покере 10:
// Нет совпадений

// Пара

// Две пары

// Сет

// Стрит

// Флеш

// Фул хаус

// Каре

// Стрит фшел

// Флеш рояль

Но разновидностей того же стрита, не учитывая масть (кстати масть я буду также определять как и саму карту, по кол-ву пикселей фона) от туза до 5, от 3 до 6 и т.д. Помогите советом, ничего пока не приходит толкового и не геморного)

Пока есть идея создать основные 9 шаблонов комбинаций, но как потом подставлять и перебирать не могу придумать.
И самая главная проблема со стритом. Там нужно, чтобы было 5 карт подряд (5,6,7,8,9 - допустим) и нужно задавать карты таким образом, чтобы можно было потом эту зависимость/очередность тоже проверить. Толкните идей, пожалуйста.
Title: Re: Помогите с ботом для покера.
Post by: Vint on January 14, 2016, 04:22:30 PM
Задача в том, что я не могу придумать каким образом обозначить карты или цифрами, или строками, или еще чем-то.

Я бы обозначил цифрами, точнее числами. С числами проще работать и обрабатывать потом. Та же очерёдность или применение CASE

А вот как сделать... Может дробным числом? Вида
масть.номер карты
единицы - это масти.  дробная часть номер карты в сотых от целого

например:
1.02 крестовая двойка
1.05 крестовая пятёрка
1.10 крестовая десятка
1.13 крестовый король
2.13 бубновый король
4.14 пиковый туз

По числу легко определить всё.
По целой части -  масть, по дробной части старшинство карты.

[spoiler]Масти карт не учитываются при определении стар­шинства составленных комбинаций. Но масть карты может определять младшую карту при установке на­чальной ставки (форсид бэт) в стад-покере, а также для определения игрока, который получит нечетную игральную фишку в случае разделения выигрыша между двумя игроками в хай-лоу покере. В этом случае старшинство мастей следующее: пики, черви, бубны, трефы, где пики — старшая масть.[/spoiler]

P.S. Блин, вот тут подумал. Наверно нужно поменять местами целую и дробную части. Ведь чаще прийдётся работать не с мастью, а старшинством карты.

Тогда так:
2.1 двойка крестовая
5.1 пятёрка крестовая
10.1 десятка крестовая
13.1 король крестовый
13.2 король бубновый
14.4 туз пиковый

Тогда простой сортировкой можно их выстроить.
Сравнения старшинства это обычное сравнение <> в условии.
Можно отбрасывать масть применяя INT(), хотя и так всё будет правильно. Масть не повлияет на очерёдность карты.

Для выявления всяких комбинаций можно и хитро условия прописать, а можно и тупо составить массивы с комбинациями.

А можно точно так же, но строками: "14.4". При необходимости переводить в число через ROUND или INT


Например для флеш рояля убеждаемся что дробные части у карт одинаковые.
Запихиваем целые части INT()  в массив $наруках.
Сортируем массив по возрастанию.
Сравниваем либо с эталонным массивом флеш рояля, либо переводим все элементы в одну строку с разделителем и сравниваем с эталонной строкой.
Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 14, 2016, 05:03:22 PM
Ну идея не плохая. Но только я видать чет не понимаю:
Quote
Тогда так:
2.1 двойка крестовая
5.1 пятёрка крестовая
10.1 десятка крестовая
13.1 король крестовый
13.2 король бубновый
14.4 туз пиковый

Тогда если на руках будет:
2.1 двойка крестовая и 5.1 пятёрка крестовая = в сумме дадут 7.2 , а 7.2 - по этой идее это семерка бубновая
Я думал каждой комбинации присвоить цифру, сумма карт должна соответствовать комбинации (но видать я и не могу придумать, потому что так не правильно)
 
Да и как я тогда научу определять флеш? Вить на каждом этапе (даже на префлопе) оно будет искать сразу 7 карт и исходя из полученных результатов определять какая комбинация сейчас есть, на префлопе максимум может быть пара, а дальше вить больше комбинаций.
Или я не правильный алгоритм хочу сделать? Давайте кусочком кода, допустим:
На руках у меня 9 и 10 (Давайте пока без масти)
На стол падает Валет, Дама, Король,Двойка и Пятерка,. Покажите как по ваших идеях определить, что это - стрит.
Title: Re: Помогите с ботом для покера.
Post by: Vint on January 14, 2016, 05:11:56 PM
идея правильная, только зачем нужны дроби? каждая карта трёхзначное число.
Без дробей не получится. Карт одной масти больше 10.

Если ты про первый вариант, то он не подходит. Тяжелей обрабатывать. Легче отбросить интом дробную часть чем считать каждый раз отбрасывая целое
$x - INT($x)
Title: Re: Помогите с ботом для покера.
Post by: Vint on January 14, 2016, 05:13:49 PM
Ну идея не плохая. Но только я видать чет не понимаю:
Quote
Тогда так:
2.1 двойка крестовая
5.1 пятёрка крестовая
10.1 десятка крестовая
13.1 король крестовый
13.2 король бубновый
14.4 туз пиковый

Тогда если на руках будет:
2.1 двойка крестовая и 5.1 пятёрка крестовая = в сумме дадут 7.2 , а 7.2 - по этой идее это семерка бубновая
Я думал каждой комбинации присвоить цифру, сумма карт должна соответствовать комбинации (но видать я и не могу придумать, потому что так не правильно)

Не складывать не выйдет. Нужно сравнивать последовательность с шаблоном.
Ты определись строки будут или числа. Напишу пример  сравнения с шаблоном.
Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 14, 2016, 05:15:45 PM
Quote
Ты определись строки будут или числа. Напишу пример  сравнения с шаблоном.
Всегда писал с числами, с строками не пробовал. Понятнее будет с числами для меня.
Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 14, 2016, 05:40:46 PM
Мне бы для начала научить бота:
Quote
1. наличие комбинации у себя
2. максимально возможная комбинация с учётом карт на столе
3. возможность собрать старшие комбинации, с учётом количества игроков, сброшеных карт, оставшегося количества ходовэ
4. вероятность сбора старших комбинаций другими игроками, с учетом тех же условий.
5. учет поднятия игроками ставок и сброса карт ,общая статистика всех игроков за столом за всю игру и отдельно данная раздача.
6. Учет игровой валюты, за столом, часто можно выиграть если  игрок с лучшей комбинацией имеет малый остаток, а ты просто идёшь вабанк, когда за столом много игроков.
Title: Re: Помогите с ботом для покера.
Post by: Vint on January 14, 2016, 06:03:47 PM
Или я не правильный алгоритм хочу сделать? Давайте кусочком кода, допустим:
На руках у меня 9 и 10 (Давайте пока без масти)
На стол падает Валет, Дама, Король,Двойка и Пятерка,. Покажите как по ваших идеях определить, что это - стрит.

Code: (clickermann) [Select]
// это все семь карт для проверки

$card_1 = 9.1    //  9
$card_2 = 10.1   // 10
$card_3 = 2.3    //  2
$card_4 = 11.3   // валет
$card_5 = 12.3   // дама
$card_6 = 13.3   // король
$card_7 = 5.3    //  5

// загоняем их в массив
ARRPUSH($all, INT($card_1))
ARRPUSH($all, INT($card_2))
ARRPUSH($all, INT($card_3))
ARRPUSH($all, INT($card_4))
ARRPUSH($all, INT($card_5))
ARRPUSH($all, INT($card_6))
ARRPUSH($all, INT($card_7))

// сортируем массив по возрастанию
$len = ARRSIZE($all)
FOR($num=0, $num < $len - 1)
   $min = $all[$num]
   $ind = $num
   FOR($i=($num+1), $i < $len)
      IF($all[$i] < $min)
         $min = $all[$i]
         $ind = $i
      END_IF
   END_CYC
   $minimum =  $all[$ind]
   $all[$ind] = $all[$num]
   $all[$num] = $minimum
END_CYC

// массив в лог
FOR($i=0, $i < ARRSIZE($all))
   LOGWRITE ($all[$i])
END_CYC

// считаем сколько карт есть подряд
$podr = 1
FOR($i=0, $i < $len-1)
   IF($all[$i] = $all[$i+1] - 1)
      INC($podr)
   ELSE
      $podr = 1
   END_IF
   IF($podr = 5)
      $i = 100 // прерываем
   END_IF
LOGWRITE ("подряд карт: ", $podr)   
END_CYC
LOGWRITE ("подряд идущих карт: ", $podr)

HALT
Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 14, 2016, 06:12:14 PM
Vint, спасибо, сейчас буду разбираться и подставлять уже к себе. И масть по такому же принципу потом сделать?
Title: Re: Помогите с ботом для покера.
Post by: Vint on January 14, 2016, 06:23:46 PM
вот тебе определение сколько карт по мастям
Code: (clickermann) [Select]
$card_1 = 9.1    //  9
$card_2 = 10.1   // 10
$card_3 = 2.3    //  2
$card_4 = 11.3   // валет
$card_5 = 12.3   // дама
$card_6 = 13.3   // король
$card_7 = 5.3    //  5

// Флеш (Flush) Пять карт одной масти

// загоняем их в массив
UNDEFINE($all)
ARRPUSH($allm, $card_1)
ARRPUSH($allm, $card_2)
ARRPUSH($allm, $card_3)
ARRPUSH($allm, $card_4)
ARRPUSH($allm, $card_5)
ARRPUSH($allm, $card_6)
ARRPUSH($allm, $card_7)

//массив количества карт по мастям
ARRPUSH($mast_count, 0)
ARRPUSH($mast_count, 0)
ARRPUSH($mast_count, 0)
ARRPUSH($mast_count, 0)

// сколько карт по мастям
FOR($i=0, $i < ARRSIZE($allm))
   $card = $allm[$i]
   $m = ($card - INT($card)) * 10
   $mast_count[$m-1] = $mast_count[$m-1] +1
END_CYC

// массив по мастям в лог
FOR($i=0, $i < ARRSIZE($mast_count))
   LOGWRITE("масть ", $i+1, "  ", $mast_count[$i], " шт.")
END_CYC

// есть ли флеш
FOR($i=0, $i < ARRSIZE($mast_count))
   IF($mast_count[$i] > 4)
      LOGWRITE("есть флеш масти ", $i+1, "  карт ", $mast_count[$i], " шт.")
   END_IF   
END_CYC

HALT
Title: Re: Помогите с ботом для покера.
Post by: Doda on January 14, 2016, 06:25:58 PM
Quote
21:21:28 подряд идущих карт: 5
ух, ты круто! дальше дело за малым
Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 14, 2016, 06:32:15 PM
Огромное спасибо, всегда обходился без массивов. Теперь думаю, зря. Надо и их освоить.
Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 14, 2016, 06:48:42 PM
Изменил немного
Code: (clickermann) [Select]
$card_1 = 5    // 5
$card_2 = 9   // 9
$card_3 = 6    // 6
$card_4 = 11   // валет
$card_5 = 7   // 7
$card_6 = 14   // туз
$card_7 = 0    //  еще не зашла нужная 8

и в итоге
Code: [Select]
17:45:20 0
17:45:20 5
17:45:20 6
17:45:20 7
17:45:20 9
17:45:20 11
17:45:20 14
17:45:20 подряд карт: 1
17:45:20 подряд карт: 2
17:45:20 подряд карт: 3
17:45:20 подряд карт: 1
17:45:20 подряд карт: 1
17:45:20 подряд карт: 1
17:45:20 подряд идущих карт: 1

Как это исправить? Вить когда есть еще шанс на нужную карту можно играть. Тока подумал про это(
Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 14, 2016, 06:53:04 PM
Все таки нужно делать шаблоны и смотреть сколько недостающих карт до комбинаций. И просматривать не 1 шаблон, а все 9 , так как игровых комбинаций 9, не учитывая просто Кикер.
Title: Re: Помогите с ботом для покера.
Post by: Doda on January 14, 2016, 07:18:40 PM
Quote
17:45:20 подряд идущих карт: 1
выдает такой результат потому что  в прошлой ситуации   был стрит и выход из цикла при стрите. а щас выдает в лог последнюю комбинацию
Title: Re: Помогите с ботом для покера.
Post by: Doda on January 14, 2016, 07:30:25 PM
Code: (clickermann) [Select]
// ýòî âñå ñåìü êàðò äëÿ ïðîâåðêè

$card_1 = 5    // 5
$card_2 = 9   // 9
$card_3 = 6    // 6
$card_4 = 11   // ?????
$card_5 = 7   // 7
$card_6 = 14   // ???
$card_7 = 0    //  ??? ?? ????? ?????? 8

// çàãîíÿåì èõ â ìàññèâ
ARRPUSH($all, INT($card_1))
ARRPUSH($all, INT($card_2))
ARRPUSH($all, INT($card_3))
ARRPUSH($all, INT($card_4))
ARRPUSH($all, INT($card_5))
ARRPUSH($all, INT($card_6))
ARRPUSH($all, INT($card_7))

// ñîðòèðóåì ìàññèâ ïî âîçðàñòàíèþ
$len = ARRSIZE($all)
FOR($num=0, $num < $len - 1)
   $min = $all[$num]
   $ind = $num
   FOR($i=($num+1), $i < $len)
      IF($all[$i] < $min)
         $min = $all[$i]
         $ind = $i
      END_IF
   END_CYC
   $minimum =  $all[$ind]
   $all[$ind] = $all[$num]
   $all[$num] = $minimum
END_CYC

// ìàññèâ â ëîã
FOR($i=0, $i < ARRSIZE($all))
   LOGWRITE ($all[$i])
END_CYC

// ñ÷èòàåì ñîëîüá êîëüêî êàðò åñòü ïîäðÿä
$podr = 1
FOR($i=0, $i < $len-1)
   IF($all[$i] = $all[$i+1] - 1)
      INC($podr)
   ELSE
      $podr = 1
   END_IF
   IF($podr = 5)
      $i = 100 // ïðåðûâàåì 
      ARRPUSH($podr, $podr)
   END_IF
   LOGWRITE ("ïîäðÿä êàðò: ", $podr)
ARRPUSH($podr, $podr)
END_CYC
FOR($num=0, $num < ARRSIZE($podr) - 1)
   $man = $podr[$num]
   $ind = $num
   FOR($i=($num+1), $i < ARRSIZE($podr))
      IF($podr[$i] > $man)
         $man = $podr[$i]
         $ind = $i
      END_IF
   END_CYC
LOGWRITE ("ïîäðÿä èäóùèõ êàðò: ", $man)

HALT

22:30:01 0
22:30:01 5
22:30:01 6
22:30:01 7
22:30:01 9
22:30:01 11
22:30:01 14
22:30:01 подряд карт: 1
22:30:01 подряд карт: 2
22:30:01 подряд карт: 3
22:30:01 подряд карт: 1
22:30:01 подряд карт: 1
22:30:01 подряд карт: 1
22:30:01 подряд идущих карт: 3
Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 14, 2016, 07:32:56 PM
Подряд-то 3, но для стрита на столе лежат 4 карты, не хватает карты с середины, восьмерки.
Title: Re: Помогите с ботом для покера.
Post by: Doda on January 14, 2016, 07:39:35 PM
я в покере не шарю восьмерка не зашла, а от кликера что требуется?
Title: Re: Помогите с ботом для покера.
Post by: Золотой on January 14, 2016, 10:08:41 PM
Тему в использование перенесите, напишите под какой сайт пишется, желающих помогать в написании будет гораздо больше, когда есть возможность протестировать скрипт.
Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 15, 2016, 12:47:13 AM
Я прошу помочь с общим алгоритмом для всех. На данный момент делаю под покер-рум 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 карт на стол для всех игроков.
Title: Re: Помогите с ботом для покера.
Post by: Doda on January 15, 2016, 11:55:41 AM
шаблоны замучаешься делать. плюс все массивы.
Вот тебе, как просил) для любой задачи можно продумать алгоритм)
поиск вверх
Quote
14:53:20 0
14:53:20 5
14:53:20 6
14:53:20 7
14:53:20 9
14:53:20 11
14:53:20 14
14:53:20 подряд карт: 1
14:53:20 подряд карт: 2
14:53:20 подряд карт: 3
14:53:20 подряд карт: 1
14:53:20 подряд карт: 1
14:53:20 подряд карт: 1
14:53:20 если выпадет 8, то соберешь стрит
14:53:20 самая большая 3

Code: (clickermann) [Select]
$card_1 = 5    // 5
$card_2 = 9   // 9
$card_3 = 6    // 6
$card_4 = 11   // ?????
$card_5 = 7   // 7
$card_6 = 14   // ???
$card_7 = 0    //  ??? ?? ????? ?????? 8

// caaiiyai eo a iannea
ARRPUSH($all, INT($card_1))
ARRPUSH($all, INT($card_2))
ARRPUSH($all, INT($card_3))
ARRPUSH($all, INT($card_4))
ARRPUSH($all, INT($card_5))
ARRPUSH($all, INT($card_6))
ARRPUSH($all, INT($card_7))

// ni?oe?oai iannea ii aic?anoaie?
$len = ARRSIZE($all)
FOR($num=0, $num < $len - 1)
   $min = $all[$num]
   $ind = $num
   FOR($i=($num+1), $i < $len)
      IF($all[$i] < $min)
         $min = $all[$i]
         $ind = $i
      END_IF
   END_CYC
   $minimum =  $all[$ind]
   $all[$ind] = $all[$num]
   $all[$num] = $minimum
END_CYC

// iannea a eia
FOR($i=0, $i < ARRSIZE($all))
   LOGWRITE ($all[$i])
END_CYC

// карт подряд
$podr = 1
FOR($i=0, $i < $len-1)   //от 0 до макс.элемента массива
   IF($all[$i] = $all[$i+1] - 1)// если итый элемент ментше на единицу последующего
      INC($podr)  //повышаем подр
   ELSE
      $podr = 1                  //иначе подр 1
   END_IF
   IF($podr = 5) //если мобрали стрит, сброс
      $i = 100 // прерываем
      ARRPUSH($podr, $podr) //кидаем в массив подр
   END_IF
   LOGWRITE ("подряд карт: ", $podr)  //пишем после каждой проверки количество карт
   ARRPUSH($podr, $podr)
END_CYC

FOR($num=0, $num < ARRSIZE($podr) - 1)
   $man = $podr[$num] //ман это  итый элемент массива с максималами   знач.комб.
   $ind1 = $num  //инд индекс массива
   FOR($i=($num+1), $i < ARRSIZE($podr))//если следующий элемент больше  предыдущего
      IF($podr[$i] > $man)  //
         $max = $podr[$i]  //то ман
         $ind2 = $i
         
      END_IF
   END_CYC
END_CYC

IF($max = 3) //есть намек на стрит
   $str2=$all[$ind2]             //проверяем 1 пролет  вверх
   $str1=$all[$ind2-2]//здесь вниз
   IF($str2 = $all[$ind2+1] - 2)
      $nado= $all[$ind2]+1      //думаем какое число пропущено
      print("если выпадет ", $nado, ", то соберешь стрит")
   END_IF
   //      IF($str1 = $all[$ind2-4] - 2)
   //         $nado= ($all[$i+1] - 1)       //думаем какое число пропущено
   //      END_IF
   
END_IF

LOGWRITE ("самая большая ", $max)
//задача -  если есть 3 подряд, то анализ,  на пропуск через одну

HALT
Title: Re: Помогите с ботом для покера.
Post by: Doda on January 15, 2016, 12:05:48 PM
А вот поиск комплексный.анализируя любые комбинации где есть 3 последовательные карты мы проверяем,  можем ли мы собрать стрит и  если можем - какие карты остались

Дальше по аналогии - при 4 картах подряд ищем вниз/вверх комбинацию стрит
Code: (clickermann) [Select]
$card_1 = 4    // 5
$card_2 = 8   // 9
$card_3 = 1    // 6
$card_4 = 6   // ?????
$card_5 = 7   // 7
$card_6 = 14   // ???
$card_7 = 0    //  ??? ?? ????? ?????? 8

// caaiiyai eo a iannea
ARRPUSH($all, INT($card_1))
ARRPUSH($all, INT($card_2))
ARRPUSH($all, INT($card_3))
ARRPUSH($all, INT($card_4))
ARRPUSH($all, INT($card_5))
ARRPUSH($all, INT($card_6))
ARRPUSH($all, INT($card_7))

// ni?oe?oai iannea ii aic?anoaie?
$len = ARRSIZE($all)
FOR($num=0, $num < $len - 1)
   $min = $all[$num]
   $ind = $num
   FOR($i=($num+1), $i < $len)
      IF($all[$i] < $min)
         $min = $all[$i]
         $ind = $i
      END_IF
   END_CYC
   $minimum =  $all[$ind]
   $all[$ind] = $all[$num]
   $all[$num] = $minimum
END_CYC

// iannea a eia
FOR($i=0, $i < ARRSIZE($all))
   LOGWRITE ($all[$i])
END_CYC

// карт подряд
$podr = 1
FOR($i=0, $i < $len-1)   //от 0 до макс.элемента массива
   IF($all[$i] = $all[$i+1] - 1)// если итый элемент ментше на единицу последующего
      INC($podr)  //повышаем подр
   ELSE
      $podr = 1                  //иначе подр 1
   END_IF
   IF($podr = 5) //если мобрали стрит, сброс
      $i = 100 // прерываем
      ARRPUSH($podr, $podr) //кидаем в массив подр
   END_IF
   LOGWRITE ("подряд карт: ", $podr)  //пишем после каждой проверки количество карт
   ARRPUSH($podr, $podr)
END_CYC

FOR($num=0, $num < ARRSIZE($podr) - 1)
   $man = $podr[$num] //ман это  итый элемент массива с максималами   знач.комб.
   $ind1 = $num  //инд индекс массива
   FOR($i=($num+1), $i < ARRSIZE($podr))//если следующий элемент больше  предыдущего
      IF($podr[$i] > $man)  //
         $max = $podr[$i]  //то ман
         $ind2 = $i
         
      END_IF
   END_CYC
END_CYC

IF($max = 3) //есть намек на стрит
   $str2=$all[$ind2]             //проверяем 1 пролет  вверх
   $str1=$all[$ind2-2]//здесь вниз
   IF($str2 = $all[$ind2+1] - 2)
      $nado= $all[$ind2]+1      //думаем какое число пропущено
      print("если выпадет ", $nado, ", то соберешь стрит")
   END_IF
   IF($str1 = $all[$ind2-3] + 2)
      $nado= $all[$ind2-2]-1      //думаем какое число пропущено
      print("если выпадет ", $nado, ", то соберешь стрит")
   END_IF
   
END_IF

LOGWRITE ("самая большая ", $max)

LOGWRITE ("самая большая ", $all[$ind2-3])
//задача -  если есть 3 подряд, то анализ,  на пропуск через одну

HALT

Определение недостающих для стрита при комбинации в 4 карты

Code: (clickermann) [Select]
IF($max = 4) //есть намек на стрит
 print("если выпадет ", $all[$ind2]+1, " или ",$all[$ind2-3]-1, ", то соберешь стрит")
   END_IF
   
END_IF
Title: Re: Помогите с ботом для покера.
Post by: Vint on January 15, 2016, 01:10:34 PM
Изменил немного
Code: (clickermann) [Select]
$card_1 = 5    // 5
$card_2 = 9   // 9
$card_3 = 6    // 6
$card_4 = 11   // валет
$card_5 = 7   // 7
$card_6 = 14   // туз
$card_7 = 0    //  еще не зашла нужная 8

и в итоге
Code: [Select]
17:45:20 0
17:45:20 5
17:45:20 6
17:45:20 7
17:45:20 9
17:45:20 11
17:45:20 14
17:45:20 подряд карт: 1
17:45:20 подряд карт: 2
17:45:20 подряд карт: 3
17:45:20 подряд карт: 1
17:45:20 подряд карт: 1
17:45:20 подряд карт: 1
17:45:20 подряд идущих карт: 1

Как это исправить? Вить когда есть еще шанс на нужную карту можно играть. Тока подумал про это(

Ну ты же придумал и ввёл карту с индексом 0. Тем более только что. Почему у меня тогда спрашиваешь.  :)

Этот код был для определения имеющегося стрита. Ничего больше там не написано.
Какой вопрос задавал на такой ответ и получил.
Я же не моделировал все ситуации и код для них не писал.
Title: Re: Помогите с ботом для покера.
Post by: Vint on January 15, 2016, 01:13:25 PM
По выше указанному коду не выйдет научить бота понимать, что у него еще есть шансы для сбора комбинации.
Выше код только определял стрит есть или нет из имеющихся карт.
А так же способы нумеровки карт и некоторые обработки. Пока всё.
Естественно полное определение всех состояний и анализ при скрытых картах нужно писать.
Title: Re: Помогите с ботом для покера.
Post by: Doda on January 15, 2016, 01:16:30 PM
Quote
Естественно полное определение всех состояний и анализ при скрытых картах нужно писать.
там ситуаций миллион! только для стрита 3. сейчас пишу код, когда  есть две пары для стрита
Title: Re: Помогите с ботом для покера.
Post by: Vint on January 15, 2016, 01:28:07 PM
Ну так и не нужно их сравнивать втупую.

Я вот в покере не шарю совсем. Вопрос есть: а зачем мы определяли что у нас есть на стадиях 2 карты... 3 карты...
Это типа можно сказать стоп, у меня и так круто?

Нужно делать два типа анализа ситуации.
Какие комбинации у нас УЖЕ есть с учётом открытых карт.
Какие комбинации у нас могут быть.

Последним нужен "вес". И выстраивать их в порядке убывания веса.
Зачем вес? Ну до одной комбинации нам не хватает 1 карты, а до другой 2, например. Но вторая сильнее если будет собрана.
Если не нужно заглядывать вперёд больше чем на 1 карту, тогда проще.

А вот саму логику хода (или что там делается) это уже смотреть что имеем и что можем иметь и делать выводы.
Здесь "правильного" алгоритма нет. Есть дающие лучший результат по играм и хуже. Это как программы-шахматисты.
Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 15, 2016, 02:22:44 PM
Извиняюсь, если где-то не так выразился и не то спросил. В голове у меня был алгоритм, который оказался не верным. Но в ходе ваших подсказок я понял, что нужно делать совсем иначе. За это большое спасибо.
Quote
Нужно делать два типа анализа ситуации.
Какие комбинации у нас УЖЕ есть с учётом открытых карт.
Какие комбинации у нас могут быть.
Да, вот это как раз в точку.
Quote
Если не нужно заглядывать вперёд больше чем на 1 карту, тогда проще.
Я думаю, что не нужно. Вначале когда на руки дают 2 карты, бот будет играть только с определенными картами. Допустим со всеми картами выше 10 (если обе карты такого ранга), а если они меньше, то можно играть только с  идущими подряд, например, (5,6) или (2,3) . Когда он решит играть дальше, нужно будет оценивать. Но загадывать на 2 карты вперед не нужно, на 1 вполне хватит. Ибо таких ситуаций, когда допустим до стрита не хватает 2 карты, и чтобы из 2 карт зашли обе нужные %-вероятности маленький.
Title: Re: Помогите с ботом для покера.
Post by: Doda on January 15, 2016, 02:29:48 PM
Quote
Вначале когда на руки дают 2 карты, бот будет играть только с определенными картами
Когда выдали -проверить ,есть ли у нас одинаковые номиналы разных мастей, либо пары разных номиналов. если есть - играем. по сути все просто
Title: Re: Помогите с ботом для покера.
Post by: Vint on January 15, 2016, 03:01:10 PM
Ну вот и хорошо.


Будем вызывать подпрограммы:
Code: (clickermann) [Select]
get_combo()              // определяем комбинации которые уже есть
get_combo_virtual()  // определяем комбинации которые могут быть с +1 картой

Эти подпрограммы определяют последовательно все типы комбинаций и возвращают результаты в основной блок в виде переменной $combo и массива $combo_virtual  соответственно.

Переменная комбо содержит код ИМЕЮЩЕЙСЯ СТАРШЕЙ комбинации.
Массив $combo_virtual коды возможных комбинаций.
Если массив пустой то комбинаций нет.


Можно ещё коды комбинаций так же сделать в числовом формате по старшинству. Чем больше число, тем сильнее комбо.

10 - Флеш рояль
9 - Стрит флеш
8 - Каре
7 - Фул хаус
6 - Флеш
5 - Стрит
4 - Сет
3 - Две пары
2 - Пара
1 - Старшая карта

Для стрита ещё можно возвращать номер комбинации 1-9
5.1 - старшая карта  шестёрка
5.2 - старшая карта семёрка
...
5.9 - старшая карта туз

Для пары, тройки и каре возвращать номер старшинства
8.12 - каре дам
4.9  - тройка девяток

Не знаю что делать с двумя парами и фул хаусом...
Можно тогда возвращать только код комбо 1-9, и будут две переменные в которых будут храниться доп параметры.
$k1 и $k2

Мы видим стрит не стрит... и делаем ходы.
А в случае если нам нужно сравнение или узнать какой же у нас фул хаус, то в $k1 будет тип карты которых 3 и в $k2 которых 2
Если просто тройка,  двойка или каре для сравнения будем смотреть только одну переменную $k1 в которой будет тип карты.


Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 15, 2016, 03:09:50 PM
Из первых вариантов от Vint'а делаю сейчас действия при условиях:
1) Если обе карты одного ранга выше 10 включительно (пара) - Повышаем или равняем в случае, если сумма повышения вынуждает нас сделать Ва-банка, на все деньги) Или идем Ва-банк. Рандомно решает.
2) Если обе карты выше 10 включительно и одной масти(но не подряд) - Повышаем или равняем в случае Ва-банка, на все деньги)
3) Если обе карты выше 10 включительно и разной масти(но не подряд) - Равняем ставку, но сбрасываем  в случае Ва-банка, на все деньги)
4) Если карты идут подряд, одной масти, обе выше 10 включительно - Повышаем ставку или в случает Ва-банка  рандомно решаем равнять в или нет.
5) Если карты идут подряд, разной масти, обе выше 10 включительно - Равняем ставку или в случает Ва-банка  рандомно решаем равнять в или нет.
6) Если карты идут подряд, одной масти, обе ниже 10 - Рандомно решаем равнять или повышать ставку. НО сбрасиваем, если для сравнения ставки нужно делать Ва-банк
7) Если карты идут подряд, разной масти, обе ниже 10 - Равняет ставку. НО сбрасиваем, если для сравнения ставки нужно делать Ва-банк

Но у меня пока проблема возникла. Туз может быть как самая маленькая карта в стрите (Туз-2-3-4-5)так же и как самая большая в стрите (10-валет-дама-король-туз). Туз у нас число 14, как его сделать, чтобы туз был числом 1 в первом стрите и 14 во втором? И когда в руке туз-2, действовало по варианту 6-7 или король-туз по вариантам 4-5, в зависимости от масти?
Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 15, 2016, 03:26:36 PM
Quote
Для стрита ещё можно возвращать номер комбинации 1-9
5.1 - старшая карта  шестёрка
5.2 - старшая карта семёрка
...
5.9 - старшая карта туз

Если так и делать, то стритов 10
От туза до 5
от 2 до 6
от 3 до 7
и т.д до туза.
Но все же считаю это лишним. Так как для сравнения еще и возможных комбинаций у противников надо морочить голову. На первоначальном этапе было бы достаточно просто определять комбо, без их ранга. Выпал стрит, действуем по условию стрита, флеш - по условию флеша. А возвращать ранг комбинации просто для информативности - лишнее. имхо
Title: Re: Помогите с ботом для покера.
Post by: Vint on January 15, 2016, 04:35:04 PM
Но у меня пока проблема возникла. Туз может быть как самая маленькая карта в стрите (Туз-2-3-4-5)так же и как самая большая в стрите (10-валет-дама-король-туз). Туз у нас число 14, как его сделать, чтобы туз был числом 1 в первом стрите и 14 во втором? И когда в руке туз-2, действовало по варианту 6-7 или король-туз по вариантам 4-5, в зависимости от масти?
Так с логикой действий то ладно, ты определение комбинаций сделал?

По тузу можно так...
Если в картах есть туз, модуль/подпрограмма определения стрита вызывается 2 раза
В первый раз ей передаётся туз как 14, во второй раз как 2.
После первого раза номер комбо один, после второго другой. Точнее не номер, а его расширение.
Title: Re: Помогите с ботом для покера.
Post by: Vint on January 15, 2016, 04:37:53 PM
Если так и делать, то стритов 10
От туза до 5
от 2 до 6
от 3 до 7
и т.д до туза.
Но все же считаю это лишним. Так как для сравнения еще и возможных комбинаций у противников надо морочить голову. На первоначальном этапе было бы достаточно просто определять комбо, без их ранга. Выпал стрит, действуем по условию стрита, флеш - по условию флеша. А возвращать ранг комбинации просто для информативности - лишнее. имхо
Я позже от этого варианта отказался. Лучше пусть модуль его считает и возвращает в дополнительных переменных.
Но они нужны тебе не только для противников. А вот "...Если обе карты выше 10..."
Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 15, 2016, 05:17:15 PM
Префлоп анализировать я его научил. После того как делаем ход по одному из моих вариантов уже нужно подключать будущие анализаторы комбо.

Code: (clickermann) [Select]
//Префлоп
$card_1 = 9.2   //  9
$card_2 = 9.3  // 10

LOGWRITE ("Карта 1 = ", $card_1, " / ", "Карта 2 = ", $card_2 )


// загоняем их в массив
ARRPUSH($all, INT($card_1))
ARRPUSH($all, INT($card_2))

// сортируем массив по возрастанию
$len = ARRSIZE($all)
FOR($num=0, $num < $len - 1)
   $min = $all[$num]
   $ind = $num
   FOR($i=($num+1), $i < $len)
      IF($all[$i] < $min)
         $min = $all[$i]
         $ind = $i
      END_IF
   END_CYC
   $minimum =  $all[$ind]
   $all[$ind] = $all[$num]
   $all[$num] = $minimum
END_CYC

// ранг меньшей карты в руках
$min_card_preflop_podr = $all[0]

// считаем сколько карт есть подряд
$podr = 1
FOR($i=0, $i < $len-1)
   IF($all[$i] = $all[$i+1] - 1)
      INC($podr)
   ELSE
      $podr = 1
   END_IF
   IF($podr = 5)
      $i = 100 // прерываем
   END_IF
   LOGWRITE ("подряд карт: ", $podr)
END_CYC

// МАСТЬ
UNDEFINE($all)
ARRPUSH($allm, $card_1)
ARRPUSH($allm, $card_2)

//массив количества карт по мастям
ARRPUSH($mast_count, 0)
ARRPUSH($mast_count, 0)
ARRPUSH($mast_count, 0)
ARRPUSH($mast_count, 0)

// сколько карт по мастям
FOR($i=0, $i < ARRSIZE($allm))
   $card = $allm[$i]
   $m = ($card - INT($card)) * 10
   $mast_count[$m-1] = $mast_count[$m-1] +1
END_CYC

// Обе ли карты одной масти
FOR($i=0, $i < ARRSIZE($mast_count))
   IF($mast_count[$i] > 1)
      LOGWRITE("Две карты масти  ", $i+1)
      $mast_preflop = 1
   END_IF
END_CYC

// *****ВАРИАНТЫ ДЕЙСТВИЙ НА ПРЕФЛОПЕ*****

IF(($min_card_preflop_podr < 10) & ($mast_preflop = 1) & ($podr = 2))
   // Вариант 6
   LOGWRITE ("карты идут подряд, одной масти, обе ниже 10")
ELSE
   IF(($min_card_preflop_podr < 10) & ($podr = 2))
      // Вариант 7
      LOGWRITE ("карты идут подряд, разной масти, обе ниже 10")
   ELSE
      IF(($min_card_preflop_podr > 9) & ($mast_preflop = 1) & ($podr = 2))
         // Вариант 4
         LOGWRITE ("карты идут подряд, одной масти, обе выше 10 включительно")
      ELSE
         IF(($min_card_preflop_podr > 9) & ($podr = 2))
            // Вариант 5
            LOGWRITE ("карты идут подряд, разной масти, обе выше 10 включительно")
         ELSE
            IF(($min_card_preflop_podr > 9) & ($mast_preflop = 1))
               // Вариант 2
               LOGWRITE ("обе карты выше 10 включительно и одной масти(но не подряд)")
            ELSE
               IF(INT($card_1) = INT($card_2) & ($min_card_preflop_podr > 9))
                  // Вариант 1
                  LOGWRITE ("обе карты одного ранга выше 10 включительно(ПАРА)")
               ELSE
                  IF($min_card_preflop_podr > 9)
                     // Вариант 3
                     LOGWRITE ("обе карты выше 10 включительно и разной масти(но не подряд)")
                  ELSE
                     // Слабые карты - Сбрасываем
                     LOGWRITE ("Слабые карты - Сбрасываем")
                  END_IF
               END_IF
            END_IF
         END_IF
      END_IF
   END_IF
END_IF
HALT

Вроде работает:
Code: [Select]
16:08:06 Карта 1 = 9.1 / Карта 2 = 8.2
16:08:06 подряд карт: 2
16:08:06 карты идут подряд, разной масти, обе ниже 10

16:09:55 Карта 1 = 9.1 / Карта 2 = 11.2
16:09:55 подряд карт: 1
16:09:55 Слабые карты - Сбрасываем

16:11:58 Карта 1 = 9.1 / Карта 2 = 9.2
16:11:58 подряд карт: 1
16:11:58 обе карты одного ранга выше 10 включительно(ПАРА)

16:15:47 Карта 1 = 11.1 / Карта 2 = 12.2
16:15:47 подряд карт: 2
16:15:47 карты идут подряд, разной масти, обе выше 10 включительно

Сейчас еще подумаю как сюда подставить:
Quote
По тузу можно так...
Если в картах есть туз, модуль/подпрограмма определения стрита вызывается 2 раза
В первый раз ей передаётся туз как 14, во второй раз как 2.
Title: Re: Помогите с ботом для покера.
Post by: Vint on January 15, 2016, 05:45:50 PM
Это точно правильно?
Quote
16:11:58 Карта 1 = 9.1 / Карта 2 = 9.2
16:11:58 подряд карт: 1
16:11:58 обе карты одного ранга выше 10 включительно(ПАРА)
Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 15, 2016, 05:55:42 PM
Quote
Это точно правильно?
Спасибо. Это я увидел сразу и потом исправил, но забыл добавить скобку в условие и не поправилось. Уже поправил там.
теперь:
Code: [Select]
16:55:28 Карта 1 = 9.3 / Карта 2 = 9.2
16:55:28 подряд карт: 1
16:55:28 Слабые карты - Сбрасываем
Title: Re: Помогите с ботом для покера.
Post by: Луций on January 18, 2016, 12:46:44 PM
неужели кто то наконец то взялся за покер

есть предложение адаптировать бота под покерстарс и рубить бабки лопатой
Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 18, 2016, 01:56:16 PM
Quote
есть предложение адаптировать бота под покерстарс и рубить бабки лопатой
Адаптацией под нужный рум будет заниматься каждый пользователь сам.
Нужно создать общий алгоритм распознания комбинаций.
Title: Re: Помогите с ботом для покера.
Post by: dmutruk on January 18, 2016, 04:11:18 PM
Quote
Такой бот прокатит там, где народ просто приятно проводит время ничем не рискуя.
Какой "такой"? Прописать распознание комбинаций и все!!!
Дальше каждый будет сам под себя алгоритм игры думать, когда играть, когда нет, когда в олл-ин, а когда блефануть. И только тогда уже можно делать выводу, годится ВАША версия для игры на деньги или нет.
Title: Re: Помогите с ботом для покера.
Post by: Doda on January 18, 2016, 05:00:31 PM
распознавание всех возможных комбинаций - с учетомом  карт на руках+столе+ возможной комбинации  если не зашли карты. ну а бот не отличается человека) если человек не может грести лопатой деньги, то бот и подавно! как успехи у вас?