AI Algorithm Design: карточная игра - PullRequest
4 голосов
/ 16 мая 2011

В настоящее время я работаю над реализацией испанской карточной игры под названием Briscas или Briscola, http://en.wikipedia.org/wiki/Briscola

В двух словах, это карточная игра, в которой две команды по 2 игрока играют друг против друга (они могутне видеть руки друг друга, даже членов команды), только в начале перемешиваются карты, затем каждому игроку вручаются три карты.По часовой стрелке каждый бросает одну карту, чтобы попытаться выиграть этот ход.Кто победит в этом ходу, тот и заберет очки.Затем, по-прежнему по часовой стрелке, игрок, выигравший последний раунд, берет карту с верха колоды, игрока рядом с ним слева и так далее.Тогда вы будете продолжать играть раундами, пока колода не опустеет.Кто когда-либо набирает больше очков, тот выигрывает.

Детали:

Размер колоды: 40
Игроки: 4 (2 команды по 2)
Карты имеют определенную ценность.(от 0 до 11)

Вопрос

Я знаю, что прямой MiniMax будет дорогим.Какие алгоритмы обычно используются для таких карточных игр?Также любая литература, на которую вы можете указать, также будет полезна.

Спасибо

1 Ответ

1 голос
/ 17 мая 2011

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

Тогда вам нужен быстрый и, следовательно, простой, модельный плеер.

У этой модели игрока не будет времени для расчета форварда. Он может реагировать только на предварительно определенное состояние. Итак, ваш первый шаг - построить достаточно хорошее игровое состояние. Состояние игры должно включать вашу руку и некоторую статистику истории того, какие карты были сброшены, и, возможно, как игроки сыграли свои руки.

Далее вы строите модель игрока, который действует на государство. Или

A) напишите один от руки, который играет согласно некоторой эвристике, которую вы определяете. Но запомните - пока нет тяжелых расчетов!

В) написать общий проигрыватель, но не указывать константы и предельные значения. Используйте свой механизм моделирования и генетические алгоритмы с выбором турнира, чтобы получить хорошие параметры для указанных значений. Для получения бонусных баллов развивайте своих игроков по две команды, чтобы они хорошо дополняли друг друга.

С) используйте еще больше искусственного интеллекта и позвольте системе генетического программирования (есть несколько зрелых. Найдите такую, которая может проводить турниры. Вы даже можете реализовать ее самостоятельно, но давайте не будем увлекаться :) напишите для вас весь плеер, используя ваше состояние в качестве ввода.

Следующий шаг:

Либо у вас уже есть отличный игрок, и вы можете считать себя готовым, либо вы хотите улучшить его. Если ты хочешь сделать это лучше, удачи тебе!

Используйте симуляцию Монте-Карло, чтобы разыграть большое количество рук, причем каждый из ваших выборов находится в определенной ситуации (если я правильно понимаю, всегда есть три варианта). Пусть ваш модельный игрок принимает решения каждый раз, когда у вас есть выбор, и пусть ваш симулятор Монте-Карло случайным образом перетасовывает колоду каждый раз, когда вы играете в симуляцию.

Теперь у вас должен быть отличный карточный игрок!

...