Как мы можем реализовать Искусственный интеллект в играх Javascript? - PullRequest
4 голосов
/ 01 февраля 2011

Я работаю над настольной игрой для двух игроков на html5 / JavaScript. версия для двух игроков почти завершена. Я хочу добавить режим одиночной игры, где компьютер будет противником. эта игра будет играть в одном браузере (без интеграции на стороне сервера).

Я новичок в искусственном интеллекте. я хочу некоторые рекомендации по реализации ИИ в играх JavaScript, с чего мне начать?

пожалуйста, помогите.

Отредактировано: Игра Баг-Чал

Спасибо за ответы: мне удалось внедрить Minimax в багчал-игре. Здесь .

Ответы [ 5 ]

8 голосов
/ 01 февраля 2011

Для Баг-Чал вы можете использовать Минимакс подход с Альфа-бета-отсечкой .

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

С другой стороны, вы можете тренировать настоящий алгоритм ИИ для игры (нейронная сеть, генетический алгоритм и т. Д.), Но этот подход кажется несколько непрактичным для такой игры, как Баг-Чал.

3 голосов
/ 01 февраля 2011

Шаг 1. Изучите (A) JavaScript.

Шаг 2: Изучите (B) алгоритм ИИ для настольной игры.

Шаг 3: Реализация B в A.

Необязательный шаг 4: выберите другую настольную игру; затем перейдите к шагу 2.

2 голосов
/ 02 февраля 2011

Минимакс с альфа-бета-обрезкой, о котором упоминал Лирик, является хорошим началом, но если вы не знакомы с ним, потребуется некоторое время, чтобы обдумать это.

В качестве альтернативы вы можете подумать о том, как бы вы играли в игру, если бы у вас была отличная память, и вы могли бы делать быстрые вычисления и пытаться реализовать это. Преимущество в том, что обычно легче понять.

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

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

1 голос
/ 02 февраля 2011

нет ИИ.еще.Вы можете симулировать способ мышления человека, но вы не можете заставить игру думать вместо вас.и в javasccript все, что вы должны использовать: функции, циклы, переменные, массивы строк.компьютер должен проверить игру в одной точке и рассчитать лучший шаг.например, отсортировать каждое решение по убыванию на одно свойство и добавить увеличение скорости первых десяти элементов.а затем сортируйте по другим и оценивайте снова, и в пару из этих моментов самый высокий оценочный шаг будет лучшим.

другой способ создать выигрышную стратегию, но человеку даже трудно реализовать это в js..

будет лучше, если я расскажу вам пример, все знают, что в игре XOX

есть стол 3х3, и вы должны поставить 3 X или O подряд, чтобы выиграть

_|_|_
_|_|_
 | |

это карта

и это один из способов выиграть

x|o|_
_|x|o
 |o|x

Я думаю, вы помните сейчас.

так что ИИ на сервере

когда пользователь ставит X или O (теперь пользователь X, сервер O), сервер должен рассчитать, насколько отчаянно его ситуация

2 X подряд?если да, то машина должна поместить О в середину или в конец 2 Х.

, если в ряду нет 2 Х, машина должна рассчитать, что где-то есть хитрость?

например

_|x|_
_|_|x
o| |

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

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

что я сначала ищу?Хммм. Сначала я поставил крестик на середину, потому что у него много возможностей.

Самое важное для создания ИИ, вы должны имитировать свой образ мышления.удачи.

1 голос
/ 01 февраля 2011

Я думаю, что вам лучше всего начать с жесткого алгоритма ИИ, то есть противника, который всегда делает одно и то же в данной ситуации.

Чтобы иметь истинный ИИ, вам нужно реализоватьАлгоритм машинного обучения, который отслеживает предыдущие входы и, если это было правильное решение, так что он может стать лучше.Это сделано с чем-то вроде нейронной сети .

...