Блэкджек — это популярная во всём мире карточная игра, известная также как «Двадцать одно». Цель игры — обыграть дилера, набрав больше очков, чем дилер, но не превысив 21. В нашем наборе инструментов мы реализуем простую версию блэкджека. В каждом раунде у игрока есть только два варианта действий: «взять карту» (hit) и «остаться» (stand), завершая ход. Игрок «перебирает», если его сумма превышает 21 очко. После того как игрок завершает свои ходы (выбирает stand и не перебирает), дилер открывает свою скрытую карту и берёт карты до тех пор, пока не наберёт минимум 17 очков.
В этой игрушечной среде мы кодируем состояние как массив [score игрока, score дилера], где score игрока — это очки, полученные игроком на данный момент, а score дилера — это значение карты, которая открыта у дилера.
В простом блэкджеке есть два действия, которые кодируются следующим образом:
ID действия | Действие |
---|---|
0 | взять карту |
1 | остаться |
Игрок может получить вознаграждение -1 (проиграть), 0 (ничья) или 1 (победа) в конце игры.
Ледук Холдем — это уменьшенная версия лимитированного Техасского Холдема (впервые представленная в статье «Блеф Байеса: моделирование оппонентов в покере»). Колода состоит всего из двух пар короля, дамы и валета, всего шесть карт. Каждая игра проводится с двумя игроками, двумя раундами, максимальным размером ставки в два шага и повышением ставок на 2 и 4 в первом и втором раунде соответственно. В первом раунде один игрок случайным образом ставит 1 единицу в банк в качестве малого блайнда, а другой ставит 2 единицы в качестве большого блайнда. Каждому игроку сдаётся по одной карте, после чего начинается ставка. Первым действует игрок с малым блайндом. Во втором раунде сначала открывается одна общая карта, затем игроки снова делают ставки. Наконец, выигрывает тот игрок, чья рука имеет тот же ранг, что и общая карта. Если ничья, то выигрывает тот, у кого ранг выше. Другие правила, такие как «фолд», можно найти в игре «Лимитированный Техасский Холдем».
Состояние кодируется как вектор длиной 36. Первые 3 элемента соответствуют картам руки. Следующие 3 элемента соответствуют общей карте. Последние 30 элементов соответствуют фишкам текущего игрока и оппонента (фишки могут быть в диапазоне от 0 до 14). Соответствие между индексом и картой выглядит следующим образом.
Индекс | Значение |
---|---|
0~2 | J ~ K в руке |
3~5 | J ~ K как общая карта |
6~20 | 0 ~ 14 фишек для текущего игрока |
21~35 | 0 ~ 14 фишек для оппонента |
Кодирование действий такое же, как и в игре «Лимит Холдем».
Выплата рассчитывается аналогично игре «Лимит Холдем».
Техасский Холдем — популярная игра со ставками. Каждому игроку раздаются две закрытые карты, называемые карманными картами. Затем выкладываются пять общих карт в три этапа (флоп, терн и ривер). Каждый игрок ищет пять лучших карт среди карманных карт и общих карт. Есть четыре раунда ставок. В каждом раунде каждый игрок может выбрать «колл», «чек», «рейз» или «фолд».
В фиксированном лимитном Техасском Холдеме каждый игрок может выбирать только фиксированную сумму рейза. И в каждом раунде количество повышений ограничено четырьмя.
Состояние кодируется как вектор длины 72. Первые 52 элемента представляют карты, где каждый элемент соответствует одной карте. Рука представлена двумя карманными картами плюс наблюдаемыми общими картами на данный момент. Последние 20 элементов... История ставок. Соответствие между индексом и картой следующее:
Индекс | Значение |
---|---|
0~12 | Пиковая A ~ Пиковая K |
13~25 | Червовая A ~ Червовая K |
26~38 | Бубновая A ~ Бубновая K |
39~51 | Трефовая A ~ Трефовая K |
52~56 | Повышение номера в первом раунде |
57~61 | Повышение номера во втором раунде |
62~66 | Повышение номера в третьем раунде |
67~71 | Повышение номера в четвёртом раунде |
Кодирование действий в лимитном техасском холдеме Существует 4 действия в лимитном техасском холдеме. Они кодируются следующим образом:
Идентификатор действия | Действие |
---|---|
0 | Кол (Call) |
1 | Рейз (Raise) |
2 | Фолд (Fold) |
3 | Чек (Check) |
Выигрыш в лимитном техасском холдеме. Стандартной единицей измерения, используемой в литературе, является миллибиг блайнды за руку (mbb/h). В наборе инструментов вознаграждение рассчитывается на основе больших блайндов за руку. Например, вознаграждение в размере 0,5 (-0,5) означает, что игрок выигрывает (проигрывает) 0,5 от суммы большого блайнда.
Ду дичжу — одна из самых популярных китайских карточных игр с сотнями миллионов игроков. В неё играют три человека одной колодой из 54 карт, включая красного джокера и чёрного джокера. После торгов один игрок становится «хозяином», который может получить дополнительные три карты, а два других становятся «крестьянами», которые объединяются, чтобы сразиться с хозяином. В каждом раунде игры первый игрок должен сыграть карту или комбинацию, а остальные два игрока могут решить, следовать ли им или «пропустить». Раунд заканчивается, если два последовательных игрока выбирают «пропуск». Игрок, сыгравший карты самого высокого ранга, будет первым играть в следующем раунде. Цель игры — стать первым игроком, который избавится от всех карт на руках. Для получения более подробной информации о правилах см. Википедию или Байкэ.
В наборе инструментов мы реализуем стандартную версию Ду дичжу. На этапе торгов мы эвристически назначаем одного из игроков «хозяином». В частности, мы подсчитываем количество ключевых карт или комбинаций (карты высокого ранга и бомбы), и игрок с самой сильной рукой выбирается как «хозяин».
На каждом этапе принятия решения соответствующий игрок сможет наблюдать текущее состояние (или информационный набор в игре с несовершенной информацией). Состояние состоит из всей информации, которую игрок может наблюдать со своей точки зрения. Мы кодируем информацию в читаемый словарь Python. Следующая таблица показывает структуру состояния:
Ключ | Описание | Пример значения |
---|---|---|
seen_cards | Три закрытые карты, распределённые хозяину после торгов. Затем эти карты будут обнародованы всем игрокам. | TQA |
landlord | Идентификатор хозяина | 0 |
self | Идентификатор текущего игрока | 2 |
trace | А В новой версии RLCard мы понимаем, что действия не нужно абстрагировать. Вместо этого мы можем извлечь характеристики действий и сделать их входными данными. Таким образом, агент сможет эффективно рассуждать о большом пространстве действий. |
Аналогично кодированию состояний каждое действие кодируется в 54-мерный одномерный вектор.
Если арендодатель первым избавится от всех карт у себя на руках, он выиграет и получит награду 1. Два крестьянина проиграют и получат награду 0. Аналогично, если один из крестьян первым избавится от всех карт на руке, оба крестьянина выиграют и получат награду 1. Арендодатель проиграет и получит награду 0.
Маджонг — это игра на основе плиток, разработанная в Китае и распространившаяся по всему миру с XX века. Обычно в неё играют 4 игрока. Игра ведётся с использованием набора из 136 плиток. По очереди игроки берут и сбрасывают плитки, пока...
Цель игры состоит в том, чтобы собрать законную комбинацию, используя 14-ю вытянутую плитку для формирования 4 наборов и пары. Мы пересмотрели игру в упрощённой версии, где все выигрышные наборы равны, и игрок выигрывает, как только собирает 4 набора и пару. Пожалуйста, обратитесь к деталям на Wikipedia или Baike.
Представление состояния маджонга кодируется как 6 плоскостей характеристик, где каждая плоскость имеет 34 X 4 измерения. Для каждой плоскости столбец плоскости указывает количество карт в заданном наборе карт, а строка плоскости представляет каждый вид карт (пожалуйста, обратитесь к таблице пространства действий). Закодированная информация может быть представлена следующим образом:
Плоскость | Характеристика |
---|---|
0 | Карты в руке текущего игрока |
1 | Сыгранные карты на столе |
2–5 | Общедоступные стопки каждого игрока |
В маджонге есть 38 действий.
Идентификатор действия | Действие |
---|---|
0–8 | Бамбук-1 — Бамбук-9 |
9–17 | Персонажи-1 — Персонаж-9 |
18–26 | Точки-1 — Точки-9 |
27 | Драконы-зелёные |
28 | Драконы-красные |
29 | Драконы-белые |
30 | Ветры-восток |
31 | Ветры-запад |
32 | Ветры-север |
33 | Ветры-юг |
34 | Понг |
35 | Чоу |
36 | Гонг |
37 | Стенд |
Награда рассчитывается по конечному состоянию игры, где выигравшему игроку присуждается 1, проигравшим игрокам — -1. И если никто не выигрывает в игре, то награда всех игроков будет равна 0.
Безлимитный Техасский Холдем имеет схожие... Представление состояния игры Uno
В игре Uno состояние кодируется в 4 плоскости признаков. Размер каждой плоскости — 4*15. Номер строки 4 означает четыре цвета. Номер столбца 15 означает 10 числовых карт от 0 до 9 и 5 специальных карт: «Дикий», «Дикий взять четыре», «Пропустить ход», «Взять две карты» и «Обратить ход». Каждая запись плоскости может быть равна 1 или 0. Обратите внимание, что текущий метод кодирования является лишь примером того, как можно закодировать функцию. Пример закодированных плоскостей приведён ниже:
Плоскость | Функция |
---|---|
0-2 | Рука |
3 | Цель |
Мы используем 3 плоскости для представления руки игроков. В частности, плоскости 0–2 представляют 0 карт, 1 карту и 2 карты соответственно. Плоскости 4–6 такие же.
Кодирование действий в Uno
Всего в Uno 61 действие. Они кодируются следующим образом. Подробное сопоставление действия и его идентификатора приведено в rlcard/games/uno/jsondata/action_space.json:
Идентификатор действия | Действие |
---|---|
0~9 | Красные числовые карты от 0 до 9 |
10~12 | Красные карты действий: пропустить ход, обратить ход, взять две карты |
13 | Красная карта «дикий» |
14 | Красная карта «дикий взять четыре» |
15~24 | Зелёные числовые карты от 0 до 9 |
25~27 | Зелёные карты действий: пропустить ход, обратить ход, взять две карты |
28 | Зелёная карта «дикий» |
29 | Зелёная карта «дикий взять четыре» |
30~39 | Синие числовые карты от 0 до 9 |
40~42 | Синие карты действий: пропустить ход, обратить ход, взять две карты |
43 | Синяя карта «дикий» |
44 | Синяя карта «дикий взять четыре» |
45~54 | Жёлтые числовые карты от 0 до 9 |
55~57 | Жёлтые карты действий: пропустить ход, обратить ход, взять две карты |
58 | Жёлтая карта «дикий» |
59 | Жёлтая карта «дикий взять четыре» |
60 | Взять карту |
Вознаграждение в Uno
Каждый игрок получит вознаграждение -1 (проигрыш) или 1 (выигрыш) в конце игры.
Gin Rummy — популярная карточная игра для двух человек с использованием обычной колоды из 52 карт (туз считается низкой картой). Дилер раздаёт своему противнику 11 карт и себе 10 карт. Каждый игрок пытается собрать комбинации из 3+ карт одного ранга или 3+ последовательных карт одной масти. Если количество неподходящих карт («мертвых» карт) меньше или равно 10, игрок может сбросить карты. Если все карты можно собрать в комбинации, игрок может выиграть. Подробнее см. на Wikipedia.
Если игрок сбрасывает карты или выигрывает, раунд заканчивается, каждый игрок выкладывает свои комбинации, и подсчитываются очки. Если игрок сбрасывает карты, противник может выложить некоторые из своих «мертвых» карт, если они дополняют комбинации сбросившего игрока. Очки — это разница между количеством «мертвых» карт у двух игроков. Если значение положительное, его получает игрок, закончивший раунд. В противном случае, если значение равно нулю или отрицательное, противник перебил игрока, закончившего раунд, и получает значение очков плюс бонус за перебивку в размере 25 очков.
Первым сбрасывает не дилер (или сбрасывает, если может). Если игрок не сбросил карты и не выиграл, следующий игрок может взять сброс или взять карту из закрытой стопки. Он может сбросить и закончить раунд, в этом случае раунд завершается. В противном случае он должен сбросить, и следующий игрок продолжает игру таким же образом. Если стопка уменьшается до двух карт, то раунд объявляется завершенным и очки не начисляются. Из AS в KC
Информация, которая была закодирована, может быть представлена следующим образом:
План | Характеристика |
---|---|
0 | карты в руке текущего игрока |
1 | верхняя карта колоды сброса |
2 | мёртвые карты: карты в колоде сброса (исключая верхнюю карту) |
3 | известные карты противника: карты, взятые из колоды сброса, но не сброшенные |
4 | неизвестные карты: карты из запаса или в руке противника (но не известные) |
В Gin Rummy существует 110 действий.
Идентификатор действия | Действие |
---|---|
0 | score_player_0_action |
1 | score_player_1_action |
2 | draw_card_action |
3 | pick_up_discard_action |
4 | declare_dead_hand_action |
5 | gin_action |
6 - 57 | discard_action |
58 - 109 | knock_action |
Вознаграждение рассчитывается по конечному состоянию игры. Обратите внимание, что вознаграждение отличается от вознаграждения в стандартной игре. Игрок, который выигрывает, получает 1 очко. Игрок, который стучит, получает 0,2 очка. Проигрывающий игрок наказывается отрицательным значением его счёта мёртвых карт, разделённым на 100.
Если рука объявлена мёртвой, оба игрока наказываются отрицательным значением их счёта мёртвых карт, разделённым на 100.
Можно установить следующие параметры.
Параметр | Значение по умолчанию |
---|---|
dealer_for_round | DealerForRound.Random |
stockpile_dead_card_count | 2 |
going_out_deadwood_count | 10 |
max_drawn_card_count | 52 |
max_move_count | 200 |
is_allowed_knock | True |
is_allowed_gin | True |
is_allowed_pick_up_discard | True |
is_allowed_to_discard_picked_up_card | False |
is_always_knock | False |
is_south_never_knocks | False |
Обратите внимание: max_move_count предотвращает неограниченное количество ходов в игре.
Можно создать варианты, которые легче тренировать, изменяя параметры и указывая различные методы подсчёта очков.
Бридж — популярная карточная игра для четырёх человек с использованием обычной колоды из 52 карт (туз считается старшей картой). Игроки Север и Юг являются партнёрами против партнёрства игроков Восток и Запад. Дилер раздаёт по 13 карт всем четырём игрокам. Происходит раунд торгов, чтобы определить контракт на количество взяток, которое должен выиграть декларант с указанным козырем (или без козыря). После завершения торгов разыгрываются 13 взяток, чтобы посмотреть, выполнен ли контракт. Во время розыгрыша взятки манекен (партнёр декларанта) показывает свою руку всем. Декларант играет картами из руки манекена.
Пожалуйста, обратитесь к деталям на Википедии.
Я предпочитаю вариант Чикаго, а не Резиновый Бридж. Пожалуйста, обратитесь к деталям на сайте Pagat.
Представление состояния Бриджа кодируется следующим образом:
Ключ | Размер | Описание |
---|---|---|
hands_rep |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )