Курсы по программированию

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

МикроШахматы / Взятие на проходе шустрых пешек

  • На этом уроке мы реализуем алгоритм взятия на проходе.
    Для этого мы доработаем ранее созданную заглушку 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 переменные последнего хода.
  • Оценка видео-уроку:
Отчёт от 18783 за МикроШахматы / Взятие на проходе шустрых пешек




Оцени работу

 
Сохранить страницу:

  • Отчёт оценивали:
    17947Dmitry Sinitsin+1   19525Александр Балбашов+1   6452Кирилл Шмойлов+1   791Валерий Жданов+1   3922Александр+1   17606Виктор+1   18493Evgenii Kudriavtcev+1   10017Вадим Григорьев+1   18688Arslan+1   7119Новопашин Владимир+1   8877gorynych+1   10670Сергей Соколов+1   19022Олег Чудновский+1   8275Tekashnik+1   10558Иван Воронин+1   16218Дмитрий+1  

Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: pawn_attack_x && pawn_attack_y предположительно должны устанавливаться для каждой пешки, которая предприняла ход на две клетки Только в этом случае актуально взятие на проходе и в случае хода на две клетки целесообразно отслеживать, а не вздумает ли кто срубить пешечку en passant



Научился: Прорабатывали "взятие на проходе". Думаю, ещё нужно прописать в необходимых условиях соответствующие действия "Тёмной Стороны" ))) Мы можем бить поле, через которое перескочила пешка противника. Т.к. это может быть только на одной линии, то и в условиях можно указать эту линию "-1" для стартовой позиции хода пешки, т.е. в нашем случае (с белыми): "4". Т.к. пешка идёт по диагонали, то и смещение по иксу должно быть на единицу. "Поле атаки" по иксу всегда "5" (шестая линия в массиве), а по игреку совпадает с "dy" атакуемой вражеской пешки.