{"id":13753,"url":"\/distributions\/13753\/click?bit=1&hash=71c4aec1d0d36c3e02bbee27c7077bb451b2e126ca03b4970b80229e13d4831f","title":"\u0420\u0430\u0437\u0431\u043e\u0440: \u0431\u0440\u0430\u0437\u0438\u043b\u044c\u0441\u043a\u0430\u044f \u0431\u0438\u0440\u0436\u0430 \u0434\u043b\u044f \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0432\u0435\u0441\u0442\u043e\u0440\u0430","buttonText":"\u0427\u0438\u0442\u0430\u0442\u044c","imageUuid":"ba7ce226-a103-5c8d-a1ed-0b3694458099","isPaidAndBannersEnabled":false}

Программирование на языке Prolog для искуственного интеллекта 1: игра в шашки с компьютером

Игра в шашки с компьютером не "ново". Но мне захотелось написать ее на языке Пролог, который, как раз, и предназначен для решения задач связанных с Искусственным Интеллектом (англ. AI). Кроме того программа запускается в приложении работающем на смартфоне (Андроид), что для многих может иметь удобство.

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

Общий алгоритм программы следующий: а1) первым ходит игрок. Он вводит, в консоли, ход шашкой, например: b6-a5;

а2) сначала проверяется нет ли "ударных" ходов и является ли данный ход одним из них. Если нет, тогда - правилен ли данный простой ход;

а3) ход сделан. В консоль выводится сообщение, что игрок сходил и текущее положение шашек на доске;

а4) проверяется: не является ли данный ход выигрышным для игрока (то-есть на доске шашек компьютера не осталось) или у компьютера зажаты шашки, так что он не может ходить, что тоже является выигрышем;

б1) ходит компьютер. Сначала компьютер ищет в комбинациях, по данной позиции, лучший ход;

б2) если нет, тогда проверяет: нет ли ударных ходов. Если есть, просчитывает какой шашкой лучше бить, где больше выигрыша и мень потерь (для этого я использовал вычисление "стоимости" каждого хода);

б3) если нет ударных ходов, тогда думает какой шашкой лучше ходить. Думает на шаг вперед, то-есть: если сходить такой-то шашкой попадут ли свои шашки под удар и какой из этого исход;

б4) ход сделан. В консоль выводится сообщение, что компьютер сделал такой-то ход и выводится текущее положение шашек на доске;

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

Вот, вкратце, весь алгоритм программы.

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

Программа по шашкам и файл с комбинациями находятся здесь: https://yadi.sk/d/VySvBx5CxxoMGA.

Файл с комбинациями (Combs.txt) нужно скопировать в папку Download внутренней памяти.

Приложение для данной программы, Prolog Classic на андроид, находится здесь: https://yadi.sk/d/dEcW3dQE_DU2Dw.

После установки приложения необходимо зайти в Настройки приложений и для данного приложения дать разрешение на работу с памятью.

Книга по Прологу, в классическом варианте, находится здесь: https://yadi.sk/d/8WKBcqJBIysUYw.

Моя почта: [email protected]

0
1 комментарий
Елевферий Мирон
Автор

Правильная ссылка на приложение «Prolog Classic»: https://disk.yandex.ru/d/5ED-43Uveub1ew

Ответить
Развернуть ветку
Читать все 1 комментарий
null