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