Что нового

Автоматизация Шашки, создание алгоритма бота-противника

moooe

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

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

Разработан интересный рекурсивный алгоритм поиска пути фишки (ставим шашку в конец хода, а AutoIt рассчитает траекторию движения через любое количество фишек).
Заложены функции сохранения/загрузки игровой доски. Мой особый программный фетиш - вся игра в одном .exe файле. Загрузка графики без промежуточных файлов, непосредственно в ОЗУ.

Безымянный.png
 

Вложения

  • Checkers.au3
    15.9 КБ · Просмотры: 20
  • Icons_raw.au3
    98.9 КБ · Просмотры: 13

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Касаемо бота противника думаю пытаться явно описать алгоритм принятия решений с помощью какой либо жестко заданной логики - не имеет особого смысла.
Вся суть игры сводится к банальному набору исходных данных в виде массива из 64 ячеек (поле 8х8), где каждая ячейка исходного набора данных может иметь значение 0(пустая), 1(белый игрок), 2(черный игрок) и у этого набор исходных данных есть 1 наилчуший ход (пусть даже их больше, хватит одного)
Наилучший ход можно представить другим массив из 64 ячеек где одна ячейка, откуда был совершен ход уже равна 0, а в ту ячейку куда совершен ход записано значение 0 или 1 в зависимости от того какой цвет шашки.
Полюбому существуют готовые базы данных с каким-либо аналогичным или приводимым к такому виду набором ходов лучших матчей за какой-то период лет.

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

Далее когда будет понятно что машина одупляет происходящее, её уже можно будет обучать с учетом наличия на поле дамок.
 

tablo21

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

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

Разработан интересный рекурсивный алгоритм поиска пути фишки (ставим шашку в конец хода, а AutoIt рассчитает траекторию движения через любое количество фишек).
Заложены функции сохранения/загрузки игровой доски. Мой особый программный фетиш - вся игра в одном .exe файле. Загрузка графики без промежуточных файлов, непосредственно в ОЗУ.

Посмотреть вложение 3598

прежде чем писать алгоритм бота противника. вы разберитесь с логикой работы вашего скрипта т.к. он не работает по правилам игры!
пруф https://cloud.mail.ru/public/3kUN/4NR7Z3CHF
 
Автор
M

moooe

Новичок
Сообщения
5
Репутация
0
Посмотрел видео, не нашел ошибку в логике. О какой проблеме идет речь?
 
Верх