Up
Поднял блог и форум, так успешно “убитые” братьями китайцами
Поднял блог и форум, так успешно “убитые” братьями китайцами
Бот должен быть консольным приложением. Ввод/вывод через стандартные потоки ввода/вывода. Все вещественные числа приводятся к целому путем умножения на 100. Т.е. $2.50 передается в виде 250 Бот должен поддерживать следующий список команд
newfixlimit 9 7 // fix limit, за столом 9 игроков, мы на 7 позиции
newpotlimit 9 7 // pot limit
newnolimit 9 7 // no limit
blinds 25 50 // small blind $0.25, big blind $0.50
player 1 Bluffer // имя первого игрока
player 2 Caller17 // имя второго
player 3 HotDog
stack 1 1000 // стек первого игрока $10
stack 2 100 // стек второго $1
blind 1 25 // игрок на sb платит блайнд
blind 2 50 // игрок на bb платит блайнд
blind 5 50 // пятый платит большой блайнд так как сел за стол
preflop Kd Jd // на префлопе нам пришли бубновые король и валет
flop Qd 2h Td // флоп
turn 6с // терн
river Ks // ривер
seatout 3 // третий вышел
fold 3 // третий упал
check 3 // третий чекнул
call 4 50 // четвертый коллирует до $0.50
raise 4 100 // четвертый делает raise до $1.00
showdown 7 Ad Ac // седьмой показывает карты
win 7 500 // седьмой выиграл $5.00
endgame // игра закончена
quit // выход
action // единственная команда на которую бот должен отвечать.
//Возможные ответы fold check call raise
Тут выложил проект C# с простейшим консольным ботом аналогичному SimplePlayer.dll
Подключение бота к серверу производится аналогично подключению Fisher.exe
<?xml version=“1.0” encoding=“utf-8” ?>
<ConsoleBot>
<Executable>
<FilePath>C:\Deneb\Bots\SimpleConsoleBot.exe</FilePath>
<Arguments></Arguments>
<WorkingDirectory>C:\Deneb\Bots</WorkingDirectory>
</Executable>
<Logging enable=“true“>
<FilePath>C:\Deneb\Bots\SimpleConsoleBot.exe</FilePath>
</Logging>
</ConsoleBot>
<seat position=“2” screenName=“C# bot” botName=“Console” settingsFile=“SimpleConsole.xml” />
обратите внимание что бы значение position было уникально в пределах конфига.
Перед этим не забудьте проапдейтить Deneb.rar
Deneb Server является Windows приложением и позволяет писать и тестировать bots для игры Texas Holdem Poker. Более подробное описание можно найти тут.
Хотя я довольно скептически отношусь к сертификации от MS, после многочисленных “пожеланий” и уговариваний со стороны шефа, сдал сегодня экзамен 70-431 (Microsoft SQL Server 2005 Implementation & Maintenance). К которому усиленно готовился последние несколько дней. Прочитал 2 толстенные книги посвященные этому экзамену: первая от Microsoft Press и вторая от Sybex.
В отличии от экзаменов которые я сдавал до сих пор, этот был разбит на две части. Первая часть - это чистая теория (30 вопросов) и вторая часть практическая – 15 simulations. Поскольку с MS SQL 2005 я сталкиваюсь по работе чуть ли не каждый день, то особых трудностей не возникло. Единственное, что меня довольно прикололо, так это тот факт, что все практические задания были из серии “wizard walking”. Сплошное ползание по SQL SMS и кликание чекбоксов, притом что в книге от MS практически ни одного слова о визардах и все примеры делаются в консоли.
Таким образом к моему “портфолио” добавляется еще одна лычка от MS и судя по довольному начальству это не будет моя последняя.
Начал экспериментировать над ботами. Тут же возник вопрос – каким образом оценивать эффективность изменений? Гора цифр является плохим наглядным пособием ![]()
Попробовал импортировать логи в РТ, затем левыми тулзами получать графики. Через некоторое время бросил это занятие – то тулзы не понимали формат базы данных РТ, то надо было экспортировать данные в нужном формате. Много телодвижений вокруг элементарной цели.
Поэтому решил на скорую руку написать тулзу для построения графиков, по своим логам. Через пару часов получился следующий результат:
Кроме того, что бы иметь производить замеры “производительности” того или иного изменения в алгоритме бота, необходимо подавать одни и те же данные данные на вход. Для этого был написана программка генерирующая сет карт. А так же “сервер” был обучен брать карты из заданного сета, а не генерировать их каждый раз случайным образом.
Сегодня выкроил немного времени и отладил batch режим, причесал history к виду, который может быть импортирован poker tracker’ом для дальнейшего анализа. Хотя на данный момент анализировать пока нечего
Итак, представляю вашему вниманию!
В синем углу – 3 маньяка (Maniac1, Maniac2, Maniac3). Вся их тактика состоит в постоянном увеличении ставки и call при невозможности поднять ставку. В красном углу – 3 simple player (player3, player3, Simple player) и игрок (Check1) который платит блайнды и при любом повышении ставки (в данном случае, при наличии маньяков, это происходит постоянно постоянно) делает фолд.
Simple player на префлопе играет высокими парами на рейз, мелкими парами а также suited connectors (ну и еще пара комбинаций) коллт.
После разыгранных 100 рук видим следующую картину:
Все остались “при своих”. Даже чекер (Check1) и тот слил меньше, чем Simple player
Следующим шагом является написание бота который позволяет вручную делать ставки.
после продолжительного молчания связанного с трудностями на работе, семье и тому подобными мелочами, что сопровождают нас всю жизнь, постепенно возвращаюсь к нормальной жизни
Ради эксперимента проинсталлировал Windows Live Writer. Без проблем “подцепился” к своему блогу.
Не смотря на то, что программа находится в бета стадии, все работает вполне стабильно. Кроме этого написано уже довольно большое количество “ништяков”, т.е плагинов. Один их них довольно прилично расскрашивает исходный код:
private void OnElementChanged(BaseElement element) { if (m_LayoutPage != null) { if (m_NodeMap.ContainsKey(element.InternalID)) { Row _row = (Row)m_NodeMap[element.InternalID]; RefreshElementItem(_row, element); } } }
Первый пост. Посмотрим как воспринимается русский язык.