На этом уроке мы создадим функцию, которая будет проверять, может ли фигура сходить так, как её попросят - то есть реализовать алгоритмы передвижения для каждой фигуры
Дата отправки отчёта:
10 августа 2018 г.
Задание выполнено: за
3 дня 17 мин.
Чему научился:
Созданы функции can_move() и is_correct_move(). Модифицирована mark_moves_from
Что было сложным:
Что должно быть в алгоритме is_correct_move Приоритетная проверка - если после хода, нашему королю остается шах, ход невозможен. Возможно, другой функцией проверять? В самом конце, если после любого хода шах остается, проверяем , а шах ли нам до хода, если нет, то это пат, зовем судью и фиксируем ничью, если шах есть, то нам мат, сдаемся, расходимся. Определяем какой фигурой ходим. Затем проверки для каждой фигуры: Король. До восьми клеток вокруг - своих пропускаем, врага съедаем, доп проверка на возможность рокировок. Ладья, проверяем горизонталь и вертикаль, до встречи со своими или с врагом, своих отбрасываем, врага бьем. Проверяем рокировку. Слон то же что и ладья, но диагонали вместо горизонталей и вертикалей, и не нужна проверка рокировок. Ферзь - это слон, стоящий на ладье, но не нужна проверка рокировок. Конь, проверка до 8 полей по букве Гэ. Пешка - три поля: вверх, если там пусто, вверх влево, если там враг, вверх вправо, если там враг. Если в начальной позиции, и впереди 2 пустых поля, то вперед на 2. И проверка взятия на проходе.
Прочитал я это все, и мысли уже потерялись в середине... Про шах, мат и пат - там по правилам, если шах - то нужно отойти/закрыться или срубить фигуру, которая шахует. Зачем проверять, остался шах после предыдущего хода или нет? Про пат - тут если король не может сходить, то это еще не пат, есть другие фигуры. Или опять очень сложное предложение и не так понял...
Проверка шаха, это, в том числе, случаи, когда шаха не было, а пошла связанная фигура. Фигура может идти по своему правилу, но проверка шаха этот ход отбросит. Слово "остается" не нравится? Ну может быть, не остается, а "есть". Отойти, закрыться, срубить - это ничего не требуется делать, всего лишь проверка после хода, а есть ли теперь шах. Если есть, ход отброшен. Пат - та же логика, все ходы перебраны(не только короля), шах после всех, тогда если шаха не было, то пат.
Отчёт оценивали: 17947. Dmitry Sinitsin+13922. Александр+116218. Дмитрий+1791. Валерий Жданов+119525. Александр Балбашов+19014. Николай Денисов+117606. Виктор+17645. Александр Львович+16452. Кирилл Шмойлов+11. Евгений Волосатов+1459. Сергей Сергеевич+118493. Evgenii Kudriavtcev+19752. chokayes+17652. Петя+16203. Николай Миролюбов+117255. Слава+1
Начинаем практику по языку C#
Чтобы стать хорошим программистом — нужно писать программы.
На нашем сайте очень много практических упражнений.
После заполнения формы ты будешь подписан на рассылку
«C# Вебинары и Видеоуроки»,
у тебя появится доступ к видеоурокам и консольным задачам.
Несколько раз в неделю тебе будут приходить письма —
приглашения на вебинары, информация об акциях и скидках,
полезная информация по C#.
Научился: Научился писать функции проверки хода Трудности: Не запутаться в циклах, потом понял всё Идём дальше, уже с нетерпением ожидаю реализовать алгоритмы)
Научился: Добавил функцию can_move, которая проверяет возможен ли ход из одной клетки в другую. Сделал заглушку для функции is_correct_move, которая проверяет корректность хода по шахматным правилам.