Author Topic: Помогите с ботом для покера.  (Read 11443 times)

0 Members and 1 Guest are viewing this topic.

dmutruk

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Re: Помогите с ботом для покера.
« Reply #30 on: January 15, 2016, 03:26:36 PM »
Quote
Для стрита ещё можно возвращать номер комбинации 1-9
5.1 - старшая карта  шестёрка
5.2 - старшая карта семёрка
...
5.9 - старшая карта туз

Если так и делать, то стритов 10
От туза до 5
от 2 до 6
от 3 до 7
и т.д до туза.
Но все же считаю это лишним. Так как для сравнения еще и возможных комбинаций у противников надо морочить голову. На первоначальном этапе было бы достаточно просто определять комбо, без их ранга. Выпал стрит, действуем по условию стрита, флеш - по условию флеша. А возвращать ранг комбинации просто для информативности - лишнее. имхо

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите с ботом для покера.
« Reply #31 on: January 15, 2016, 04:35:04 PM »
Но у меня пока проблема возникла. Туз может быть как самая маленькая карта в стрите (Туз-2-3-4-5)так же и как самая большая в стрите (10-валет-дама-король-туз). Туз у нас число 14, как его сделать, чтобы туз был числом 1 в первом стрите и 14 во втором? И когда в руке туз-2, действовало по варианту 6-7 или король-туз по вариантам 4-5, в зависимости от масти?
Так с логикой действий то ладно, ты определение комбинаций сделал?

По тузу можно так...
Если в картах есть туз, модуль/подпрограмма определения стрита вызывается 2 раза
В первый раз ей передаётся туз как 14, во второй раз как 2.
После первого раза номер комбо один, после второго другой. Точнее не номер, а его расширение.


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите с ботом для покера.
« Reply #32 on: January 15, 2016, 04:37:53 PM »
Если так и делать, то стритов 10
От туза до 5
от 2 до 6
от 3 до 7
и т.д до туза.
Но все же считаю это лишним. Так как для сравнения еще и возможных комбинаций у противников надо морочить голову. На первоначальном этапе было бы достаточно просто определять комбо, без их ранга. Выпал стрит, действуем по условию стрита, флеш - по условию флеша. А возвращать ранг комбинации просто для информативности - лишнее. имхо
Я позже от этого варианта отказался. Лучше пусть модуль его считает и возвращает в дополнительных переменных.
Но они нужны тебе не только для противников. А вот "...Если обе карты выше 10..."


dmutruk

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Re: Помогите с ботом для покера.
« Reply #33 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.
« Last Edit: January 15, 2016, 05:53:54 PM by dmutruk »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите с ботом для покера.
« Reply #34 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 включительно(ПАРА)


dmutruk

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Re: Помогите с ботом для покера.
« Reply #35 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 Слабые карты - Сбрасываем

Луций

  • Активный участник
  • ***
  • Posts: 248
  • чат в телеге: https://t.me/klickermannchat
    • View Profile
    • Пишу скрипты на заказ:
Re: Помогите с ботом для покера.
« Reply #36 on: January 18, 2016, 12:46:44 PM »
неужели кто то наконец то взялся за покер

есть предложение адаптировать бота под покерстарс и рубить бабки лопатой

dmutruk

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Re: Помогите с ботом для покера.
« Reply #37 on: January 18, 2016, 01:56:16 PM »
Quote
есть предложение адаптировать бота под покерстарс и рубить бабки лопатой
Адаптацией под нужный рум будет заниматься каждый пользователь сам.
Нужно создать общий алгоритм распознания комбинаций.

dmutruk

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Re: Помогите с ботом для покера.
« Reply #38 on: January 18, 2016, 04:11:18 PM »
Quote
Такой бот прокатит там, где народ просто приятно проводит время ничем не рискуя.
Какой "такой"? Прописать распознание комбинаций и все!!!
Дальше каждый будет сам под себя алгоритм игры думать, когда играть, когда нет, когда в олл-ин, а когда блефануть. И только тогда уже можно делать выводу, годится ВАША версия для игры на деньги или нет.

Doda

  • Guest
Re: Помогите с ботом для покера.
« Reply #39 on: January 18, 2016, 05:00:31 PM »
распознавание всех возможных комбинаций - с учетомом  карт на руках+столе+ возможной комбинации  если не зашли карты. ну а бот не отличается человека) если человек не может грести лопатой деньги, то бот и подавно! как успехи у вас?