Poker Assistant v1.0
21.01.2008 Понедельник 07:51
Моё увлечение покером приняло совсем изощрённый характер и перешло в новое качество. В процессе игры приходится постоянно прикидывать какова вероятность прихода благоприятной карты или какова вероятность наличия более высокой комбинации у соперника по игре. Одновременно с этими мыслями мне стала приходить в голову ещё одна мысль, не попробовать ли автоматизировать процесс оценки вероятностей. Решил я эту мысль проверить. Запустил Visual Studio и стал набирать буквы. И вот что получилось спустя примерно неделю:
Кликабельно, 1024 x 768
Прога с зелёными буковками на чёрном фоне называется "Poker Assistant" и делает следующее. Определяет имеющуюся комбинацию карт ("руку"), определяет все возможные комбинации карт у соперников и рассчитывает вероятности каждой возможной комбинации, а также вычисляет общую вероятность наличия у соперников более высокой комбинации чем есть у нас.
Работа состояла из двух крупных частей. Во-первых, надо было написать собственно расчёт вероятностей. Во-вторых, создать интерфейс с покерным приложением (в данном случае используется EuroPoker). Для решения второй задачи пришлось даже написать хоть и примитивненькую, но таки функцию распознавания образов для определения карт по их изображениям. В принципе, прога рассчитывает ещё и функцию распределения вероятностей улучшения/ухудшения оценки ситуации при раздаче следующей карты. Но эта функция получилась довольно ресурсоёмкой по части времени выполнения, поэтому пока пришлось её отключить до оптимизации.
На самом деле, не могу сказать, что программа в том виде, в котором она сейчас существует, очень полезна. Анализировать все эти вероятности в процессе игры, которая обычно идёт довольно динамично, не особо получается. Было бы гораздо удобнее если бы вместо циферок прога просто выдала рекомендации — пассануть, заколлить или сделать ставку (с рекомендуемым размером ставки). Но это следующий шаг. Собственно говоря, самая логичная окончательная ипостась Poker Assistant'а — покерный бот, который играл бы сам. А чё, было бы прикольно, поставил его на ночь, а утром перевёл на Web Money пару сотен баксов. :)
P.S. Сначала хотел сократить название программы до "Poker Ass".
21.01.2008 Понедельник 11:57
Ну ты монстр
Я понимаю прогу написать, но еще и распознавание образов туда прикрутить!!!
21.01.2008 Понедельник 15:27
Пришлось написать. :) Я сначала пытался вручную вводить карты в процессе игры, но это оказалось совершенно нереальным — не хватало времени, отведённого на ход, на то, чтобы ввести карты, получить результат расчёта, проанализировать его и собственно сделать ход.
22.01.2008 Вторник 00:57
Хи. А не проще было как-то снять данные о картах с провода? Хотя они шифруются, наверное...
22.01.2008 Вторник 01:08
> А не проще было как-то снять данные о картах с провода?
С провода? Это же как-то надо сетевой трафик перехватывать, видимо. И находить в нём свои пакеты. И интерпретировать их содержимое. Навскидку, распознавание всё же легче. В принципе там алгоритм-то элементарный — для каждого символа (а их 17, четыре масти и тринадцать карт) задаются несколько характерных точек и потом ищутся в картинке с покерного окошка. Если 90 процентов точек совпало — символ найден. Рабоает прекрасно.
23.01.2008 Среда 19:25
Прекрасно — может быть. Но неэстетично. :) А трафик перехватывать — ну, да. Там же небось HTTP. Если HTTP — значит можно прокси указать. Если можно указать прокси, значит ничего не надо перехватывать, и так все в клювике принесут. :)
24.01.2008 Четверг 05:34
Хм, ну тоже вариант конечно.