На этом уроке мы реализуем функцию doRandMove(), для случайного выбор какой фигурой пойти, Так же столкнём два "рандомайзера" на шахматной доске.
Дата отправки отчёта:
7 марта 2018 г.
Задание выполнено: за
2 час. 23 мин.
Чему научился:
Реализовали функцию случайных ходов. Организовал сражение 2 рандомайзеров. Убедился, что черный рандомайзер играет в шахматы лучше меня. Я таких мудреных комбинаций и не видел. Черные играли крайне агрессивно, слопав почти все белые фигуры, кроме 2 пешек и слона, потеряв всего лишь 2 пешки, 2 ладьи и 1 слона. С последних 2 ходов черных я вообще обалдел: Король белых стоял на своей позиции e1. Черная пешка делает ход b2-b1, превращается в ферзя, шахует белого короля. Королю закрыться нечем, должен уходить. Король не может уйти на f2, т.к. ферзь и черная пешка угрожают, не может на e2, т.к. черный конь бьет. При этом король даже не может подойти к пешке, т.к. связка конь-пешка блокируют сразу 4 клетки в линии. И король делает вынужденный ход - Ke1-d2. И черные тут же двигают пешку c4-c3 и объявляют мат. При этом эта пешка прикрыта сразу ферзем и слоном! И королю уйти некуда, т.к. все 8 (!!!) клеток вокруг под ударом!!!
P.S. Ожидал более бессмысленных ходов от рандомайзера и взаимоуничтожения фигур, а он провел эталонную финальную атаку без лишних ходов. И сантиментов.
Что было сложным:
Курс очень понравился. По отдельности все понятно. Сложно будет разбираться при детальном анализе и попытке сделать сниппеты.
Научился: Рандом ИИ для Шахмат =) Не стал реализовывать все доп. задания из-за отсутствия времени, оно уходит на решение внешних задач, рандомайзера удалось победить быстро, он с первого шага открыл короля, пришлось убрать пару пешек и поставить мат королевой.
Научился: Реализовал функцию doRandMove().
Столкнул ботов между собой.
Назвал функцию в едином стиле с другими функциями: do_rand_move ().
Сделал, чтобы компьютер сам ходил за чёрных.
Трудности: Написать функцию для оценки позиции и сделать выбор лучшего хода - это, конечно, для топ-кодеров задание.
Вот бы курс такой запилили...
Из имеющегося функционала, думаю, доступно одно - если есть мат в один ход, ИИ должен его ставить.