Мат Конём и Слоном
0.0 (0 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
3 students enrolled

Мат Конём и Слоном

Создание базы правильных ходов для шахмат
0.0 (0 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
3 students enrolled
Last updated 1/2019
Russian
Current price: $104.99 Original price: $149.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 5.5 hours on-demand video
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Алгоритм поиска всех матовых комбинаций
  • Создание базы оптимальных ходов в шахматах
  • Алгоритм возврата на один ход и создание дерева поиска
Course content
Expand all 16 lectures 05:39:32
+ Шахматные правила
9 lectures 02:37:59

Мы начинаем видеокурс "Мат конём и слоном". Цель курса — создать базу решений этой задачи. То есть, для любой исходной комбинации найти правильный ход, который ведёт к победе. 

Самостоятельное задание:

  1. Нарисовать необычный мат конём и слоном.

  2. Приложить фото/скриншот составленного мата.

Preview 09:59

На этом уроке мы создадим вложенные циклы для перебора всех возможных вариантов расстановки наших фигур на шахматной доске.

Самостоятельное задание:

  1. Составить 4 вложенных цикла.

  2. Создать метод getxy ().

  3. Написать все условия с проверками.

  4. * Проверить, не находятся ли короли на соседних клетках.

  5. * Написать в отчёте суммарное количество позиций.

Перебор всех комбинаций
20:57

На этом уроке мы проверим, стоят ли короли на соседних клетках. Потом мы напишем заготовку для проверки, является ли позиция матовой.

Самостоятельное задание:

  1. Написать метод  onKing(byte x, byte y).

  2. Написать заготовку метода isCheckmate (byte x, byte y).

  3. Написать метод проверки хода коня onKnight ().

  4. *При желании написать проверку для слона.

Королевское правило
17:11

На этом уроке мы напишем метод, который проверяет, рубит ли конь указанное поле. Алгоритм в этом методе не сложный. Также мы напишем метод формирования нотации Форсайта-Эдвардса по имеющимся координатам четырёх фигур.

Самостоятельное задание:

  1. Написать метод onKnight(byte x, byte y) без ошибок.

  2. Найти количество матовых позиций двумя конями и королём.

  3. Почитать про Нотацию Форсайта-Эдвардса в википедии.

  4. * Написать метод string getFEN ().

Конь ходит буквой "Гэ"
11:52

На этом уроке мы научимся экспортировать найденные позиции в FEN код, чтобы посмотреть их в любом шахматном эмуляторе, а также напишем метод проверки для слона: бьёт ли он поле.

Самостоятельное задание:

  1. Написать метод string getFEN().

  2. Найти матовые комбинации для двух коней.

  3. Выбрать самые интересные и приложить к отчёту.

  4. * Написать метод проверки хода слона onBishop ().

Нотация Форсайта-Эдвардса
15:16

На этом уроке мы наконец-таки завершим написание метода bool onBishop (byte x, byte y) и

подсчитаем количество матовых позиций, а в конце урока блеснём использованием итератора :)

Самостоятельное задание:

  1. Написать метод bool onBishop (byte x, byte y)

  2. Посмотреть найденные позиции через FEN-эмулятор

  3. Приложить скриншот матовой позиции.

  4. придумать структуру для хранения найденных позиций и описать её в комментариях к отчёту.

Ворошиловский слон
24:08

На этом уроке мы подготовимся к рефакторингу нашего кода.

Самостоятельное задание:

  1. Создать две структуры.

Две структуры
11:33

На этом уроке мы сделаем рефакторинг всего кода. В конце урока будем искать ошибку :)

Самостоятельное задание:

  1. Рефакторить весь код.

  2. Найти ошибку.

Рефакторинг кода
36:35

На этом уроке мы перенесём метод getBoard() и getFEN() в структуру Combo, найдём последнюю ошибку и порадуемся чистому коду!

Самостоятельное задание: 

  1. Перенести методы в структуру.

  2. Порадоваться чистому коду.

Чистый ход
10:28
+ Поиск правильных ходов
7 lectures 03:01:33

На этом уроке мы составим псевдо-алгоритм поиска всех решений поставленной задачи. Самостоятельное задание — проработать алгоритм на шахматной доске для ферзя и короля.

Самостоятельное задание: 

  1. Составить блок-схему описанного алгоритма.

  2. Проиграть алгоритм на несколько ходов для мата ферзём и королём.

Preview 28:26

На этом уроке мы начнём реализацию алгоритма перебора всех позиций с правильными ходами за белых. Создадим ещё две структуры и две очереди — белую и чёрную.

Самостоятельное задание:

  1. Создать ещё две структуры.

  2. Описать две очереди.

  3. Написать первую часть алгоритма.

Белая и чёрная очередь
16:33

На этом уроке мы напишем три метода, которые возвращают все возможные ходы для каждой белой фигуры — для короля, слона и коня. В конце урока выведем все позиции, в которых белые ставят мат в один ход.

Самостоятельное задание:

  1. Создать три метода, по одному для каждой фигуры.

  2. Пересмотреть позиции "мат в один ход".

Генерация белых ходов
35:08

На этом уроке мы создадим класс WhiteBox для хранения всех позиций, где ход белых с правильным ходом для приближения к мату.

Самостоятельное задание:

  1. Создать класс WhiteBox.

Белая коробка
16:37

На этом уроке мы напишем метод print() для вывода шахматной доски в консоли.

Самостоятельное задание:

  1. Написать метод print().

  2. Подобрать хорошие цвета.

Консольная шахматная доска
10:00

На этом уроке мы допишем алгоритм, узнаем, какая в нём есть ошибка,

исправим её и найдём все позиции "мат в полтора хода", их будет 156.

Примечание.

В функции AllBlackBackMoves() допущена ошибка — чёрный король может "случайно" съесть белую фигуру. Чтобы не допустить таких ходов, необходимо добавить две проверки:

    if (blackKing == white.combo.whiteBishop) continue;

    if (blackKing == white.combo.whiteKnight) continue;

Самостоятельное задание:

  1. Дописать алгоритм.

  2. Исправить ошибку.

  3. Пересмотреть матовые позиции.

156 матов в полтора хода
30:01

На этом уроке мы поместим два цикла в один общий цикл, чтобы сгенерировать решения для всех позиций, постепенно увеличивая дистанцию до матового окончания.

Что ещё можно и нужно сделать.

0. Проверить, нет ли патовых ситуаций.

1. Пересмотреть все позиции, для которых нет решения.

2. Изменить массив белого ящик, координата слона от 0 до 31.

3. Модифицировать алгоритм, чтобы он работал для черно-польного слона.

4. Сделать симметрию относительно белого короля в квадрате 4х4.

5. Пересмотреть самые сложные позиции - мат в 67 полу-ходов.

6. Придумать эффективный способ хранения для белого ящика.

7. Решить задачу "мат двумя слонами".

8. Решить задачу "мат ладьёй".

9. Решить задачу "мат ферзём".


Самостоятельное задание:

  1. Найти все решения шахматной задачи со слоном и конём.

  2. Поиграть с компьютером и получить мат.

  3. Выполнить дополнительные задания.

  4. Отчитаться в комментариях о том, какие дополнительные задания сделаны вами.

Мат в 33 хода
44:48
Requirements
  • Уверенное знание основ языка программирования C#
  • Свободное владение циклами, массивами, объектами
  • Поиск ошибок в режиме отладки - debugging
  • Знание правил игры в шахматы
Description

На этом курсе мы найдём полное решение шахматной задачи - Мат Конём и Слоном

Умение создавать свои алгоритмы - это залог успеха программиста. Именно алгоритмическое мышление отделяет обычного программиста от профессионала. Программист должен уметь составить алгоритм для решения любой задачи. Как минимум - обычным перебором. Как максимум - с оптимизацией по времени и по памяти. Решение шахматной задачи - наиболее интересный и эффективный способ потренироваться в этом.

Мы с вами напишем алгоритм комплексного, полного решения поставленной шахматной задачи. В результате у нас будет создана база правильных ходов для любой позиции.

Для решения этой задачи мы сначала найдём все матовые позиции, из которых будем делать по одному ходу назад, пока не наполним базу всеми возможными шахматными позициями.

В процессе решения этой задачи мы на практике увидим применение теории алгоритмов, комбинаторики и методов динамического программирования.

Who this course is for:
  • программисты
  • студенты
  • инженеры
  • шахматисты