Путем путь назад (думают 20 + годы) я встретился с игровым исходным кодом Gomoku в журнале, который я ввел для своего компьютера и хорошо провел время с.
У игры было трудно выиграть, но основной алгоритм для компьютера AI был действительно просто и не составлял много кода. Интересно, знает ли кто-либо этот алгоритм и имеет некоторые ссылки на некоторый источник или теорию об этом.
Вещи, которые я помню, состояли в том, что это в основном выделило массив, который покрыл всю плату. Затем каждый раз, когда я или это, поместил часть, это добавит много весов ко всем местоположениям на плате, на которую возможно повлияла бы часть.
Например (отмечают, что веса являются определенно неправильными, поскольку я не помню их):
1 1 1
2 2 2
3 3 3
444
1234X4321
3 3 3
2 2 2
1 1 1
Затем это просто просканировало массив для открывать отделения с самым низким или самым высоким значением.
Вещи я нечеток на:
Это звонит в звонок с кем-либо вообще? Кто-либо получил что-нибудь, что поможет?
Прочитав ваше описание и немного подумав, я думаю, что это, вероятно, работает с одним массивом, именно так, как вы описали.
Для достижения цели «пять в ряд» вы должны (а) не допустить успеха соперника и (б) добиться успеха самому.
Чтобы добиться успеха, вы должны размещать камни рядом с другими камнями, которые у вас уже есть на доске, поэтому имеет смысл добавить положительный счет для полей рядом с вашими камнями, которые могут участвовать в ряду. Либо приведенный вами линейный пример, либо что-то квадратное, вероятно, подойдет.
Чтобы помешать вашему противнику добиться успеха, вы должны положить камни рядом с его / ее камнями. Это особенно хорошо, если вы ударите двух зайцев одним камнем, поэтому камни противника должны увеличивать ценность окружающих полей так же, как и ваши - чем больше камней он уже выстроил в ряд, тем выше оценка и тем больше вероятность того, что алгоритм попытается отрезать противника.
Самым важным здесь является взвешивание различных полей, а также то, имеют ли камни противника другой вес, чем ваш.К сожалению, я не могу с этим помочь, но значения должны быть достаточно простыми, чтобы их можно было вычислить методом проб и ошибок, как только сама игра будет написана.
Однако это очень простой подход, и алгоритм поиска по дереву его превосходит по производительности. При поиске в Google есть похожая статья о поиске угроз , которая, по-видимому, хорошо работает для Gomoku. Однако статья скрывается за стеной выплат: /
Я не читал статью, но, судя по описанию, я думаю, что это какая-то форма алгоритма Minimax
Это древняя игра - я нашел код на Planet Source Code . Я играл в эту игру во время учебы в колледже, и за 286 дней у меня была БАЗОВАЯ версия.