У меня проблема с написанием ИИ для игры (например, tron lightcycles). Я пишу всю графику и движения на C с помощью ncurses. Теперь мне нужно написать ai бота на прологе. Я использую пролог swi.
Я сохраняю текущее игровое поле (всю матрицу), текущую позицию человека и текущую позицию бота (например, ячейки матрицы i, j). Они сохраняют как предикаты в файле .pl из c.
Мое игровое поле представляет собой матрицу, содержащую 1 и 0 (1 - посещено, 0 - не посещено). Нравится:
human_current_position(0,1).
bot_current_position(1,2).
matrix([[1,1,0,0],
[1,1,1,0],
[0,0,0,0],
[0,0,0,0]]).
Затем мне нужно проанализировать эту матрицу, например:
analyze(matrix).
Таким образом, функция анализа в прологе вернет некоторое направление (влево, вниз, вверх или вправо), сохраненное в файл, и моя программа c прочитает этот файл и переместит бота.
Итак, у меня вопрос - как я могу проанализировать эту матрицу на Прологе. Я читал что-то об алгоритме min-max, но не могу понять это на Prolog. Может ли кто-нибудь помочь или показать направление, как заставить работать алгоритм min max с моей матрицей и текущими позициями в Prolog?