# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
1 тест |
|||
Мы начинаем «МикроШахматы на JavaScript». В начале было поле. И было на поле 64 клетки. Цель курса - запрограммировать все правила игры в шахматы. На выходе мы получим скрипт для игры в шахматы для двух игроков, с соблюдением всех правил. На этом уроке мы выведем на экран доску, используя JavaScript и HTML. В каждом уроке кроме видео есть фото-инструкция по изменению кода. Отчёт отправил: 4210. Дмитрий Выполнено за 18 час. 25 мин. [Показать отчёт] Научился: Классно! Пока что в ДжС "рисовали" шахматную доску. Хорошая практика ДжС. Сложности: Всё просто. Хотя поначалу и тут умудрился перепутать >= c <=, и таблица не вырисовывалась, пока не исправил. |
|||||
2 | Координатное поле |
|
|||
На этом уроке мы увеличим клетки нашей доски, чтобы они были одинаковыми в любой ситуации. Уберём зазор между клетками. Так же мы раскрасим доску по правилам игры, чтобы правая-нижняя клетка была светлой. Добавим координаты слева и снизу доски, а для полноты картины добавил заголовок. Отчёт отправил: 4210. Дмитрий Выполнено за 31 мин. [Показать отчёт] Научился: Сделали доску. Пока всё нравится. Интересно и ненапряжно. Сложности: Всё ок. |
|||||
3 | Шахматные буквы |
1 тест |
|||
На этом уроке мы отобразим «шахматные» буквы на доске. Для этого мы создадим массив, заполним его буквами, которые кодируют фигуры по нотации FEN и сделаем их отображение в таблице. Отчёт отправил: 4210. Дмитрий Выполнено за 25 мин. [Показать отчёт] Научился: Создали массив, расставили фигуры. Сложности: Всё ок. |
|||||
4 | Фигуры на доске |
1 тест |
|||
На этом уроке наши фигуры обретут свой облик, для этого нам потребуется вспомогательная функция figure_to_html(), которая будет возвращать облик нужной нам фигуры в формате HTML-Unicode. Поиграемся с размером и цветом фигур. Отчёт отправил: 4210. Дмитрий Выполнено за 22 мин. [Показать отчёт] Научился: Не знал, что для шахмат зарезервированы значки) (хотя это напрашивалось, но узнал только сейчас) Клетки с фигурами всё ещё вытянуты по вертикали. (видно, если сравнить с пустыми) У меня они стали квадратными при размере 38п. Сложности: Всё ок. |
|||||
5 | Светофор для фигур |
|
|||
На этом уроке мы будем отмечать, какими фигурами можно ходить и куда можно ходить. Пока реализуем простое правило: можно ходить на пустую клетку или клетку врага. Для этого мы добавим ещё один массив inf, для хранения возможных ходов выбранной фигуры. Так же мы доработаем функцию show_map (), чтобы она отображала подсказки из массива inf. Отчёт отправил: 4210. Дмитрий Выполнено за 29 мин. [Показать отчёт] Научился: Тоже думал про ПНГ типа "мишень", но это "усложнит" логистику проекта в два раза. Сейчас мы работаем с одним файлом) Если работаем на разных компах, то перетаскиваем тоже один файл. В общем-то, в удвоении перетаскиваемого нет ничего страшного, но... Сложности: Всё ок. |
|||||
6 | Фигурная перекличка |
2 теста |
|||
На прошлом уроке мы статично отобразили выбранную фигуру и поля, куда эта фигура может пойти. Теперь наша задача реализовать это программно. Для этого нам понадобится переменная для хранения цвета хода и реализуем функции: mark_moves_from(), can_move_from() и get_color(). Протестируем результат изменив цвет хода. Отчёт отправил: 4210. Дмитрий Выполнено за 1 час. 21 мин. [Показать отчёт] Научился: Делали проверку фигур на доске в "двумерном" цикле. Сложности: Всё ок. |
|||||
7 | Шахматные выборы |
|
|||
На этом уроке мы реализуем выбор фигуры для хода через клик левой кнопкой мышки по нужной клетке. Для этого мы сформируем вызов функции click_box() с координатами клетки, по которой было нажато. Отчёт отправил: 4210. Дмитрий Выполнено за 6 час. 45 мин. [Показать отчёт] Научился: Прописали проверку клетки, на которую можно ходить. Сложности: Всё ок. |
|||||
8 | Завершение хода |
1 тест |
|||
На этом уроке мы напишем функцию click_box_to(), для движения фигуры в указанную клетку - нужно будет поменять место фигуры в матрице map. Ещё напишем функцию turn_move() для передачи права хода. Отчёт отправил: 4210. Дмитрий Выполнено за 21 мин. [Показать отчёт] Научился: Закончили первый этап. "Игроки" ходят по очереди, и не на "свои" клетки. Сложности: Всё ок. |
|||||
9 | ЧЕТВЕРТЬФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю, четверть курса позади. Предлагаю немножко передохнуть и развлечься. Напиши, чему ты научился за первую часть этого курса. Нравится ли тебе такой способ изложения материала. Какие видишь преимущества и недостатки курса. Разыграй любую партию и запиши на видео. Можно без голоса. Отчёт отправил: 4210. Дмитрий Выполнено за 14 мин. [Показать отчёт] Научился: За первую часть я освежил когда-то изученное по JS, попрактиковался, и "прочувствовал" различия в синтаксисе между JS и C#. Сложности: Всё ок. Видеообзор: D4sgNjj9G_w |
|||||
10 | Шахматная бюрократия |
1 тест |
|||
На этом уроке мы создадим функцию, которая будет проверять, может ли фигура сходить так, как её попросят - то есть реализовать алгоритмы передвижения для каждой фигуры Отчёт отправил: 4210. Дмитрий Выполнено за 24 мин. [Показать отчёт] Научился: Прописали проверку полноценного хода (не отдельно "из" и отдельно "в"), а в одной функции, используя обе эти. is_correct_move(), вроде, должен использовать проверку очерёдности, can_move() и те функции, которые мы для каждого вида фигур напишем позже. Как уже предложил на уроке Андрей, с помощью "свитч" для каждого вида фигур прописываем правила. Сложности: Всё ок. |
|||||
11 | Кто есть кто? |
1 тест |
|||
На этом уроке мы реализуем функцию is_correct_move() и добавим в неё проверку всех возможных фигур. Так же добавим заглушки корректности хода для каждой фигуры. Протестируем функции, найдём ошибку в коде и исправим её. Отчёт отправил: 4210. Дмитрий Выполнено за 21 час. 38 мин. [Показать отчёт] Научился: Проходил уже эту часть на Си-шарп, в курсе "Шахматы-онлайн", в тот раз ошибся. Считал, что конь ходит самой сложной "загогулиной", а пешка только вперёд, ну и сложность соответствующая. Оказалось - наоборот. Ещё на этом уроке мы исправили ошибку в mark_moves_to(). Сложности: Всё ок. |
|||||
12 | Лошадью ходи! |
1 тест |
|||
На этом уроке мы реализуем самую простую функцию: is_correct_knight_move() - конь ходит буквой Г :) Отчёт отправил: 4210. Дмитрий Выполнено за 34 мин. [Показать отчёт] Научился: "Ходили лошадью" Сложности: Всё ок. |
|||||
13 | Королевские шаги |
|
|||
На этом уроке мы реализуем функцию is_correct_king_move() Потом немного повеселимся. Увидим самый быстрый мат и отрывок из к/ф "Джентльмены удачи". Отчёт отправил: 4210. Дмитрий Выполнено за 10 мин. [Показать отчёт] Научился: Написали проверку для короля, и смотрели, как другие "ходят лошадью". Сложности: Всё ок. На курсе "Онлайн-Шахматы" застопорился на невозможности создать БД на хостинге. Чтобы не потерять темп, пока прохожу этот курс. |
|||||
14 | Горизонтальная вертикаль |
1 тест |
|||
На этом уроке мы реализуем функцию: is_correct_rook_move() Ладья ходит по вертикали или горизонтали. Отчёт отправил: 4210. Дмитрий Выполнено за 2 дня 2 час. 52 мин. [Показать отчёт] Научился: Прописывали условие, чтобы ладья ходила или по вертикали, или по горизонтали. Сложности: Всё ок. |
|||||
15 | Не стой на пути! |
|
|||
На этом уроке мы доработаем функцию is_correct_rook_move(). Добавим проверку, находится ли кто-то на пути фигуры. Так же мы добавим функцию on_map() для проверки нахождения координат в пределах доски. Отчёт отправил: 4210. Дмитрий Выполнено за 2 час. 54 мин. [Показать отчёт] Научился: Добавили в проверку хода ладьи проверку же наличия других фигур на её пути. Сложности: Всё ок. |
|||||
16 | Слоновья тропа |
|
|||
На этом уроке мы реализуем функцию: is_correct_bishop_move(), она будет похожа на is_correct_rook_move(), но с небольшими изменениями. Также оптимизируем циклы, добавим проверку границ доски. Добавим функцию is_empty(), которая будет проверять доступность хода на эту клетку. Отчёт отправил: 4210. Дмитрий Выполнено за 2 час. 6 мин. [Показать отчёт] Научился: Писали проверки для слона и проверку на нахождение на доске. Сложности: Всё ок. |
|||||
17 | Дорогу Королеве! |
1 тест |
|||
На этом уроке мы ещё раз скопируем алгоритм проверки хода в функцию is_correct_queen_move(). С третьей попытки мы догадаемся вообще убрать проверку на корректность значений delta_x/delta_y. Ваше задание - предложить свой вариант выделения общего алгоритма из эти трёх функций - is_correct_move_queen/bishop/rook(). Отчёт отправил: 4210. Дмитрий Выполнено за 49 мин. [Показать отчёт] Научился: Насчёт общей проверки: Можно сделать общую из_коррект_мув, с двумя верхними строчками и вызовом нужной "нижней" части для каждой фигуры Сложности: Всё ок. |
|||||
18 | Мелочь пузатая |
1 тест |
|||
На этом уроке мы порефакторим наш код, выделив общий алгоритм из трёх функций: is_correct_move_queen/bishop/rook(). Отчёт отправил: 4210. Дмитрий Выполнено за 3 дня 5 час. 15 мин. [Показать отчёт] Научился: Вот как так получается? ))) Вчера четыре раза переделывал этот урок, и после рефакторинга страничка не запускалась. А в этот раз сделал то же самое, и всё работает. Короче, этап пройден; идём дальше. Сложности: Всё ок. |
|||||
19 | ПОЛУФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю, половина курса позади. Предлагаю немножко передохнуть и развлечься. Напиши, чему ты научился за вторую часть этого курса. Нравится ли тебе такой способ изложения материала. Какие видишь преимущества и недостатки курса. Разыграй любую партию и запиши на видео. Можно без голоса. Отчёт отправил: 4210. Дмитрий Выполнено за 19 мин. [Показать отчёт] Научился: Ну, тут мы, собственно, прописывали правила и проверки для каждой фигуры, по возможности, объединяя схожие функции. Узнал, что много максимально примитивных и понятных функций, это нормально. Более того, это лучше, чем одна громоздкая, выполняющая половину функционала. Сложности: Чаще всего "спотыкался" о пропущенные точки с запятыми или незакрытые фигурные скобки, из-за которых весь скрипт не работал. Мелочь, стопорящая всю работу. Видеообзор: ZBopdkLh6JE |
|||||
20 | Пешкины законы |
|
|||
На этом уроке мы поговорим о пешках: + чем она отличается от других фигур? + какие у неё правила? + какие у неё исключения? Мы реализуем функцию is_correct_pawn_move() и заглушки для вспомогательных функций: is_correct_white_pawn_move() и is_correct_black_pawn_move(). Лирическое задание - найти/нарисовать интересную картинку о пешках. Отчёт отправил: 4210. Дмитрий Выполнено за 25 мин. [Показать отчёт] Научился: Ну, тут мы пока только готовились к прописыванию правил для пешек. Разделили (с опознаванием) на две функции, каждая для своего цвета. Оставили заготовки. Сложности: Всё ок. |
|||||
21 | Судьба пешки |
1 тест |
|||
На этом уроке мы воспользуемся сайтом draw.io для рисования схемы алгоритма пешки. На схеме отобразим следующие правила для пешек: 1. направление зависит от цвета; 2. положение может быть на горизонталях 1-6; 3. могут ходить только прямо и только на одну клетку; 4. с 1/6 горизонтали могут ходить на две клетки через пустую; 5. рубят наискосок на одно поле вперёд-влево/вправо; 6. могут рубить на битое поле (взятие на проходе); 7. на последней линии превращается в слона/коня/ладью/ферзя своего цвета. Превращение пешки будет реализовано в функции завершения хода box_click_to(). Отчёт отправил: 4210. Дмитрий Выполнено за 49 мин. [Показать отчёт] Научился: Попрактиковались в составлении блок-схем и визуально прикинули проверки. Сложности: Всё ок. |
|||||
22 | Пешка на охоте |
1 тест |
|||
На этом уроке мы реализуем часть алгоритма для функции is_correct_white_pawn_move() на основе схемы, созданной на прошлом уроке. Добавим заглушку для функции is_pawn_passant(). Отчёт отправил: 4210. Дмитрий Выполнено за 4 час. 58 мин. [Показать отчёт] Научился: Прописывали проверку для белой пешки. Сложности: Всё ок. |
|||||
23 | Пешка в сапогах |
|
|||
На этом уроке мы доработаем алгоритм для функции is_correct_white_pawn_move() на основе блок-схемы. Так же подкорректируем нашу схему. Отчёт отправил: 4210. Дмитрий Выполнено за 23 мин. [Показать отчёт] Научился: Тут мы учили пешку ходить. По правилам. Думаю, осталось только прописать действия на восьмой [7] клетке. Сложности: Всё ок. |
|||||
24 | Взятие на проходе шустрых пешек |
1 тест |
|||
На этом уроке мы реализуем алгоритм взятия на проходе. Для этого мы доработаем ранее созданную заглушку is_pawn_passant(). Добавим вспомогательные переменные для хранения координат возможного взятия на проходе, они нам пригодится на следующем уроке. Отчёт отправил: 4210. Дмитрий Выполнено за 29 мин. [Показать отчёт] Научился: Прорабатывали "взятие на проходе". Думаю, ещё нужно прописать в необходимых условиях соответствующие действия "Тёмной Стороны" ))) Мы можем бить поле, через которое перескочила пешка противника. Т.к. это может быть только на одной линии, то и в условиях можно указать эту линию "-1" для стартовой позиции хода пешки, т.е. в нашем случае (с белыми): "4". Т.к. пешка идёт по диагонали, то и смещение по иксу должно быть на единицу. "Поле атаки" по иксу всегда "5" (шестая линия в массиве), а по игреку совпадает с "dy" атакуемой вражеской пешки. Сложности: Всё ок. |
|||||
25 | Радар для быстрых пешек |
1 тест |
|||
-- Куда торопимся? -- Почему превышаем? -- Покажите ваши координатики... -- Пройдёмте, пешечка, в отделение... На этом уроке мы доработаем функцию click_box_to(), добавив проверку прыгнула ли пешка через клетку.прыгнула, то мы сохраняем координаты, по которым её можно поймать. Вынесем написанный алгоритм в отдельную функцию check_pawn_attack() После чего мы уберём пешку противника в отделение для сбитых фигур. Отчёт отправил: 4210. Дмитрий Выполнено за 40 мин. [Показать отчёт] Научился: Работали над "забиранием" на проходе чёрной пешки. Сложности: Скрипт загружается и работает. Чёрная пешка НЕ исчезает. |
|||||
26 | Афроамериканская пешка |
|
|||
На этом уроке мы реализуем правила движения чёрных пешек по аналогии с белыми. Для начала мы перенесём общую проверку из функций is_correct_*_pawn_move() в функцию is_correct_pawn_move(). Доработаем функцию is_pawn_passant(). Объединим функции is_correct_*_pawn_move() в общую функцию is_correct_sign_pawn_move(). Отчёт отправил: 4210. Дмитрий Выполнено за 58 мин. [Показать отчёт] Научился: Тут мы сначала развели отдельные проверки для пешек каждого из цветов, а потом свели их в одну. Сложности: Доктор, что я делаю не так?? Такое ощущение, что на чёрные проверку и не писал. При ходе чёрной пешкой, по старинке подсвечиваются все пустые поля, как возможные для хода. На проходе пешка не берётся (ни белая, ни чёрная). Просто битая пешка не исчезает. Код на скриншоте. Вроде, всё верно. |
|||||
27 | Пешкина мечта |
1 тест |
|||
На этом уроке мы исправим ошибку в функции click_box_to(), чтобы чёрные пешки тоже могли съедать после взятия на проходе. После чего мы перенесём рабочий код в функцию check_pawn_attack(). Отчёт отправил: 4210. Дмитрий Выполнено за 1 час. 10 мин. [Показать отчёт] Научился: Поправили взятие на проходе и для "тёмной стороны". Насчёт мультика, он про беспринципного и не очень умного карьериста, со всеми вытекающими. Сложности: Всё ок. Обнаружил ошибку, из-за которой чёрные не действовали по правилам. В проверке цвета нужно было поставить пробел между кавычками, а не как на видео. |
|||||
28 | Волшебное превращение пешки |
|
|||
На этом уроке мы реализуем алгоритм превращения пешки. Для этого нам понадобится новая функция promote_pawn(). Выбор фигуры реализуем через функцию prompt(). Добавим проверку, чтобы можно было выбирать только разрешённые фигуры. Доработаем функцию click_box_to() - добавим вызов превращения пешки если это необходимо. Отчёт отправил: 4210. Дмитрий Выполнено за 1 час. 42 мин. [Показать отчёт] Научился: Наконец-то разобрались с пешками. На этот раз превращали их в фигуру на последней линии. Сложности: Всё ок. |
|||||
29 | ТРЕТИЙ ЧЕТВЕРТЬФИНАЛЬНЫЙ УРОК |
без видео 1 тест |
|||
Поздравляю, три четверти курса позади. Предлагаю немножко передохнуть. Напиши, чему ты научился за третью часть этого курса. Нравится ли тебе такой способ изложения материала. Какие видишь преимущества и недостатки курса. Приложи к отчёту любую шахматную карикатуру. Отчёт отправил: 4210. Дмитрий Выполнено за 7 мин. [Показать отчёт] Научился: Третья часть, в основном, была посвящена пешке. Мы расписали (сначала на схеме) ряд проверок, которые затем воплотили в функциях. Также, последним этапом, мы добавили возможность превращения пешки в выбираемую фигуру. В общем, курс радует короткими пошаговыми уроками (дополнительная гибкость в прохождении), и объяснениями каждого выполненного (прописанного) действия. Сложности: Всё замечательно! |
|||||
30 | Случайный шах |
|
|||
На этом уроке мы реализуем функцию is_check(), чтобы король не ходил на клетку, которая под боем. На время теста вы уберём все пешки и добавим функцию is_check() с генерируемой случайностью шаха для всех фигур на поле. Отчёт отправил: 4210. Дмитрий Выполнено за 28 мин. [Показать отчёт] Научился: * Почему не все ходы доступны - из за (великого корейского) рандома пятая часть ходов не доступна случайным образом. Просто, при вызове функции "ис чек", только четыре из пяти ответов положительны. Насчёт проверки: проверяем (и запоминаем), где стоит король. Затем, проверяем, может ли какая-либо фигура соперника походить на эту клетку. Если да - сигналим, что щаз будет шах. Проверка выполняется не только после хода (в отношении вражеского короля) но и перед ходом, когда фигура уже выбрана, и нужно понять, поставим ли мы своего короля под угрозу, переместив её (фигуру). Сложности: Всё ок. |
|||||
31 | Возврат хода |
1 тест |
|||
На этом уроке мы опишем псевдокод для функции is_check(). Добавим две глобальных переменных: move_figure и to_figure. Так же добавим функции: move_figure() и back_figure(). Модернизируем функции click_box_to() и promote_pawn() для поддержки новой системы передвижения фигур по доске. Отчёт отправил: 4210. Дмитрий Выполнено за 2 час. 33 мин. [Показать отчёт] Научился: Переделывали то, что сделали на прошлом уроке с пешкой))) Прописали проверку на шах для всех вражеских фигур после пробного хода. Сложности: всё ок |
|||||
32 | Король в розыске |
1 тест |
|||
На этом уроке мы добавим в функцию is_check() вызов move_figure() и back_figure(). Реализуем вспомогательную функцию find_figure() и поэкспериментируем. Отчёт отправил: 4210. Дмитрий Выполнено за 27 мин. [Показать отчёт] Научился: Идём по составленному в начале этого этапа плану. Сложности: Не получилась проверка с пешкой. Просто доска не появилась, пока не закомментил. "очепяток", сравнивая с образцом, не обнаружил. |
|||||
33 | Служба безопасности короля |
1 тест |
|||
На этом уроке мы продолжим дорабатывать функцию is_check(). Переберём все ходы противника, чтобы исключить из возможных ходов короля клетки, которые под боем. Отчёт отправил: 4210. Дмитрий Выполнено за 35 мин. [Показать отчёт] Научился: Заканчиваем перебирать угрозы королю. Сложности: Глючил Ютьюб. Урок выполнил по принтскрину лога. В принципе, во всём разобрался. |
|||||
34 | Шах вперёд - шаг назад |
1 тест |
|||
На этом уроке мы выделим часть кода из функции is_check() в новую функцию: is_check_after_move(), которая будет вызываться для проверки возможности хода. Сама же функция is_check() останется независимой и может вызываться тогда, когда нам будет нужно. Отчёт отправил: 4210. Дмитрий Выполнено за 1 час. 6 мин. [Показать отчёт] Научился: Разделили "ис чек" на две функции. Сложности: Всё ок. При убирании "тёрн мув" и добавлении условия в скобки на вызове "ис чек", фигуры отказывались ходить. Когда вернул, как было, всё заработало. |
|||||
35 | Информационная панель |
1 тест |
|||
На этом уроке мы выведем информацию о текущем состоянии игры. Для этого мы реализуем функцию show_info(), которая будет вызываться при каждой генерации доски. Так же нам надо будет реализовать вспомогательные функции: is_checkmate() и is_stalemate(). Доработаем функцию mark_moves_from() для подсчёта количества возможных ходов текущего игрока. Оптимизируем определение очерёдности хода. Отчёт отправил: 4210. Дмитрий Выполнено за 39 мин. [Показать отчёт] Научился: Проверяли на шах, мат и пат. Оформили вывод сообщений под доской. Сложности: Всё ок. |
|||||
36 | Подвиг безымянной пешки |
1 тест |
|||
На этом уроке мы добавим проверку на пешечный подвиг по спасению короля: может ли она взять на проходе вражескую пешку, которая угрожает королю шахом. Для этого вынесем проверку взятия на проходе в отдельную функцию move_pawn_attack(). Для корректной работы кода нам понадобится ещё одна функция back_pawn_attack(). Отчёт отправил: 4210. Дмитрий Выполнено за 20 мин. [Показать отчёт] Научился: Отдельная проверка для частного случая для пешки. Но без неё механика игры не соответствовала бы правилам до конца. Сложности: Всё ок. |
|||||
37 | ФИНИШНАЯ ПРЯМАЯ |
без видео 1 тест |
|||
Быстро сказка сказывается, не быстро дело делается. Наша программа практически завершена, осталось самую малость - научить короля прятаться за ладьёй, это таинство называется "рокировка". Ваше задание. 1. Найти/нарисовать хорошую картинку на тему "Рокировки" и приложить её к отчёту. 2. Выписать все правила, при которых возможна рокировка. Отчёт отправил: 4210. Дмитрий Выполнено за 17 мин. [Показать отчёт] Научился: Итак, рокировка... 1. Одна в течении партии. 2. Свободные клетки между королём и ладьёй. 3. Король до этого не ходил (как и ладья). 4. Клетки между королём и ладьёй не "простреливаются". 4.1 Король не находится под шахом && не будет находится под ним после рокировки. 5. Король сдвигается к ладье, а она становится по другую сторону от короля. Сложности: Всё ок. Видеообзор: 5wQaabwbMfk |
|||||
38 | Правила рокировки |
1 тест |
|||
На этом уроке мы обсудим правила рокировки короля. Так же обсудим необходимы действия для её совершения. Найти интересную картинку на тему рокировки. Отчёт отправил: 4210. Дмитрий Выполнено за 1 час. 0 мин. [Показать отчёт] Научился: Тут мы перечислили условия (в будущем - проверки), которые позиция должна пройти перед выполнением рокировки. И действия двух фигур, в этой рокировке участвующих. Сложности: Всё ок. |
|||||
39 | Флаг над замком |
1 тест |
|||
На этом уроке мы создадим 4 глобальных флага: can_white_castle_left, can_white_castle_right, can_black_castle_left, can_black_castle_right. Реализуем вспомогательную функцию update_castle_flags(). Отчёт отправил: 4210. Дмитрий Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Изменению состояния с помощью флагов. Создали флаги с начальным значением "тру", и прописали функцию, проверяющую условия, при которых некоторые из них меняются на "фолс". Отображается всё это под доской сокращениями для каждой стороны каждого цвета: WCL, например - "Белая Рокировка Влево". Сложности: Всё ок. |
|||||
40 | Король всемогущий |
1 тест |
|||
На этом уроке мы добавим проверку для короля, может ли он сделать рокировку - can_castle(). Добавим заглушки для вспомогательных функций: can_white_castle() и can_black_castle(). Отчёт отправил: 4210. Дмитрий Выполнено за 31 мин. [Показать отчёт] Научился: Прописали проверки для королей на возможность рокировки. Убрали спорные места дополнительными проверками)) Сложности: Всё ок. |
|||||
41 | Рокировка под шахом |
1 тест |
|||
На этом уроке мы доработаем функцию can_castle(), добавив проверку на шах и оптимизируем is_check(). Отчёт отправил: 4210. Дмитрий Выполнено за 21 мин. [Показать отчёт] Научился: Мы добавили проверку, будет ли в процессе рокировки король находиться под ударом. Сделали небольшой рефакторинг, убрав из проверок смену (и обратную) смену цвета и инвертировав вместо этого проверку цвета короля в "ис_чек". Сложности: Всё ок. |
|||||
42 | Белолевая рокировка |
1 тест |
|||
На этом уроке мы отрефакторим функцию can_castle(), добавив заглушки вспомогательных функций can_white/black_cl/cr(). Отчёт отправил: 4210. Дмитрий Выполнено за 44 мин. [Показать отчёт] Научился: Провели рефакторинг, переместив в общую функцию проверки, и лишь возвратом вызывая функции для каждой из четырёх рокировок. Названия я поменял, чтобы не были похожи на переменные, но всё же постарался сохранить их понятными, чтобы можно было догадаться. Сложности: Всё ок. |
|||||
43 | Рокировка на все времена |
1 тест |
|||
На этом уроке мы реализуем функции can_white/black_cl/cr().
Отчёт отправил: 4210. Дмитрий Выполнено за 1 час. 35 мин. [Показать отчёт] Научился: Прописали проверки в функциях, заглушки которых мы оставили на прошлом уроке. Сложности: Всё ок. |
|||||
44 | Ладейный паркур |
1 тест |
|||
На этом уроке мы реализуем функцию move_castling_rook(), чтобы при рокировке наши ладьи тоже перемещались. Отчёт отправил: 4210. Дмитрий Выполнено за 1 час. 18 мин. [Показать отчёт] Научился: Прорабатывали движение ладьи при рокировке. В принципе, всё понятно. Сложности: Что-то у меня рокировка в конечном итоге не выходит. Король с исходной клетки исчезает, а на конечной не появляется. И ладья остаётся на месте. Из-за чего может быть такой эффект? |
|||||
45 | ФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю с завершением курса! Оставь, пожалуйста, отзыв об этом курсе. Запиши видеообзор созданной программы. Напиши, что ещё можно добавить в эту программу. Отчёт отправил: 4210. Дмитрий Выполнено за 2 час. 38 мин. [Показать отчёт] Научился: Вот, подходит к концу курс по написанию "движка" для шахмат на ДжаваСкрипт. Благодаря помощи и поддержке участиков проекта и лично Евгения Витольдовича, мне всё удалось. Все фигуры ходят строго по правилам, выполняется рокировка, выбор фигуры для пешки, достигшей последней клетки. Просчитываются все возможные в данной позиции ходы. Короче, всё функционирует. Курс разбит на короткие уроки, каждый из которых затрагивает одну маленькую тему. Таким образом, он подошёл и мне, человеку начинающему. Ещё раз благодарю Евгения Витольдовича и всех, кто помогал и подсказывал! Сложности: В первую очередь, жизнь осложняли мелкие "пунктуационные" ошибки. Запятые с точками, скобки пропущенные и т.п. Вторая вещь, это ошибки по невнимательности при копипасте. К примеру, для проверки белых - одни координаты, для чёрных, другие. Забыв поменять в "свежескопированном" одну цифру, я несколько дней копал код, пытаясь найти, почему чёрный король не хочет выполнять рокировку. Видеообзор: ctfrX-n9NvE |
|||||
46 | VIP урок - Минное поле |
|
|||
На этом уроке мы реализуем функцию mark_attack(), чтобы отображать все битые поля на шахматной доске, куда может атаковать противник сразу после вашего хода. Доработаем функцию show_map() для отображения полей. Отчёт отправил: 4210. Дмитрий Выполнено за 2 час. 51 мин. [Показать отчёт] Научился: Выделять клетки, которые находятся под ударом. Также, отмечать степень угрозы. (подумаю, как сделать "многократно битые клетки" не такими доминантными, а менее "опасные" - более заметными.) Сложности: Всё ок. |
|||||
47 | VIP урок - Бестолковый интеллект |
|
|||
На этом уроке мы реализуем функцию doRandMove(), для случайного выбор какой фигурой пойти, Так же столкнём два "рандомайзера" на шахматной доске. |
|||||
Итого: 47 видеоуроков |
7 час. 14 мин. 32 теста |
13 чел. | |||
Финалисты: Иван Воронин, Алексей В., Tekashnik, Артём, Сергей Соколов, Yefim, Константин, Елена, Дмитрий, Andrew, Tom, Александр Шлома, MaxB . |