Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > как гаучить Ai играть в Дурака |
Автор: asmdzen 16.4.2013, 15:18 |
Привет всем! В общем ситуация такая, есть готовая игра в дурака, есть класс типа бот которому доступны все данные игры - карты на руках, карты в колоде, функционал для определения карт которыми можно ходить. Задача состоит в том чтобы определить наиболее предпочтительную карту для совершения текущего хода. Прошу совета как можно это дело более выгодно реализовать. идеи: создавать древо всех возможных ходов на данном этапе, выбирать наиболее подходящий по каким-то критериям. (не нащел как отредактировать название темы) |
Автор: dershokus 18.4.2013, 10:18 |
Теория игр? |
Автор: Lukkoye 18.4.2013, 13:31 |
Тут есть масса вариантов, от продвинутых: типа использование генетических алгоритмов, до простейших, типа использования готовых техник-стратегий. Я бы реализовал сначала простое: техники-стратегии, а уже потом, если ещё будет нужно - реализовывал бы сложное. Стратегии: ну представь себе, что в карты играешь ты, а не компьютер. Каким образом ты выбираешь карты? Если проанализировать принципы выбора в той или иной ситуации, то окажется, что таких ситуаций не так уж и много, и у них у всех есть свои критерии. Например: Общая стратегия: вытягивать из противника сильные карты, что бы к концу игры он остался со слабыми. Эта задача разбивается на подзадачи: 1. В первую очередь избавляться от самых слабых карт. 2. По возможности копить козырей 3. Если на столе лежит много слабых карт - можно добить противника козырем, что бы противник нахапал слабых карт. 4. критерий слабости карты - количество карт, способных её побить. и тд. В конечном счете, важно просто понять принцип выигрышной стратегии самой игры в дурака. И реализовать её. Ну а там, как карта ляжет. Во всяком случае играть компьютер сможет не хуже, чем при стандартной игре не особо вникающих в игру людей. В качестве бонуса: прогноз карт на руках противника, шансы получить более сильную карту, и иметь на руках более сильный расклад. Компьютер может пропасти отбой, и в концу игры знать расклад игроков. |
Автор: asmdzen 19.4.2013, 12:43 |
Lukkoye, спасибо, нужен был взгляд извне ) отбой мне запоминать не надо, я и так вижу все карты. стратегии у меня уже были, только на более низком уровне, типа дать карту которую он не сможет побить, но я не додумался о вытягивании больших карт и пихании слабых ) |
Автор: math64 20.4.2013, 08:49 |
А вот все карты ИИ видеть не должен - должен сам запоминать какие карты получили другие игроки, иначе нечестно будет. Отбой лучше тоже запоминать - если будешь выделять отдельным модулем, сервер не должен выдавать информацию об отбое. |
Автор: asmdzen 20.4.2013, 08:57 |
math64, я не говорил что прога моя ) я пишу для нее бот, так получилось что у него есть доступ ко всему. |
Автор: kolesnle 21.4.2013, 11:38 |
Смотри про http://ru.wikipedia.org/wiki/%D0%98%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C ![]() |