# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
1 тест |
|||
Мы начинаем «МикроШахматы на JavaScript». В начале было поле. И было на поле 64 клетки. Цель курса - запрограммировать все правила игры в шахматы. На выходе мы получим скрипт для игры в шахматы для двух игроков, с соблюдением всех правил. На этом уроке мы выведем на экран доску, используя JavaScript и HTML. В каждом уроке кроме видео есть фото-инструкция по изменению кода. Отчёт отправил: 18783. Andrew Выполнено за 39 дней 1 час. 42 мин. [Показать отчёт] Научился: Приспособил программу Sublime Text для набора html. Создал файл chess.html с доской. Сложности: Под звездочками пока сложно. |
|||||
2 | Координатное поле |
|
|||
На этом уроке мы увеличим клетки нашей доски, чтобы они были одинаковыми в любой ситуации. Уберём зазор между клетками. Так же мы раскрасим доску по правилам игры, чтобы правая-нижняя клетка была светлой. Добавим координаты слева и снизу доски, а для полноты картины добавил заголовок. Отчёт отправил: 18783. Andrew Выполнено за 23 час. 27 мин. [Показать отчёт] Научился: Добавил размеры [ширина, высота] для клеток. Раскрасил клетки доски (ферзь любит свой цвет). Добавил координаты (пока 0-7). Добавил заголовок. Сложности: Подумать о стилях |
|||||
3 | Шахматные буквы |
1 тест |
|||
На этом уроке мы отобразим «шахматные» буквы на доске. Для этого мы создадим массив, заполним его буквами, которые кодируют фигуры по нотации FEN и сделаем их отображение в таблице. Отчёт отправил: 18783. Andrew Выполнено за 14 мин. [Показать отчёт] Научился: Создал функцию init_map(). Добавил буквы в массив. Добавил центровку фигур. Отобразил фигуры на доске. Сложности: Ничего. |
|||||
4 | Фигуры на доске |
1 тест |
|||
На этом уроке наши фигуры обретут свой облик, для этого нам потребуется вспомогательная функция figure_to_html(), которая будет возвращать облик нужной нам фигуры в формате HTML-Unicode. Поиграемся с размером и цветом фигур. Отчёт отправил: 18783. Andrew Выполнено за 3 дня 4 час. 16 мин. [Показать отчёт] Научился: Убрал слово info под доской. Добавил функцию figure_to_html(). Добавил в нее фигуры HTML Unicode. Добавил возможность изменения размера и цвета. Сложности: Не было сложного. |
|||||
5 | Светофор для фигур |
|
|||
На этом уроке мы будем отмечать, какими фигурами можно ходить и куда можно ходить. Пока реализуем простое правило: можно ходить на пустую клетку или клетку врага. Для этого мы добавим ещё один массив inf, для хранения возможных ходов выбранной фигуры. Так же мы доработаем функцию show_map (), чтобы она отображала подсказки из массива inf. Отчёт отправил: 18783. Andrew Выполнено за 15 мин. [Показать отчёт] Научился: Создал массив inf. Создал функцию init_inf(). Доработал функцию show_map() для отображения подсказок. Вызываю init_inf() после init_map(). Сложности: Предложить свой вариант подсветки. |
|||||
6 | Фигурная перекличка |
2 теста |
|||
На прошлом уроке мы статично отобразили выбранную фигуру и поля, куда эта фигура может пойти. Теперь наша задача реализовать это программно. Для этого нам понадобится переменная для хранения цвета хода и реализуем функции: mark_moves_from(), can_move_from() и get_color(). Протестируем результат изменив цвет хода. Отчёт отправил: 18783. Andrew Выполнено за 1 час. 38 мин. [Показать отчёт] Научился: Добавил переменную move_color для хранения цвета хода. Реализовал функции mark_moves_from(); can_move_from(); get_color(). Сложности: Ничего |
|||||
7 | Шахматные выборы |
|
|||
На этом уроке мы реализуем выбор фигуры для хода через клик левой кнопкой мышки по нужной клетке. Для этого мы сформируем вызов функции click_box() с координатами клетки, по которой было нажато. Отчёт отправил: 18783. Andrew Выполнено за 22 мин. [Показать отчёт] Научился: Добавил функцию onclick ко всем клеткам. Реализовал функции click_box(); click_box_from(); mark_moves_to(); can_move_to(). Добавил заглушку для click_box_to(). Сложности: Не было сложного |
|||||
8 | Завершение хода |
1 тест |
|||
На этом уроке мы напишем функцию click_box_to(), для движения фигуры в указанную клетку - нужно будет поменять место фигуры в матрице map. Ещё напишем функцию turn_move() для передачи права хода. Отчёт отправил: 18783. Andrew Выполнено за 31 мин. [Показать отчёт] Научился: Реализовал три функции: click_box_to(); turn_move(); start(). разыграл микро-партию. Сложности: Не было |
|||||
9 | ЧЕТВЕРТЬФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю, четверть курса позади. Предлагаю немножко передохнуть и развлечься. Напиши, чему ты научился за первую часть этого курса. Нравится ли тебе такой способ изложения материала. Какие видишь преимущества и недостатки курса. Разыграй любую партию и запиши на видео. Можно без голоса. Отчёт отправил: 18783. Andrew Выполнено за 6 дней 16 час. 14 мин. [Показать отчёт] Научился: Освоил немножко JavaScript и на последнем уроке FastStone Capture и Youtube. Отличный курс Сложности: Не рокировать самому и не дать это сделать сопернику). Иначе запись партии сбилась бы. Видеообзор: htwnccJo6Q4 |
|||||
10 | Шахматная бюрократия |
1 тест |
|||
На этом уроке мы создадим функцию, которая будет проверять, может ли фигура сходить так, как её попросят - то есть реализовать алгоритмы передвижения для каждой фигуры Отчёт отправил: 18783. Andrew Выполнено за 3 дня 17 мин. [Показать отчёт] Научился: Созданы функции can_move() и is_correct_move(). Модифицирована mark_moves_from Сложности: Что должно быть в алгоритме is_correct_move Приоритетная проверка - если после хода, нашему королю остается шах, ход невозможен. Возможно, другой функцией проверять? В самом конце, если после любого хода шах остается, проверяем , а шах ли нам до хода, если нет, то это пат, зовем судью и фиксируем ничью, если шах есть, то нам мат, сдаемся, расходимся. Определяем какой фигурой ходим. Затем проверки для каждой фигуры: Король. До восьми клеток вокруг - своих пропускаем, врага съедаем, доп проверка на возможность рокировок. Ладья, проверяем горизонталь и вертикаль, до встречи со своими или с врагом, своих отбрасываем, врага бьем. Проверяем рокировку. Слон то же что и ладья, но диагонали вместо горизонталей и вертикалей, и не нужна проверка рокировок. Ферзь - это слон, стоящий на ладье, но не нужна проверка рокировок. Конь, проверка до 8 полей по букве Гэ. Пешка - три поля: вверх, если там пусто, вверх влево, если там враг, вверх вправо, если там враг. Если в начальной позиции, и впереди 2 пустых поля, то вперед на 2. И проверка взятия на проходе. |
|||||
11 | Кто есть кто? |
1 тест |
|||
На этом уроке мы реализуем функцию is_correct_move() и добавим в неё проверку всех возможных фигур. Так же добавим заглушки корректности хода для каждой фигуры. Протестируем функции, найдём ошибку в коде и исправим её. Отчёт отправил: 18783. Andrew Выполнено за 39 мин. [Показать отчёт] Научился: Продолжил реализацию функции is_correct_move(). Написал 12 функций по 2 для каждой фигуры. Ошибку в коде подправил еще на прошлом уроке. Сложности: Степени сложности функций по возрастанию (предположил, что рокировка проверяется отдельной функцией и ее сложность не учитывается) 1. Ферзь (условно самое простое, реализовав слона и ладью) 2. Конь 3. Король (равен коню по сложности, но больше кода из-за рокировок) 4. Слон 5. Ладья (равна слону по сложности, но больше кода из-за рокировок) 6. Пешка (самое сложное из-за взятия на проходе) |
|||||
12 | Лошадью ходи! |
1 тест |
|||
На этом уроке мы реализуем самую простую функцию: is_correct_knight_move() - конь ходит буквой Г :) Отчёт отправил: 18783. Andrew Выполнено за 45 мин. [Показать отчёт] Научился: Реализовал функции коня и короля Сложности: В этот раз ничего |
|||||
13 | Королевские шаги |
|
|||
На этом уроке мы реализуем функцию is_correct_king_move() Потом немного повеселимся. Увидим самый быстрый мат и отрывок из к/ф "Джентльмены удачи". Отчёт отправил: 18783. Andrew Выполнено за 46 мин. [Показать отчёт] Научился: Посмотрел видео партии Хмыря и Папанова. Оказывается еще 4.Ne5 было ошибкой. Не знал эту историю) Функцию короля, как выяснилось, правильно написал на предыдущем уроке. Оставшиеся функции на JS не осилил самостоятельно. Сложности: Оставшиеся функции is_correct_move(). |
|||||
14 | Горизонтальная вертикаль |
1 тест |
|||
На этом уроке мы реализуем функцию: is_correct_rook_move() Ладья ходит по вертикали или горизонтали. Отчёт отправил: 18783. Andrew Выполнено за 3 час. 23 мин. [Показать отчёт] Научился: Реализовал функцию is_correct_rook_move(). Затем коряво, но дописал её. Сложности: Не было сложного |
|||||
15 | Не стой на пути! |
|
|||
На этом уроке мы доработаем функцию is_correct_rook_move(). Добавим проверку, находится ли кто-то на пути фигуры. Так же мы добавим функцию on_map() для проверки нахождения координат в пределах доски. Отчёт отправил: 18783. Andrew Выполнено за 1 час. 16 мин. [Показать отчёт] Научился: Функция is_correct_rook_move() переработана. Функция is correct_bishop_move() написана. Сложности: Понять, что Math.sign() не работает в Internet Explorer |
|||||
16 | Слоновья тропа |
|
|||
На этом уроке мы реализуем функцию: is_correct_bishop_move(), она будет похожа на is_correct_rook_move(), но с небольшими изменениями. Также оптимизируем циклы, добавим проверку границ доски. Добавим функцию is_empty(), которая будет проверять доступность хода на эту клетку. Отчёт отправил: 18783. Andrew Выполнено за 50 мин. [Показать отчёт] Научился: Оптимизированы или реализованы функции: is_correct_rook_move(); is_correct_bishop_move(); is_empty(); can_move_from(); can_move_to() Создал функцию is_correct_queen_move() на основе функций ладьи и слона. Сложности: Не было сложного. |
|||||
17 | Дорогу Королеве! |
1 тест |
|||
На этом уроке мы ещё раз скопируем алгоритм проверки хода в функцию is_correct_queen_move(). С третьей попытки мы догадаемся вообще убрать проверку на корректность значений delta_x/delta_y. Ваше задание - предложить свой вариант выделения общего алгоритма из эти трёх функций - is_correct_move_queen/bishop/rook(). Отчёт отправил: 18783. Andrew Выполнено за 1 час. 4 мин. [Показать отчёт] Научился: Добавил функцию is_correct_queen_move() и тут же удалил. Попробовал реализовать общий алгоритм трех функций. Сложности: Реализовал is_correct_QueenRookBishop_move(), свитчем разогнал условия по фигурам |
|||||
18 | Мелочь пузатая |
1 тест |
|||
На этом уроке мы порефакторим наш код, выделив общий алгоритм из трёх функций: is_correct_move_queen/bishop/rook(). Отчёт отправил: 18783. Andrew Выполнено за 32 мин. [Показать отчёт] Научился: Функции is_correct_*_move() написаны. В функцию is_correct_line_move() помещен общий код. Реализованы функции is_correct_*_delta() Сложности: Пока все понятно. Хорошо, когда знаний мало. Легче учиться сразу маленьким функциям, чем переучиваться с больших :) |
|||||
19 | ПОЛУФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю, половина курса позади. Предлагаю немножко передохнуть и развлечься. Напиши, чему ты научился за вторую часть этого курса. Нравится ли тебе такой способ изложения материала. Какие видишь преимущества и недостатки курса. Разыграй любую партию и запиши на видео. Можно без голоса. Отчёт отправил: 18783. Andrew Выполнено за 20 час. 17 мин. [Показать отчёт] Научился: Отлично построен курс, как по наполнению, так и по подаче материала. Хочется выполнять, урок за уроком. Особенно доставляет, если удается выполнить самостоятельные задания, а потом их сравнивать с эталонными. Сложности: Без рокировок тяжело играть, конечно :) Видеообзор: Q9fIXoM3DW8 |
|||||
20 | Пешкины законы |
|
|||
На этом уроке мы поговорим о пешках: + чем она отличается от других фигур? + какие у неё правила? + какие у неё исключения? Мы реализуем функцию is_correct_pawn_move() и заглушки для вспомогательных функций: is_correct_white_pawn_move() и is_correct_black_pawn_move(). Лирическое задание - найти/нарисовать интересную картинку о пешках. Отчёт отправил: 18783. Andrew Выполнено за 3 час. 8 мин. [Показать отчёт] Научился: Эх, сменить бы пешки на рюмашки, Сразу б прояснилось на доске! Сложности: Сделал, опять же коряво, is_correct_white_pawn_move(). Отдал 4 переменные под хранение координат последнего хода. В click_box_to() надо проверять, побили ли на проходе и, если да, сносить чужую пешку. Там же проверять превращение пешки и, если да, сносить пешку и ставить фигуру. |
|||||
21 | Судьба пешки |
1 тест |
|||
На этом уроке мы воспользуемся сайтом draw.io для рисования схемы алгоритма пешки. На схеме отобразим следующие правила для пешек: 1. направление зависит от цвета; 2. положение может быть на горизонталях 1-6; 3. могут ходить только прямо и только на одну клетку; 4. с 1/6 горизонтали могут ходить на две клетки через пустую; 5. рубят наискосок на одно поле вперёд-влево/вправо; 6. могут рубить на битое поле (взятие на проходе); 7. на последней линии превращается в слона/коня/ладью/ферзя своего цвета. Превращение пешки будет реализовано в функции завершения хода box_click_to(). Отчёт отправил: 18783. Andrew Выполнено за 7 час. 2 мин. [Показать отчёт] Научился: Нарисовал блок-схему алгоритма пешки. Реализовал алгоритм в функции is_correct_pawn_move(). Модифицировал is_correct_pawn_move() до is_correct_sign_pawn_move (исключив отдельные функции для каждого цвета) Модифицировал click_box_to (x, y) для удаления съеденной при взятии на проходе пешки и для превращения. Пока не смог реализовать превращение во все 4 фигуры, смог только в ферзя. Сложности: Изначально было видно, что две функции для разных цветов - не очень удачная идея. Заглянул чуть в будущие отчеты, и точно, смотрю - уже одна функция) Написал ее сам как смог, вроде все просто. Недостаток - 4 дополнительные глобальные переменные, как я и писал в прошлом отчете. Но пешки отлично работают, осталось только научить их превращаться в ладью, коня и слона на выбор. Хороший урок. |
|||||
22 | Пешка на охоте |
1 тест |
|||
На этом уроке мы реализуем часть алгоритма для функции is_correct_white_pawn_move() на основе схемы, созданной на прошлом уроке. Добавим заглушку для функции is_pawn_passant(). Отчёт отправил: 18783. Andrew Выполнено за 27 мин. [Показать отчёт] Научился: Реализовал функцию is_correct_white_pawn_move() Добавил заглушку для функции is_pawn_passant() Сложности: Не было сложного, откатил свой вариант обратно до общей линии курса ) |
|||||
23 | Пешка в сапогах |
|
|||
На этом уроке мы доработаем алгоритм для функции is_correct_white_pawn_move() на основе блок-схемы. Так же подкорректируем нашу схему. Отчёт отправил: 18783. Andrew Выполнено за 40 мин. [Показать отчёт] Научился: Доработал функцию is_correct_white_pawn_move(). Доработал блок-схему алгоритма пешки. Сложности: Не было сложного. |
|||||
24 | Взятие на проходе шустрых пешек |
1 тест |
|||
На этом уроке мы реализуем алгоритм взятия на проходе. Для этого мы доработаем ранее созданную заглушку is_pawn_passant(). Добавим вспомогательные переменные для хранения координат возможного взятия на проходе, они нам пригодится на следующем уроке. Отчёт отправил: 18783. Andrew Выполнено за 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 переменные последнего хода. |
|||||
25 | Радар для быстрых пешек |
1 тест |
|||
-- Куда торопимся? -- Почему превышаем? -- Покажите ваши координатики... -- Пройдёмте, пешечка, в отделение... На этом уроке мы доработаем функцию click_box_to(), добавив проверку прыгнула ли пешка через клетку.прыгнула, то мы сохраняем координаты, по которым её можно поймать. Вынесем написанный алгоритм в отдельную функцию check_pawn_attack() После чего мы уберём пешку противника в отделение для сбитых фигур. Отчёт отправил: 18783. Andrew Выполнено за 47 мин. [Показать отчёт] Научился: Доработал функцию click_box_to(). Создал отдельную функцию check_pawn_attack(). Добавил удаление враждебно настроенной пешки при взятии на проходе. Сложности: Всё понятно |
|||||
26 | Афроамериканская пешка |
|
|||
На этом уроке мы реализуем правила движения чёрных пешек по аналогии с белыми. Для начала мы перенесём общую проверку из функций is_correct_*_pawn_move() в функцию is_correct_pawn_move(). Доработаем функцию is_pawn_passant(). Объединим функции is_correct_*_pawn_move() в общую функцию is_correct_sign_pawn_move(). Отчёт отправил: 18783. Andrew Выполнено за 36 мин. [Показать отчёт] Научился: Функция is_correct_pawn_move() доработана. Функция is_pawn_passant() доработана. Реализована общая функция is_correct_sign_pawn_move(). Удалены устаревшие функции is_correct_white_pawn_move() и is_correct_black_pawn_move(). Плюсы объединения - универсальность функции, минусы - сложность чтения для участков, где используется sign. Я бы еще саму функцию is_correct_sign_pawn_move() разбил на несколько функций. Сложности: Не реализовали взятие на проходе для черных. |
|||||
27 | Пешкина мечта |
1 тест |
|||
На этом уроке мы исправим ошибку в функции click_box_to(), чтобы чёрные пешки тоже могли съедать после взятия на проходе. После чего мы перенесём рабочий код в функцию check_pawn_attack(). Отчёт отправил: 18783. Andrew Выполнено за 1 час. 22 мин. [Показать отчёт] Научился: Исправил ошибку в функции click_box_to(). Перенес исправленный код в функцию check_pawn_attack(). Сложности: Ничего. Мультфильм просмотрен. Вывод - ничего идеального не бывает. Всегда есть, к чему стремиться. |
|||||
28 | Волшебное превращение пешки |
|
|||
На этом уроке мы реализуем алгоритм превращения пешки. Для этого нам понадобится новая функция promote_pawn(). Выбор фигуры реализуем через функцию prompt(). Добавим проверку, чтобы можно было выбирать только разрешённые фигуры. Доработаем функцию click_box_to() - добавим вызов превращения пешки если это необходимо. Отчёт отправил: 18783. Andrew Выполнено за 3 дня 38 мин. [Показать отчёт] Научился: Доработана функция click_box_to() Реализована функция propote_pawn() Сложности: Реализация своего способа превращения фигуры (не реализовано) |
|||||
29 | ТРЕТИЙ ЧЕТВЕРТЬФИНАЛЬНЫЙ УРОК |
без видео 1 тест |
|||
Поздравляю, три четверти курса позади. Предлагаю немножко передохнуть. Напиши, чему ты научился за третью часть этого курса. Нравится ли тебе такой способ изложения материала. Какие видишь преимущества и недостатки курса. Приложи к отчёту любую шахматную карикатуру. Отчёт отправил: 18783. Andrew Выполнено за 21 мин. [Показать отчёт] Научился: Курс заходит отлично. Это подтверждается тем, что появилось желание после окончания повозиться с ним еще - переписать что-то, дополнить, улучшить. Может быть, курс слегка излишне растянут, но тут в плюс то, что все ясно и понятно. Сложности: Пока не возникло сложностей |
|||||
30 | Случайный шах |
|
|||
На этом уроке мы реализуем функцию is_check(), чтобы король не ходил на клетку, которая под боем. На время теста вы уберём все пешки и добавим функцию is_check() с генерируемой случайностью шаха для всех фигур на поле. Отчёт отправил: 18783. Andrew Выполнено за 46 мин. [Показать отчёт] Научился: Доработана функция can_move() Добавлена функция is_check() Сложности: Не все ходы доступны, так как после условно недоступного хода был бы условный шах королю ходившей стороны. Мой алгоритм функции is_check() : условно допустить сделанный ход, найти координату короля ходившей стороны (она могла поменяться, но не обязательно), проверить. может ли фигура соперника (Q R B N) пойти на координату с твоим королем, ИЛИ проверить, может ли пешка соперника побить наискосок координату с твоим королем. Если оба вопроса ложь, то возвращаем ложь, шаха нет. Если же координата под боем, возвращаем истину, нашему королю шах. |
|||||
31 | Возврат хода |
1 тест |
|||
На этом уроке мы опишем псевдокод для функции is_check(). Добавим две глобальных переменных: move_figure и to_figure. Так же добавим функции: move_figure() и back_figure(). Модернизируем функции click_box_to() и promote_pawn() для поддержки новой системы передвижения фигур по доске. Отчёт отправил: 18783. Andrew Выполнено за 28 мин. [Показать отчёт] Научился: Убрал random из функции is_check() Добавил функции move_figure() и back_figure() Модернизировал функции click_box_to() и promote_pawn() Сложности: Не было сложного |
|||||
32 | Король в розыске |
1 тест |
|||
На этом уроке мы добавим в функцию is_check() вызов move_figure() и back_figure(). Реализуем вспомогательную функцию find_figure() и поэкспериментируем. Отчёт отправил: 18783. Andrew Выполнено за 45 мин. [Показать отчёт] Научился: Добавил вызов move_figure() и back_figure() в функцию is_check(). Реализовал функцию find_figure(). Протестировать - пока невозможно - но хотя бы ничего не сломалось. Нестандартные ситуации необходимо стандартизировать. Сложности: Не было сложного |
|||||
33 | Служба безопасности короля |
1 тест |
|||
На этом уроке мы продолжим дорабатывать функцию is_check(). Переберём все ходы противника, чтобы исключить из возможных ходов короля клетки, которые под боем. Отчёт отправил: 18783. Andrew Выполнено за 1 час. 35 мин. [Показать отчёт] Научился: Доработал функцию is_check() Сложности: Алгоритм функции is_check() достаточно сложен, по моему мнению. Беспокоят рокировки, насколько сильно он должен будет измениться при их реализации. |
|||||
34 | Шах вперёд - шаг назад |
1 тест |
|||
На этом уроке мы выделим часть кода из функции is_check() в новую функцию: is_check_after_move(), которая будет вызываться для проверки возможности хода. Сама же функция is_check() останется независимой и может вызываться тогда, когда нам будет нужно. Отчёт отправил: 18783. Andrew Выполнено за 51 мин. [Показать отчёт] Научился: Модифицировал функцию is_check(). Реализовал функцию is_check_after_move(). Сложности: Невозможность срубить на проходе при шахе вызвана, вероятно, цветозависимостью функции is_pawn_passant. Надо подойти ответственнее к смене цветов в функции is_check_after_move() или попытаться проверить шах в функции is_pawn_passant |
|||||
35 | Информационная панель |
1 тест |
|||
На этом уроке мы выведем информацию о текущем состоянии игры. Для этого мы реализуем функцию show_info(), которая будет вызываться при каждой генерации доски. Так же нам надо будет реализовать вспомогательные функции: is_checkmate() и is_stalemate(). Доработаем функцию mark_moves_from() для подсчёта количества возможных ходов текущего игрока. Оптимизируем определение очерёдности хода. Отчёт отправил: 18783. Andrew Выполнено за 1 час. 32 мин. [Показать отчёт] Научился: Реализовал функцию show_info(). Реализовал функции is_checkmate() и is_stalemate(). Доработал функцию mark_moves_from(). Оптимизировал определение очерёдности хода. Сложности: Упустил, защита от шаха пешки путем взятия её же на проходе остается пока не реализованной? |
|||||
36 | Подвиг безымянной пешки |
1 тест |
|||
На этом уроке мы добавим проверку на пешечный подвиг по спасению короля: может ли она взять на проходе вражескую пешку, которая угрожает королю шахом. Для этого вынесем проверку взятия на проходе в отдельную функцию move_pawn_attack(). Для корректной работы кода нам понадобится ещё одна функция back_pawn_attack(). Отчёт отправил: 18783. Andrew Выполнено за 51 мин. [Показать отчёт] Научился: Реализовал функцию move_pawn_attack(). Реализовал функцию back_pawn_attack(). Модифицировал функциии check_pawn_attack(), move_figure() и back_figure(). Посмотрел мультфильм. Не превращается пешка в короля. Сложности: Вот теперь всё в порядке. |
|||||
37 | ФИНИШНАЯ ПРЯМАЯ |
без видео 1 тест |
|||
Быстро сказка сказывается, не быстро дело делается. Наша программа практически завершена, осталось самую малость - научить короля прятаться за ладьёй, это таинство называется "рокировка". Ваше задание. 1. Найти/нарисовать хорошую картинку на тему "Рокировки" и приложить её к отчёту. 2. Выписать все правила, при которых возможна рокировка. Отчёт отправил: 18783. Andrew Выполнено за 29 мин. [Показать отчёт] Научился: Настроился на финишную прямую. Сложности: Алгоритм возможна ли рокировка() 1. Король уже ходил? (в т.ч. рокировался) да - false 2. Ладья с рокируемой стороны уже ходила?да - false 3. Под боем ли какая-либо из трех клеток (та, где стоит король, та, по которой он пройдет и та, куда он попадет) ? да - false 4. Заняты ли кем-либо клетки куда должны попасть король с ладьей (в случае длинной рокировки также поля b1 для белых или b8 для черных)? да - false 5. true |
|||||
38 | Правила рокировки |
1 тест |
|||
На этом уроке мы обсудим правила рокировки короля. Так же обсудим необходимы действия для её совершения. Найти интересную картинку на тему рокировки. Отчёт отправил: 18783. Andrew Выполнено за 17 час. 26 мин. [Показать отчёт] Научился: Псевдоалгоритм составил на прошлом уроке. Блок-схему прилагаю. Сложности: Всё просто. |
|||||
39 | Флаг над замком |
1 тест |
|||
На этом уроке мы создадим 4 глобальных флага: can_white_castle_left, can_white_castle_right, can_black_castle_left, can_black_castle_right. Реализуем вспомогательную функцию update_castle_flags(). Отчёт отправил: 18783. Andrew Выполнено за 2 час. 29 мин. [Показать отчёт] Научился: Добавил четыре флага - can_white/black_castle_left/right Реализовал функцию update_castle_flags(). Модифицировал функцию click_box_to(). Сложности: Ничего сложного |
|||||
40 | Король всемогущий |
1 тест |
|||
На этом уроке мы добавим проверку для короля, может ли он сделать рокировку - can_castle(). Добавим заглушки для вспомогательных функций: can_white_castle() и can_black_castle(). Отчёт отправил: 18783. Andrew Выполнено за 49 мин. [Показать отчёт] Научился: Реализовал функцию can_castle(). Реализовал функции can_white/black_castle(). Сложности: Нет сложного. |
|||||
41 | Рокировка под шахом |
1 тест |
|||
На этом уроке мы доработаем функцию can_castle(), добавив проверку на шах и оптимизируем is_check(). Отчёт отправил: 18783. Andrew Выполнено за 15 мин. [Показать отчёт] Научился: Доработал функцию can_castle(). Оптимизировал функцию is_check(). Сложности: Ничего сложного |
|||||
42 | Белолевая рокировка |
1 тест |
|||
На этом уроке мы отрефакторим функцию can_castle(), добавив заглушки вспомогательных функций can_white/black_cl/cr(). Отчёт отправил: 18783. Andrew Выполнено за 20 мин. [Показать отчёт] Научился: Отрефакторил функцию can_castle(). Добавил заглушки функций can_white/black_cl/cr(). Сложности: Несложно, следую генеральной линии курса |
|||||
43 | Рокировка на все времена |
1 тест |
|||
На этом уроке мы реализуем функции can_white/black_cl/cr().
Отчёт отправил: 18783. Andrew Выполнено за 16 мин. [Показать отчёт] Научился: Реализовал функции can_white_cr () can_white_cl () can_black_cr () can_black_cl () Сложности: Несложно |
|||||
44 | Ладейный паркур |
1 тест |
|||
На этом уроке мы реализуем функцию move_castling_rook(), чтобы при рокировке наши ладьи тоже перемещались. Отчёт отправил: 18783. Andrew Выполнено за 23 мин. [Показать отчёт] Научился: Реализовал функцию move_castling_rook(). Сложности: Всё отлично |
|||||
45 | ФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю с завершением курса! Оставь, пожалуйста, отзыв об этом курсе. Запиши видеообзор созданной программы. Напиши, что ещё можно добавить в эту программу. Отчёт отправил: 18783. Andrew Выполнено за 8 дней 7 час. 24 мин. [Показать отчёт] Научился: Курс просто супер. Не ожидал, что мне он так легко дастся. Есть желание его оптимизировать, добавить нотацию и запись партии, дописать оставшиеся правила (троекратное повторение, правило 50 ходов, 75 ходов). И вообще надо правила почитать, а то они меняются каждый год :) Сложности: Записать видео, придумать тему обзора. В итоге сплагиатил идею Видеообзор: _9Sozp8wpgk |
|||||
46 | VIP урок - Минное поле |
|
|||
На этом уроке мы реализуем функцию mark_attack(), чтобы отображать все битые поля на шахматной доске, куда может атаковать противник сразу после вашего хода. Доработаем функцию show_map() для отображения полей. Отчёт отправил: 18783. Andrew Выполнено за 52 мин. [Показать отчёт] Научился: Реализовал функцию mark_attack(). Доработал функцию show_map(). Сложности: Не возникло сложностей |
|||||
47 | VIP урок - Бестолковый интеллект |
|
|||
На этом уроке мы реализуем функцию doRandMove(), для случайного выбор какой фигурой пойти, Так же столкнём два "рандомайзера" на шахматной доске. Отчёт отправил: 18783. Andrew Выполнено за 12 час. 26 мин. [Показать отчёт] Научился: Реализовал функцию doRandMove(). Столкнул ботов между собой. Назвал функцию в едином стиле с другими функциями: do_rand_move (). Сделал, чтобы компьютер сам ходил за чёрных. Сложности: Написать функцию для оценки позиции и сделать выбор лучшего хода - это, конечно, для топ-кодеров задание. Вот бы курс такой запилили... Из имеющегося функционала, думаю, доступно одно - если есть мат в один ход, ИИ должен его ставить. Видеообзор: 1ngKe-5dCpA |
|||||
Итого: 47 видеоуроков |
7 час. 14 мин. 32 теста |
13 чел. | |||
Финалисты: Иван Воронин, Алексей В., Tekashnik, Артём, Сергей Соколов, Yefim, Константин, Елена, Дмитрий, Andrew, Tom, Александр Шлома, MaxB . |