На этом уроке мы реализуем функцию is_check(), чтобы король не ходил на клетку, которая под боем.
На время теста вы уберём все пешки и добавим функцию is_check() с генерируемой случайностью шаха для всех фигур на поле.
Дата отправки отчёта:
14 октября 2018 г.
Задание выполнено: за
28 мин.
Чему научился:
* Почему не все ходы доступны - из за (великого корейского) рандома пятая часть ходов не доступна случайным образом. Просто, при вызове функции "ис чек", только четыре из пяти ответов положительны.
Насчёт проверки: проверяем (и запоминаем), где стоит король. Затем, проверяем, может ли какая-либо фигура соперника походить на эту клетку. Если да - сигналим, что щаз будет шах. Проверка выполняется не только после хода (в отношении вражеского короля) но и перед ходом, когда фигура уже выбрана, и нужно понять, поставим ли мы своего короля под угрозу, переместив её (фигуру).
Научился: Доработана функция can_move()
Добавлена функция is_check() Трудности: Не все ходы доступны, так как после условно недоступного хода был бы условный шах королю ходившей стороны.
Мой алгоритм функции is_check() :
условно допустить сделанный ход,
найти координату короля ходившей стороны (она могла поменяться, но не обязательно),
проверить. может ли фигура соперника (Q R B N) пойти на координату с твоим королем, ИЛИ
проверить, может ли пешка соперника побить наискосок координату с твоим королем.
Если оба вопроса ложь, то возвращаем ложь, шаха нет.
Если же координата под боем, возвращаем истину, нашему королю шах.