Модуль проверки правильности хода. Есть такое в природе? Поделитесь ссылкой или самим модулем, если есть. Если нету такового, как его сделать? Кто-нибудь пробовал? Есть мысли по поводу?
Шахматная доска поделена на клетки, у каждой клетки есть координаты. Есть набор фигур. Для каждой фигуры есть правила, по которым она должна ходить... Сделать для каждой фигуры процедуру проверки, адреса процедур в массив - индекс массива - номер фигуры. Каждая из процедур на входе должна иметь 2 параметра - начало, конец хода, выход - возможен ли ход. При чем должна учитыватся занятость ячеек на пути к конечной для некоторых фигур.
cresta Что надо проверить: правилен ли ход с точки зрения "правил игры в шахматы" или с точки зрения "улучшит ли он позицию"?
Всё не так сложно, позицию анализировать не нужно. Просто соблюдение правил хода фигур. Т.е. возможен ли ход в принципе или нет. По ссылке статья интересная, но там анализ автоматов для игры. А на sf нашёл только программы.
[Обозначения: наша фигура - фигура, которой делаем ход. Ход которой и нужно проверить на правильность] Все не очень сложно. Ошибка будет, когда: 0. Траектория хода не соответствует фигуре. 1. Конечная клетка занята своей фигурой. 2. На пути к конечной клетке находится своя или чужая фигура. [Если, конечно, не ходим конем] 3. Шах королю. Т.е. либо король уже под шахом, либо после хода нашей фигурой король попадает под шах. Ну еще нужно не забыть про т.н. "взятие на проходе". Я видел как один шахматист слил партию забыв про это, хотя можно было и выиграть в его ситуации Ну а движки наверняка есть, только я не припомню ни одних OpenSource'эвых шахмат.
Это на первый взгляд просто. Проверки наслаиваются друг на друга (условий достаточно много). А хотелось на халяву... Придётся таки писать самому.