На самом деле, сам пребываю в «пассивном» поиске способов написания.
Единственный способ, который знаю, довольно простой:
Для каждой фигуры определяем вес. (скажем пешка = 1, слон = 3 и так далее.)
Первоначально определяем для каждой клетки ее вес. (здесь стоит сказать, что фигура на крае «карты» всегда менее ценна, чем фигура ближе к центру. Поэтому определяем в соответствие с этими правилами весы клеток на шахматном поле. )
Для некоторых фигур можно определить массив положений (например для пешек — чем ближе к противоположному концу поля -> тем лучше)
Также необходимо определить в виде весов случаи — наша фигура N под ударом противника, наша фигура N под защитой другой нашей фигуры, фигура N съедает фигуру M противника
Окей. С определениями закончили.
Следующий шаг простой — в существующий алгоритм добавляем проверку на ход AI.
Что будет делать AI — в его задачи входит:
1) оценка текущей ситуации на поле (по весам) -> сумма весов
2) Задаем AI брать по очереди каждую фигуру и делать возможный ход -> пересчет весов.
3) Выбор максимального веса.
Из дальнейших улучшений -> после каждой оценки возможного хода — оценка ответного хода человека -> выбор макс по двум оценкам (чем расчет идет «глубже», тем лучше играет AI)
теперь отступление от представленной краткой нотации алгоритма — писал шахматы в виде первой пробы в JS — тогда был ужаснейший код. Представленное в сообщении выше — это переписанный код. Но есть и пример кода (жаль, что он не совсем корректный, но ради интереса попробовать — можно тут
Мне кажется(или я неправильно понимаю) что не все понимают значение блок-схем. В моем понимании блок-схема алгоритма должна показывать Человеку, а не компьютеру принципы действия, она не должна быть привязана к какому либо языку, ведь один алгоритм можно написать на многих языках. А вот как сейчас учат в вузах описывать каждую строчку кода — бред.
В вузах учат оформлять блок-схемы по ГОСТ'у. По крайней мере в моем… И использование в оной привязки к ЯП «жестоко карается».
А по реализации непосредственно уголков — очень иногда сложно понять, как шашка с одного места оказалась в другом — может быть последовательно каждый прыжок «прорисовывать»?
Ну если описывать это на естественном языке, это разрастется до больших размеров. В блок схеме я просто пытался наглядно описать мой алгоритм. Да, было ошибкой вставлять инструкции из JavaScript, лучше было бы в блоках использовать псевдокод.
Игра на JavaScript «Уголки»