На этом уроке мы реализуем алгоритм взятия на проходе. Для этого мы доработаем ранее созданную заглушку is_pawn_passant(). Добавим вспомогательные переменные для хранения координат возможного взятия на проходе, они нам пригодится на следующем уроке.
Дата отправки отчёта:
17 августа 2018 г.
Задание выполнено: за
2 час. 4 мин.
Чему научился:
Доработал функцию is_pawn_passant()
Что было сложным:
В моем алгоритме взятия на проходе, реализованном на уроке "Судьба пешки", я не брал во внимание сущность "битое поле", а только запоминал в 4-х переменных предыдущий ход соперника (откуда и куда, не важно кем). Алгоритм функции там был таков: 1. Клетка, куда идем, пустая? если нет , то false 2. Модуль разности координат sx-dx равен 1? если нет , то false 3. Координата sy == 4 ? если нет , то false 4. Координата dy == 5 ? если нет , то false 5. Координаты dx и x-откуда предыдущего хода соперника равны? если нет , то false 6. Координаты dx и x-куда предыдущего хода соперника равны? если нет , то false 7. Координата y-откуда предыдущего хода соперника ==6? если нет , то false 8. Координата y-куда предыдущего хода соперника ==4? если нет , то false 9. На клетке [dx, dy-1] стоит пешка? если нет , то false 10. возврат true. Пешка соперника снималась в функции click_box_to() следующим образом: Функция pawn_passant еще раз вызывается, и если она возвращает истину при входных (move_from_x, move_from_y, x , y), то затираем клетку [x, y-1]. Обратите внимание, что в click_box_to координаты move_from_x, move_from_y уже были обновлены к этому моменту. Потому я и вводил 4 переменные для старого хода. Ход сделан, и теперь в конце click_box_to() обновляем эти 4 переменные последнего хода.
Оценка видео-уроку:
Оцени работу
Сохранить страницу:
Отчёт оценивали: 17947. Dmitry Sinitsin+119525. Александр Балбашов+16452. Кирилл Шмойлов+1791. Валерий Жданов+13922. Александр+117606. Виктор+118493. Evgenii Kudriavtcev+110017. Вадим Григорьев+118688. Arslan+17119. Новопашин Владимир+18877. gorynych+110670. Сергей Соколов+119022. Олег Чудновский+18275. Tekashnik+110558. Иван Воронин+116218. Дмитрий+1
Начинаем практику по языку C#
Чтобы стать хорошим программистом — нужно писать программы.
На нашем сайте очень много практических упражнений.
После заполнения формы ты будешь подписан на рассылку
«C# Вебинары и Видеоуроки»,
у тебя появится доступ к видеоурокам и консольным задачам.
Несколько раз в неделю тебе будут приходить письма —
приглашения на вебинары, информация об акциях и скидках,
полезная информация по C#.
Научился: pawn_attack_x && pawn_attack_y предположительно должны устанавливаться для каждой пешки, которая предприняла ход на две клетки
Только в этом случае актуально взятие на проходе и в случае хода на две клетки целесообразно отслеживать, а не вздумает ли кто срубить пешечку en passant
Научился: Прорабатывали "взятие на проходе". Думаю, ещё нужно прописать в необходимых условиях соответствующие действия "Тёмной Стороны" )))
Мы можем бить поле, через которое перескочила пешка противника. Т.к. это может быть только на одной линии, то и в условиях можно указать эту линию "-1" для стартовой позиции хода пешки, т.е. в нашем случае (с белыми): "4".
Т.к. пешка идёт по диагонали, то и смещение по иксу должно быть на единицу.
"Поле атаки" по иксу всегда "5" (шестая линия в массиве), а по игреку совпадает с "dy" атакуемой вражеской пешки.