# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Мы начинаем видеокурс "Мат конём и слоном". Цель курса - создать базу решений этой задачи. То есть для любой исходной комбинации найти правильный ход, который ведёт к победе. Отчёт отправил: 11589. Yefim Выполнено за 13 дней 20 час. 53 мин. [Показать отчёт] Научился: Составлять позицию мата слоном и конем Сложности: --- |
|||||
2 | Перебор всех комбинаций |
|
|||
На этом уроке мы создадим вложенные циклы для перебора всех возможных вариантов расстановки наших фигур на шахматной доске. Отчёт отправил: 11589. Yefim Выполнено за 1 день 3 час. 35 мин. [Показать отчёт] Научился: Перебирать все комбинации с учетом недопустимости сближения королей. Сложности: Во втором варианте число действительно меньше. Не исключаю, что в моем коде может быть неточность. |
|||||
3 | Королевское правило |
|
|||
На этом уроке мы проверим, стоят ли короли на соседних клетках. Потом мы напишем заготовку для проверки, является ли позиция матовой. Самостоятельное задание - написать функцию onKnight(). При желании написать проверку для слона пока писать не нужно. Отчёт отправил: 11589. Yefim Выполнено за 10 час. 59 мин. [Показать отчёт] Научился: Познакомился с алгоритмом проверки матовой ситуации для нашего случая. Лишний раз убедился, тип byte здесь больше мешает, чем помогает . Сложности: Реализовать функцию OnBishop() |
|||||
4 | Конь ходит буквой Гэ |
|
|||
На этом уроке мы напишем метод, который проверяет, рубит ли конь указанное поле. Алгоритм не сложный. Самостоятельное задание: почитать о Нотации Форсайта — Эдвардса на Википедии. Написать метод формирования этой нотации по имеющимся координатам четырёх фигур. Сайт для чтения FEN: http://www.apronus.com/chess/wbeditor.php Отчёт отправил: 11589. Yefim Выполнено за 1 день 12 час. 16 мин. [Показать отчёт] Научился: Реализовывать метод GetFEN();- Сложности: --- |
|||||
5 | Нотация Форсайта - Эдвардса |
|
|||
На этом уроке мы научимся экспортировать найденные позиции в FEN код, чтобы посмотреть их в любом шахматном эмуляторе. Сайт для чтения FEN: http://www.apronus.com/chess/wbeditor.php Самостоятельное задание: Написать метод проверки для слона, бьёт ли он поле. Отчёт отправил: 11589. Yefim Выполнено за 42 мин. [Показать отчёт] Научился: Функцию getFEN() я написал в предыдущем уроке и она, по признанию Игромистра, не хуже. Сложности: Фразу "невозможно поставить мат 2-мя конями" следует уточнить: "Всегда можно избежать мат2-мя конями" |
|||||
6 | Ворошиловский слон |
|
|||
На этом уроке мы напишем наконец-таки метод bool onBishop (byte x, byte y) и подсчитаем количество матовых позиций. А в конце урока блеснём использованием итератора :) Самостоятельное задание: придумать структуру для хранения найденных позиций и описать её в комментариях к отчёту. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 31 мин. [Показать отчёт] Научился: Реализовывать метод bool OnBishop() Сложности: Понять магию. |
|||||
7 | Две структуры |
|
|||
На этом уроке мы подготовимся к рефакторингу нашего кода.
Отчёт отправил: 11589. Yefim Выполнено за 30 мин. [Показать отчёт] Научился: Создавать 2 структуры Сложности: Все ясно |
|||||
8 | Рефакторинг кода |
|
|||
На этом уроке мы сделаем рефакторинг всего кода. В конце урока будем искать ошибку :) Отчёт отправил: 11589. Yefim Выполнено за 1 день 12 час. 14 мин. [Показать отчёт] Научился: Прекрасный рефакторинг! У меня почему-то получилось 248 Сложности: Найти ошибку |
|||||
9 | Чистый ход |
|
|||
На этом уроке мы перенесём метод getBoard() и getFEN() в структуру Combo, найдём последнюю ошибку и порадуемся чистому коду! Отчёт отправил: 11589. Yefim Выполнено за 8 час. 32 мин. [Показать отчёт] Научился: Рaдоваться чиcтомy кодy. Код не совсем чистый: например в каждой строке типа foreach (Coord whiteKing in AllCoords()) каждый раз вызывается метод AllCoords(). На мой взгляд достаточно определить объект IEnumerable<Coord> All_Coords = AllCoords(); и далее его использовать. Сложности: Все ясно. |
|||||
10 | Псевдо-алгоритм перебора |
|
|||
На этом уроке мы составим псевдо-алгоритм поиска всех решений поставленной задачи. Самостоятельное задание - проработать алгоритм на шахматной доске для ферзя и короля. Отчёт отправил: 11589. Yefim Выполнено за 3 дня 4 час. 37 мин. [Показать отчёт] Научился: Составлять блок схему описанного алгоритма Сложности: Найти время |
|||||
11 | Белая и чёрная очередь |
|
|||
На этом уроке мы начнём реализацию алгоритма перебора всех позиций с правильными ходами за белых. Создадим ещё две структуры и две очереди - белую и чёрную. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 58 мин. [Показать отчёт] Научился: Создавать очереди для белых и черных ходов Сложности: Не удалось реализовать функции ходов для белых фигур |
|||||
12 | Генерация белых ходов |
|
|||
На этом уроке мы напишем три метода, которые возвращают все возможные ходы для каждой белой фигуры - для короля, слона и коня. В конце урока выведем все позиции, в которых белые ставят мат в один ход. Отчёт отправил: 11589. Yefim Выполнено за 1 день 9 час. 6 мин. [Показать отчёт] Научился: Генерировать все возможные ходы белых Сложности: Понять как это все работает! |
|||||
13 | Белая коробка |
|
|||
На этом уроке мы создадим класс WhiteBox для хранения всех позиций, где ход белых с правильным ходом для приближения к мату. Отчёт отправил: 11589. Yefim Выполнено за 17 час. 10 мин. [Показать отчёт] Научился: Сoздавать клaсс WhiteBox. Сложности: У меня почему-то получилось другое число 880, а не 920 как в уроке. Но я проделал интересный тест: создал 2 файла -1-й с повторными позициями и 2-й со списком повторных позиций. Взял первую позицию из 2-го файла и нашел ее дважды в первом файле. На скрине это видно. Однако, вопрос о числах 880 и 920 остается открытым. |
|||||
14 | Консольная шахматная доска |
|
|||
На этом уроке мы напишем метод print() для вывода шахматной доски в консоли. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 17 мин. [Показать отчёт] Научился: Подбирать цвета Сложности: Подбирать цвета. Немного отошел от черно-белого варианта. |
|||||
15 | 156 матов в полтора хода |
|
|||
На этом уроке мы допишем алгоритм, узнаем, какая в нём есть ошибка, исправим её и найдём все позиции "мат в полтора хода", их будет 156. Отчёт отправил: 11589. Yefim Выполнено за 2 час. 56 мин. [Показать отчёт] Научился: Научился находить мат в полтора хода Сложности: не понял замечание о том, что В функции AllBlackBackMoves() допущена ошибка. Эта ошибка в уроке не исправлена? Я внес в программу соответствующие изменения. Установил точки останова, однако, при отработке всех вариантов останова не было. |
|||||
16 | Мат в 33 хода. |
|
|||
На этом уроке мы поместим два цикла в один общий цикл, чтобы сгенерировать решения для всех позиций, постепенно увеличивая дистанцию до матового окончания. Что ещё можно и нужно сделать. 0. Проверить, нет ли патовых ситуаций. 1. Пересмотреть все позиции, для которых нет решения. 2. Изменить массив белого ящик, координата слона от 0 до 31. 3. Модифицировать алгоритм, чтобы он работал для чернопольного слона. 4. Сделать симметрию относительно белого короля в квадрате 4х4. 5. Пересмотреть самые сложные позиции - мат в 67 полуходов. 6. Придумать эффективный способ хранения для белого ящика. 7. Решить задачу "мат двумя слонами". 8. Решить задачу "мат ладьёй". 9. Решить задачу "мат ферзём". Отчёт отправил: 11589. Yefim Выполнено за 2 дня 10 час. 42 мин. [Показать отчёт] Научился: Нaходить всe решения шaхмaтной зaдaчи сo слоном и конём. Сложности: Долго провозился со следующей ошибкой: написал public Combo getCombo(string fen) вместо private Combo getCombo(string fen) в результате никакую позицию программа не могла найти. до сих пор не понимаю, почему так происходит. |
|||||
17 | ПОЛУФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю, ты прошёл ровно половину курса! Приложи фото самых интересных найденных матовых/патовых/иных комбинаций Напиши, нравится ли тебе этот курс, нашёл ли ты здесь то, что ожидал. ... Меж тем сказке далеко до развязки ... Отчёт отправил: 11589. Yefim Выполнено за 1 час. 4 мин. [Показать отчёт] Научился: Этот курс я получил к качестве Бонуса за то, что приобрел курс "Шахматы в сети" с использованием Unity. Приобретенный курс я начал с большим энтузиазмом и в какой-то момент, начал проходить уроки, которые оказались еще не вполне готовыми, так как курс находился еще в стадии разработки. Чтобы не терять время, я переключился на бонусный курс "Мат конём и слоном". С первых же уроков я понял, что курс не для новичков и требует достаточной предварительной подготовки. Поражает обилие нестандартных подходов и довольно нетривиальных алгоритмов. Вообще, мне нравятся шахматы и нравятся изучать алгоритмы. А их сочетание - особое наслаждение. Сложности: Скажу честно, не все прозрачно в этих алгоритмах. Но это лишь повод к тому, что следует через какое-то время к ним вернутся. Оправдал ли курс мои ожидания? Скорее превзошел. Есть только одно пожелание для учета его при составлении новых курсов. Когда излагается код продолжительное время без промежуточной проверки визуальных результатов, очень легко совершить ошибку и не одну и потом долго их искать. Надеюсь - вторая половина курса будет не менее увлекательной. Большое спасибо, Евгений Витольдович, за прекрасный курс! |
|||||
18 | Нано Шахматы |
|
|||
На этом уроке вам будет представлен фотокурс НаноШахматы, который необходимо пройти, для эффектного и логичного завершения этого курса. Отчёт отправил: 11589. Yefim Выполнено за 17 час. 27 мин. [Показать отчёт] Научился: --- Сложности: --- |
|||||
19 | Сериализация матрицы ходов |
|
|||
На этом уроке мы сделаем сериализацию и десериализацию массива WhiteMove[,,,]. Затем обсудим, как можно размер файла уменьшить в 100 раз. Отчёт отправил: 11589. Yefim Выполнено за 49 дней 4 час. 27 мин. [Показать отчёт] Научился: Делать сериализацию и десериализацию Сложности: --- |
|||||
20 | Экономия памяти |
|
|||
На этом уроке мы переделаем класс WhiteBox, теперь для его работы потребуется в несколько раз меньше памяти. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 32 мин. [Показать отчёт] Научился: Создавать методы конвертации типов Сложности: Красивый код получился |
|||||
21 | Шестнадцать мегабайт |
|
|||
На этом уроке мы сохраним базу ходов в 16-мегабайтный файл. Также сделаем считывание из файла и несколько раз поиграем с компьютером, пока он нас не заматует. Отчёт отправил: 11589. Yefim Выполнено за 6 дней 13 час. 6 мин. [Показать отчёт] Научился: Дeлать фyнкцию для консольнoй игры c упpaвлениeм короля. Отличный урок. Действительно удалось поиграть. Сложности: Удалось реализовать случаи, когда чёрный король ходит под шах или пытается выйти за пределы доски. |
|||||
22 | Игра без массива |
|
|||
На этом уроке мы ещё раз переделаем класс WhiteBox, теперь для работы программы НЕ НАДО будет загружать в память весь файл, нужные значения будут загружаться по ходу игры прямо из нужного места в файле. Отчёт отправил: 11589. Yefim Выполнено за 1 день 10 час. 12 мин. [Показать отчёт] Научился: Динамически загружать нужные данные из файла по ходу игры. Отличный урок. Красивый код!!! Сложности: --- |
|||||
23 | План визуализации |
|
|||
С этого урока мы начнём создавать визуализацию созданной базы данных. На этом уроке мы составим план действий по внедрению проекта. Мы будем работать с технологиями PHP и JavaScript. Отчёт отправил: 11589. Yefim Выполнено за 15 час. 25 мин. [Показать отчёт] Научился: Составлять План будущего проекта Сложности: В общих чератх всё понятно |
|||||
24 | Четыре фигуры на доске |
|
|||
На этом уроке мы реализуем первые три пункта нашего плана. 1. Отобразить шахматную доску с 4 фигурами. 2. Отобразить доску по заданному FEN-коду. 3. Разместить тексты для отображения информации. Отчёт отправил: 11589. Yefim Выполнено за 1 день 22 час. 50 мин. [Показать отчёт] Научился: Отображать доску по заданному FEN-коду. Отличный урок! Сложности: Непонятно, почему тексты для отoбрaжения инфopмации в моём варианте располагаются, примыкая плотно к доске. |
|||||
25 | Создание PHP функций |
|
|||
На этом уроке мы погрузимся в РНР-программирование. Мы напишем несколько функций для считывания данных из нашей базы данных ходов и формирования их в массиве. Отчёт отправил: 11589. Yefim Выполнено за 1 день 1 час. 20 мин. [Показать отчёт] Научился: Считывать данные из базы данных ходов. Отличный урок. Но очень длинный. Сложности: Мой браузер обнаруживает в двух местах ошибки. Хотя конечный результат оказался правильным. |
|||||
26 | Дружба PHP с JavaScript |
|
|||
На этом уроке мы подружим PHP с JavaScript - сделаем вызов из JavaScript функции на PHP, результат которой будет возвращён назад в JavaScript. Отчёт отправил: 11589. Yefim Выполнено за 2 дня 5 час. 9 мин. [Показать отчёт] Научился: Научил дружить PHP с JavaScript Отличный урок, хотя дался он мне не легко. Сложности: В начале я обнаружил, различие кода у меня и на видео. Я использовал функцию getFigureHTML(@$board [$x . $y]) и это было источником множества проблем. В конце концов привел всё в соответствие и получил приемлемый результат. Не знаю почему, но изменение файла chess.css никак не влияет на отображение |
|||||
27 | Сериализация Json |
|
|||
На этом уроке мы передадим из РНР в JavaScript всю информацию о белых и чёрных хода, используя json-сериализацию. Используя полученный объект мы сформируем содержание информационной панели. Отчёт отправил: 11589. Yefim Выполнено за 1 день 4 час. 57 мин. [Показать отчёт] Научился: Формировать содержание информационной панели. Сложности: Отличнейший урок!!! |
|||||
28 | Чёрные ходы на доске |
|
|||
На этом коротком уроке мы отобразим все возможные ходы чёрного короля прямо на доске, используя числа - сколько ходов до мата останется при указанном ходе. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 55 мин. [Показать отчёт] Научился: Отoбрaжать все возможные ходы чёрного короля прямо на доске. Сложности: Все ясно. |
|||||
29 | Последний ход |
|
|||
На этом уроке мы закончим программирование визуального оформления мата конём и слоном с использованием технологий PHP и JavaScript. Отчёт отправил: 11589. Yefim Выполнено за 5 дней 20 час. 0 мин. [Показать отчёт] Научился: Визуально демонстрировать продвижение к мату конём и слоном. Великолепнейший урок! Сложности: Из-за досадной опечатки долго не мог найти ошибку. Но обратившись к Евгению Витольдовичу, проблема тут же была решена!!! |
|||||
30 | Чёрно-белый слон |
|
|||
На этом уроке мы доведём до логического завершения функцию работы с нашей базой данных, чтобы она корректно отрабатывала позиции с чёрнопольным белым слоном. Это оказалось не так уж и сложно :) Отчёт отправил: 11589. Yefim Выполнено за 2 дня 13 час. 48 мин. [Показать отчёт] Научился: Корректно отрабатывать позиции с чёрнопольным белым слоном. Сложности: Оригинальный метод переключения для случая с чёрнопольным слоном. Вряд ли я бы додумался сам. Браво, Евгений Витольдович!!! |
|||||
31 | ФИНАЛЬНЫЙ УРОК |
без видео |
|||
32 | VIP урок с ладьёй |
|
|||
На этом VIP-уроке мы решим шахматную задачу "Мат ладьёй". Для этого мы пройдёмся по всем функциям, файлам и скриптам и слегка модифицируем их для решения новой задачи. |
|||||
Итого: 32 видеоурока |
12 час. 27 мин. |
6 чел. | |||
Финалисты: Tekashnik, Алексей, Алексей В., Иван Воронин, Andrew, MaxB . |