# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Мы начинаем видеокурс "Мат конём и слоном". Цель курса - создать базу решений этой задачи. То есть для любой исходной комбинации найти правильный ход, который ведёт к победе. Отчёт отправил: 6958. Кирилл Выполнено за 10 мин. [Показать отчёт] Научился: Ничему Сложности: Ничего Комментарии: Все ок |
|||||
2 | Перебор всех комбинаций |
|
|||
На этом уроке мы создадим вложенные циклы для перебора всех возможных вариантов расстановки наших фигур на шахматной доске. Отчёт отправил: 6958. Кирилл Выполнено за 30 мин. [Показать отчёт] Научился: Ни чему, уже с подобным встречался на курсе комбинаторика. Не думал что я уже умею подобное делать и будет все так просто) В дз допустил ошибку, забыл проверить диагональные поля для короля( Сложности: Ничего Комментарии: Ничего |
|||||
3 | Королевское правило |
|
|||
На этом уроке мы проверим, стоят ли короли на соседних клетках. Потом мы напишем заготовку для проверки, является ли позиция матовой. Самостоятельное задание - написать функцию onKnight(). При желании написать проверку для слона пока писать не нужно. Отчёт отправил: 6958. Кирилл Выполнено за 30 мин. [Показать отчёт] Научился: Я потихоньку понял, как с помощью программирования вычислять координаты шахматных фигур (в целом как это все выглядит с точки зрения программирования) Также понравился "заменитель" ifов. Каждый урок, даже если не получаешь новой информации, то набиваешь руку на старой и это + для того же копипаста кода. Как-никак в голове хоть что-то, да откладывается. Сложности: Сложного ничего не было, со всем разобрался. Комментарии: Комфортно смотреть урок не спеша в записи. Пусть оно и не заменит вебинары (на которые я к сожалению не могу попадать из за разницы часовых поясов), но огромный + что нет спешки и можно спокойненько программировать) По поводу того, что ставятся прочерки к уроку. Не всегда можно вот так вот все расписать, а повторять это из видео в видео смысла нет. Слова в стиле "урок мне понравился или все было хорошо и т.д." - не имеют веса. Мне неприятно писать их для человека, который проводит кучу вебинаров, старается делать классные уроки, постоянно совершенствуя свои методы. Иногда лучше поставить честный прочерк. Я на этом проекте не ради лести или отписок. У меня есть определенные цели, и если мне что-то нравится, или я хочу высказаться, я говорю это прямо и пишу как есть. Пустые слова оставьте себе! |
|||||
4 | Конь ходит буквой Гэ |
|
|||
На этом уроке мы напишем метод, который проверяет, рубит ли конь указанное поле. Алгоритм не сложный. Самостоятельное задание: почитать о Нотации Форсайта — Эдвардса на Википедии. Написать метод формирования этой нотации по имеющимся координатам четырёх фигур. Сайт для чтения FEN: http://www.apronus.com/chess/wbeditor.php Отчёт отправил: 6958. Кирилл Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Этот урок полезен тем, что я узнал о методе эдвардса. Не знал о таком способе видения записи шахматной игры. Дополнительная эрудиция это +. Сложности: Пытался писать самостоятельно функцию getFEN, вроде получается, но выходит "индусо" код, в котором оч много ифов и т.д. Дописывать не стал, результат не покажу) Интерес к следующему уроку, как это грамотно написать. Комментарии: --- |
|||||
5 | Нотация Форсайта - Эдвардса |
|
|||
На этом уроке мы научимся экспортировать найденные позиции в FEN код, чтобы посмотреть их в любом шахматном эмуляторе. Сайт для чтения FEN: http://www.apronus.com/chess/wbeditor.php Самостоятельное задание: Написать метод проверки для слона, бьёт ли он поле. Отчёт отправил: 6958. Кирилл Выполнено за 40 мин. [Показать отчёт] Научился: Урок оказался оч полезным, когда придумывал функцию getFEN() оказалось все совсем подругому, чем тут. На сколько все легко и просто... Сложности: Понять сам алгоритм гетфен Комментарии: k7/2NN4/1K6/8/8/8/8/8 взял такую комбинацию. Получился оч прикольный урок. |
|||||
6 | Ворошиловский слон |
|
|||
На этом уроке мы напишем наконец-таки метод bool onBishop (byte x, byte y) и подсчитаем количество матовых позиций. А в конце урока блеснём использованием итератора :) Самостоятельное задание: придумать структуру для хранения найденных позиций и описать её в комментариях к отчёту. Отчёт отправил: 6958. Кирилл Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Услышал о законе де моргана, соответственно пошел, загуглил и развился так сказать)) Извините за выражение, но для меня алгоритм оказался оч хитрожопым) фиг бы я до такого додумался, но теперь буду знать о новых фишках. Сложности: Алгоритм на понимания оказался не совсем простой. Понять понял, а вот использовать в дальнейшем в практике.. тут Думаю нужен опыт Комментарии: Поставил урок на паузу, написал такой индусо-код. Т.е. я проверяю равна ли сумма координат бишопа сумме других фигур. Вариантов получилось меньше чем на видео, (231 < 170). Может кто объяснить почему комбинаций получилось меньше? if (wbx + wby == wkx + wky || wbx - wby == wkx - wky) return false; if (wbx + wby == wnx + wny || wbx - wby == wnx - wny) return false; |
|||||
7 | Две структуры |
|
|||
На этом уроке мы подготовимся к рефакторингу нашего кода.
Отчёт отправил: 6958. Кирилл Выполнено за 15 мин. [Показать отчёт] Научился: --- Сложности: Сложного ничего не было, однако получше стал понимать как работают структуры Комментарии: --- |
|||||
8 | Рефакторинг кода |
|
|||
На этом уроке мы сделаем рефакторинг всего кода. В конце урока будем искать ошибку :) Отчёт отправил: 6958. Кирилл Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Ошибку про белого короля увидел сразу, однако сам допустил где-то свою ошибку и у меня программа зацикливается. 3 часа пытался найти в чем же ошибка, даже повторно с 0 писал этот урок, однако результат тот же. Хочу перейти на следующий урок, посмотреть что да как, да может найдется ошибка Сложности: Найти собственную ошибку... Комментарии: --- |
|||||
9 | Чистый ход |
|
|||
На этом уроке мы перенесём метод getBoard() и getFEN() в структуру Combo, найдём последнюю ошибку и порадуемся чистому коду! |
|||||
10 | Псевдо-алгоритм перебора |
|
|||
На этом уроке мы составим псевдо-алгоритм поиска всех решений поставленной задачи. Самостоятельное задание - проработать алгоритм на шахматной доске для ферзя и короля. |
|||||
11 | Белая и чёрная очередь |
|
|||
На этом уроке мы начнём реализацию алгоритма перебора всех позиций с правильными ходами за белых. Создадим ещё две структуры и две очереди - белую и чёрную. |
|||||
12 | Генерация белых ходов |
|
|||
На этом уроке мы напишем три метода, которые возвращают все возможные ходы для каждой белой фигуры - для короля, слона и коня. В конце урока выведем все позиции, в которых белые ставят мат в один ход. |
|||||
13 | Белая коробка |
|
|||
На этом уроке мы создадим класс WhiteBox для хранения всех позиций, где ход белых с правильным ходом для приближения к мату. |
|||||
14 | Консольная шахматная доска |
|
|||
На этом уроке мы напишем метод print() для вывода шахматной доски в консоли. |
|||||
15 | 156 матов в полтора хода |
|
|||
На этом уроке мы допишем алгоритм, узнаем, какая в нём есть ошибка, исправим её и найдём все позиции "мат в полтора хода", их будет 156. |
|||||
16 | Мат в 33 хода. |
|
|||
На этом уроке мы поместим два цикла в один общий цикл, чтобы сгенерировать решения для всех позиций, постепенно увеличивая дистанцию до матового окончания. Что ещё можно и нужно сделать. 0. Проверить, нет ли патовых ситуаций. 1. Пересмотреть все позиции, для которых нет решения. 2. Изменить массив белого ящик, координата слона от 0 до 31. 3. Модифицировать алгоритм, чтобы он работал для чернопольного слона. 4. Сделать симметрию относительно белого короля в квадрате 4х4. 5. Пересмотреть самые сложные позиции - мат в 67 полуходов. 6. Придумать эффективный способ хранения для белого ящика. 7. Решить задачу "мат двумя слонами". 8. Решить задачу "мат ладьёй". 9. Решить задачу "мат ферзём". |
|||||
17 | ПОЛУФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю, ты прошёл ровно половину курса! Приложи фото самых интересных найденных матовых/патовых/иных комбинаций Напиши, нравится ли тебе этот курс, нашёл ли ты здесь то, что ожидал. ... Меж тем сказке далеко до развязки ... |
|||||
18 | Нано Шахматы |
|
|||
На этом уроке вам будет представлен фотокурс НаноШахматы, который необходимо пройти, для эффектного и логичного завершения этого курса. |
|||||
19 | Сериализация матрицы ходов |
|
|||
На этом уроке мы сделаем сериализацию и десериализацию массива WhiteMove[,,,]. Затем обсудим, как можно размер файла уменьшить в 100 раз. |
|||||
20 | Экономия памяти |
|
|||
На этом уроке мы переделаем класс WhiteBox, теперь для его работы потребуется в несколько раз меньше памяти. |
|||||
21 | Шестнадцать мегабайт |
|
|||
На этом уроке мы сохраним базу ходов в 16-мегабайтный файл. Также сделаем считывание из файла и несколько раз поиграем с компьютером, пока он нас не заматует. |
|||||
22 | Игра без массива |
|
|||
На этом уроке мы ещё раз переделаем класс WhiteBox, теперь для работы программы НЕ НАДО будет загружать в память весь файл, нужные значения будут загружаться по ходу игры прямо из нужного места в файле. |
|||||
23 | План визуализации |
|
|||
С этого урока мы начнём создавать визуализацию созданной базы данных. На этом уроке мы составим план действий по внедрению проекта. Мы будем работать с технологиями PHP и JavaScript. |
|||||
24 | Четыре фигуры на доске |
|
|||
На этом уроке мы реализуем первые три пункта нашего плана. 1. Отобразить шахматную доску с 4 фигурами. 2. Отобразить доску по заданному FEN-коду. 3. Разместить тексты для отображения информации. |
|||||
25 | Создание PHP функций |
|
|||
На этом уроке мы погрузимся в РНР-программирование. Мы напишем несколько функций для считывания данных из нашей базы данных ходов и формирования их в массиве. |
|||||
26 | Дружба PHP с JavaScript |
|
|||
На этом уроке мы подружим PHP с JavaScript - сделаем вызов из JavaScript функции на PHP, результат которой будет возвращён назад в JavaScript. |
|||||
27 | Сериализация Json |
|
|||
На этом уроке мы передадим из РНР в JavaScript всю информацию о белых и чёрных хода, используя json-сериализацию. Используя полученный объект мы сформируем содержание информационной панели. |
|||||
28 | Чёрные ходы на доске |
|
|||
На этом коротком уроке мы отобразим все возможные ходы чёрного короля прямо на доске, используя числа - сколько ходов до мата останется при указанном ходе. |
|||||
29 | Последний ход |
|
|||
На этом уроке мы закончим программирование визуального оформления мата конём и слоном с использованием технологий PHP и JavaScript. |
|||||
30 | Чёрно-белый слон |
|
|||
На этом уроке мы доведём до логического завершения функцию работы с нашей базой данных, чтобы она корректно отрабатывала позиции с чёрнопольным белым слоном. Это оказалось не так уж и сложно :) |
|||||
31 | ФИНАЛЬНЫЙ УРОК |
без видео |
|||
32 | VIP урок с ладьёй |
|
|||
На этом VIP-уроке мы решим шахматную задачу "Мат ладьёй". Для этого мы пройдёмся по всем функциям, файлам и скриптам и слегка модифицируем их для решения новой задачи. |
|||||
Итого: 32 видеоурока |
12 час. 27 мин. |
6 чел. | |||
Финалисты: Tekashnik, Алексей, Алексей В., Иван Воронин, Andrew, MaxB . |