Обучение языку c#

Формула программиста

основатель — Волосатов Евгений Витольдович

Клуб формулистов - Ежемесячная подписка

Вступление в Клуб Формулистов на выгодных условиях для НОВЫХ участников.

После взноса  999  499 руб. вы получите подписку
в Клуб Формулистов на 30 дней и 256 байт для быстрого старта.
Байты используются для открытия более одного урока в день, по 50 байт за урок.

Стоимость 1 дня за первый месяц: всего 16 рублей.

Первый взнос - 499 руб./30 дней.

Через 30 дней будет списано 3,000 2,400 руб.
за продление подписки в Клуб на 30 дней + подарок 512 байт.

Так будет продолжаться каждые 30 дней, пока вы не отмените подписку.
Средства будет автоматически считываться с вашей карты.
Вы в любой момент сможете отказаться от продления Клуба.

Только ДО КОНЦА НЕДЕЛИ -
-50% скидка на первый взнос, всего 499 (вместо 999) рублей!
-20% скидка на ЕЖЕМЕСЯЧНЫЙ платёж!
Всего 2400 руб/месяц (вместо 3000 руб/месяц), или 80 руб./день - цена чашки кофе.


Стоимость 1 дня: 80 руб.

Хочу вступить!

Также есть другие варианты оплаты участия в КФ:

Билет в клуб формулистов на ...
30+ дней | 60 дней | 150 дней | 380 дней | 1000 дней

Внимание!
Стоимость участия в Клубе формулистов увеличивается 1 числа каждого месяца на 100 рублей.
При оформления подписки стоимость остаётся постоянной, пока подписка не будет отменена.







Первый взнос - 499 руб./30 дней + 500 байт.
Последующие взносы - 3,000 2400 руб./месяц + 512 байт.



Список уроков | фото | видео

# Название видеоурока Видео / Тесты Решило Рейтинг Доступ
1 FREE В начале было поле 00:09:49
1 тест
33 чел. ★ 4.9 Done
  Мы начинаем «МикроШахматы на JavaScript».
В начале было поле.
И было на поле 64 клетки.

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

На этом уроке мы выведем на экран доску, используя JavaScript и HTML.

В каждом уроке кроме видео есть фото-инструкция по изменению кода.
Отчёт отправил: 6925. Артём Выполнено за 15 мин. [Показать отчёт]
Научился: Познакомился с языком JavaScript 
Сложности: всё было понятно 
Комментарии: Увы, ни координаты, ни цвета вывести не могу ввиду незнания этого языка :(  
2 Координатное поле 00:08:53
28 чел. ★ 5 Done
  На этом уроке мы увеличим клетки нашей доски,
чтобы они были одинаковыми в любой ситуации.
Уберём зазор между клетками.
Так же мы раскрасим доску по правилам игры,
чтобы правая-нижняя клетка была светлой.
Добавим координаты слева и снизу доски,
а для полноты картины добавил заголовок.
Отчёт отправил: 6925. Артём Выполнено за 10 мин. [Показать отчёт]
Научился: Научился выводить координаты и узнал о пробелах   
Сложности: Всё было понятно 
Комментарии: Идём дальше 
3 Шахматные буквы 00:09:05
1 тест
28 чел. ★ 5 Done
  На этом уроке мы отобразим «шахматные» буквы на доске.
Для этого мы создадим массив, заполним его буквами,
которые кодируют фигуры по нотации FEN
и сделаем их отображение в таблице.
Отчёт отправил: 6925. Артём Выполнено за 10 мин. [Показать отчёт]
Научился: Познакомился с работой с массивами в JS  
Сложности: все понятно 
Комментарии: Идём дальше :)  
4 Фигуры на доске 00:07:13
1 тест
28 чел. ★ 5 Done
  На этом уроке наши фигуры обретут свой облик,
для этого нам потребуется вспомогательная функция figure_to_html(),
которая будет возвращать облик нужной нам фигуры в формате HTML-Unicode.
Поиграемся с размером и цветом фигур.
Отчёт отправил: 6925. Артём Выполнено за 10 мин. [Показать отчёт]
Научился: Научился отображать фигуры и вспомнил HTML-код фигур 
Сложности: Всё было понятно 
Комментарии: И вроде урок нетрудный, а самому думать не выходит :(  
5 Светофор для фигур 00:08:35
27 чел. ★ 5 Done
  На этом уроке мы будем отмечать,
какими фигурами можно ходить и куда можно ходить.
Пока реализуем простое правило:
можно ходить на пустую клетку или клетку врага.
Для этого мы добавим ещё один массив inf,
для хранения возможных ходов выбранной фигуры.
Так же мы доработаем функцию show_map (),
чтобы она отображала подсказки из массива inf.
Отчёт отправил: 6925. Артём Выполнено за 10 мин. [Показать отчёт]
Научился: Научился отображать ход пешки 
Сложности: Всё было понятно 
Комментарии: Думаю, надо проверить на наличие фигуры на клетках, куда фигура может пойти. А для других фигур писать соответствующие функции проверки хода. Например, для коня проверить все координаты на х^2+y^2 = sqrt(5) и на то, не занята ли клетка своей фигурой. А там посмотрим 
6 Фигурная перекличка 00:07:49
2 теста
26 чел. ★ 5 Done
  На прошлом уроке мы статично отобразили
выбранную фигуру и поля, куда эта фигура может пойти.
Теперь наша задача реализовать это программно.
Для этого нам понадобится переменная для хранения цвета хода и
реализуем функции: mark_moves_from(), can_move_from() и get_color().
Протестируем результат изменив цвет хода.
Отчёт отправил: 6925. Артём Выполнено за 10 мин. [Показать отчёт]
Научился: Изучил возможные хода для фигур 
Сложности: Всё было понятно 
Комментарии: Неудобно немного было, что во время видеоурока вначале вызывали функции, а потом их писали :(  
7 Шахматные выборы 00:11:58
26 чел. ★ 5 Done
  На этом уроке мы реализуем выбор фигуры для хода
через клик левой кнопкой мышки по нужной клетке.
Для этого мы сформируем вызов функции click_box()
с координатами клетки, по которой было нажато.

Отчёт отправил: 6925. Артём Выполнено за 15 мин. [Показать отчёт]
Научился: Узнал о функции клика 
Сложности: Всё было понятно 
Комментарии: Насыщенный урок, но полезно посидеть подумать)  
8 Завершение хода 00:07:30
1 тест
24 чел. ★ 5 Done
  На этом уроке мы напишем функцию click_box_to(),
для движения фигуры в указанную клетку -
нужно будет поменять место фигуры в матрице map.
Ещё напишем функцию turn_move() для передачи права хода.
Отчёт отправил: 6925. Артём Выполнено за 10 мин. [Показать отчёт]
Научился: Научился передавать очередь хода 
Сложности: Всё было понятно.  
Комментарии: Однажды мне тренер показал шикарную дебютную ловушку, которую я запомнил на всю жизнь. Сейчас продемонстрирую :)  
9 ЧЕТВЕРТЬФИНАЛЬНЫЙ УРОК без видео
24 чел. ★ 5 Done
  Поздравляю, четверть курса позади.
Предлагаю немножко передохнуть и развлечься.
Напиши, чему ты научился за первую часть этого курса.
Нравится ли тебе такой способ изложения материала.
Какие видишь преимущества и недостатки курса.
Разыграй любую партию и запиши на видео.
Можно без голоса.
Отчёт отправил: 6925. Артём Выполнено за 5 мин. [Показать отчёт]
Научился: Повторил запись видео 
Сложности: Сделать всё с первого раза 
Комментарии: За первую четверть курса я научился новому языку javaScript. Он мне казался трудным поначалу, но увидев сходства с любимым C#, стал увлекаться. Сбылась мечта - написал микрошахматы, которые так и хочется усовершенствовать. Причём постоянно хочется совершенствоваться, а это ли не главное? Так что курсом доволен! Жалею лишь, что так поздно стал заниматься этим делом... А в завершение представлю вам одну из ловушек в защите Грюнфельда, которой я выиграл немало партий :)  
Видеообзор: GEocgRziiUk
10 Шахматная бюрократия 00:10:07
1 тест
24 чел. ★ 5 Done
  На этом уроке мы создадим функцию, которая будет проверять,
может ли фигура сходить так, как её попросят - то есть
реализовать алгоритмы передвижения для каждой фигуры
Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Научился писать функции проверки хода 
Сложности: Не запутаться в циклах, потом понял всё 
Комментарии: Идём дальше, уже с нетерпением ожидаю реализовать алгоритмы)  
11 Кто есть кто? 00:10:59
1 тест
22 чел. ★ 5 Done
  На этом уроке мы реализуем функцию is_correct_move() и
добавим в неё проверку всех возможных фигур.
Так же добавим заглушки корректности хода для каждой фигуры.
Протестируем функции, найдём ошибку в коде и исправим её.
Отчёт отправил: 6925. Артём Выполнено за 15 мин. [Показать отчёт]
Научился: Научился видеть мелкие ошибки  
Сложности: Всё было понятно 
Комментарии: Самое лёгкое - конь, дальше, думаю, слон, ладья, ферзь, король и пешка 
12 Лошадью ходи! 00:07:32
1 тест
22 чел. ★ 5 Done
  На этом уроке мы реализуем самую простую функцию:
is_correct_knight_move() - конь ходит буквой Г :)

Отчёт отправил: 6925. Артём Выполнено за 10 мин. [Показать отчёт]
Научился: Повторил реализацию коня 
Сложности: Всё было понятно 
Комментарии: Реализацию помню с курса "Мат слоном и конём":)  
13 Королевские шаги 00:06:00
21 чел. ★ 5 Done
  На этом уроке мы реализуем функцию is_correct_king_move()
Потом немного повеселимся.
Увидим самый быстрый мат и отрывок из к/ф "Джентльмены удачи".
Отчёт отправил: 6925. Артём Выполнено за 10 час. 00 мин. [Показать отчёт]
Научился: Повторил реализзацию хода короля 
Сложности: Ничего  
Комментарии: С фразой "Лошадью ходи" почему-то ассоциируется мат Легаля, где два коня выманивают короля :) 
14 Горизонтальная вертикаль 00:08:04
1 тест
21 чел. ★ 5 Done
  На этом уроке мы реализуем функцию:
is_correct_rook_move()
Ладья ходит по вертикали или горизонтали.
Отчёт отправил: 6925. Артём Выполнено за 10 мин. [Показать отчёт]
Научился: Изучил алгоритм написания функции для ладьи 
Сложности: Не сразу со смещением разобрался, но пересмотрев урок, всё понял 
Комментарии: Замечаний нет) 
15 Не стой на пути! 00:09:09
21 чел. ★ 5 Done
  На этом уроке мы доработаем функцию is_correct_rook_move().
Добавим проверку, находится ли кто-то на пути фигуры.
Так же мы добавим функцию on_map() для
проверки нахождения координат в пределах доски.
Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Узнал о функции Math.sign 
Сложности: Догадаться до цикла do while 
Комментарии: Идём дальше, всё интереснее :)  
16 Слоновья тропа 00:08:23
21 чел. ★ 5 Done
  На этом уроке мы реализуем функцию:
is_correct_bishop_move(), она будет похожа на
is_correct_rook_move(), но с небольшими изменениями.
Также оптимизируем циклы, добавим проверку границ доски.
Добавим функцию is_empty(), которая будет
проверять доступность хода на эту клетку.
Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Повторил функцию проверки хода слона 
Сложности: Ничего 
Комментарии: Осталось всего две фигурки)) P.S. на фото тоже одна из дебютных ловушек) 
17 Дорогу Королеве! 00:04:03
1 тест
21 чел. ★ 5 Done
  На этом уроке мы ещё раз скопируем алгоритм проверки хода в функцию is_correct_queen_move().
С третьей попытки мы догадаемся вообще убрать проверку на корректность значений delta_x/delta_y.
Ваше задание - предложить свой вариант выделения общего алгоритма из эти трёх функций - is_correct_move_queen/bishop/rook().
Отчёт отправил: 6925. Артём Выполнено за 5 мин. [Показать отчёт]
Научился: Изучил функцию проверки хода ферзя.  
Сложности: Всё было понятно. 
Комментарии: Теперь самое трудное осталось - пешки)  
18 Мелочь пузатая 00:13:23
1 тест
21 чел. ★ 5 Done
  На этом уроке мы порефакторим наш код,
выделив общий алгоритм из трёх функций:
is_correct_move_queen/bishop/rook().
Отчёт отправил: 6925. Артём Выполнено за 30 мин. [Показать отчёт]
Научился: Повторил рефакторинг  
Сложности: Вникнуть в код 
Комментарии: Вроде и нетрудно, но мне всегда говорили писать функции, если вызываем её минимум дважды. А на полуфинал нашёл одну комбинацию)  
19 ПОЛУФИНАЛЬНЫЙ УРОК без видео
21 чел. ★ 5 Done
  Поздравляю, половина курса позади.
Предлагаю немножко передохнуть и развлечься.
Напиши, чему ты научился за вторую часть этого курса.
Нравится ли тебе такой способ изложения материала.
Какие видишь преимущества и недостатки курса.
Разыграй любую партию и запиши на видео.
Можно без голоса.
Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Повторил видеозапись.  
Сложности: Записать без ошибок (3 дубля пришлось) 
Комментарии: Понравилась эта часть тем, что здесь показано наглядно преимущество рефакторинга, который я ненавидел раньше. Но потом понял, что через полгода мне буудет легче читать код :) А в качестве партии взял матч Бернштейн - Капабланка, 1914г, интересная комбинация:) 
Видеообзор: OCZ_lx2qPE0
20 Пешкины законы 00:09:37
19 чел. ★ 5 Done
  На этом уроке мы поговорим о пешках:
+ чем она отличается от других фигур?
+ какие у неё правила?
+ какие у неё исключения?

Мы реализуем функцию is_correct_pawn_move()
и заглушки для вспомогательных функций:
is_correct_white_pawn_move() и is_correct_black_pawn_move().

Лирическое задание - найти/нарисовать интересную картинку о пешках.
Отчёт отправил: 6925. Артём Выполнено за 10 мин. [Показать отчёт]
Научился: Повторил все правила пешки 
Сложности: Нарисовать блок-схему. Запутанной получилась 
Комментарии: Бросай монету орел или решка И выбирай себе судьбу, кто ты король или пешка Только не вешай нос, и если ты встаешь у руля Не забывай бывает так что пешка бьет короля  
21 Судьба пешки 00:13:42
1 тест
19 чел. ★ 5 Done
  На этом уроке мы воспользуемся сайтом draw.io
для рисования схемы алгоритма пешки.

На схеме отобразим следующие правила для пешек:
1. направление зависит от цвета;
2. положение может быть на горизонталях 1-6;
3. могут ходить только прямо и только на одну клетку;
4. с 1/6 горизонтали могут ходить на две клетки через пустую;
5. рубят наискосок на одно поле вперёд-влево/вправо;
6. могут рубить на битое поле (взятие на проходе);
7. на последней линии превращается в слона/коня/ладью/ферзя своего цвета.
Превращение пешки будет реализовано в функции завершения хода box_click_to().

Отчёт отправил: 6925. Артём Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Повторил рисование блок-схемы 
Сложности: Понять блок-схему 
Комментарии: Всё-таки блок-схема помогаем понять любой алгоритм :)  
22 Пешка на охоте 00:08:54
1 тест
19 чел. ★ 5 Done
  На этом уроке мы реализуем часть алгоритма
для функции is_correct_white_pawn_move()
на основе схемы, созданной на прошлом уроке.
Добавим заглушку для функции is_pawn_passant().
Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Научился писать код по блок-схеме. 
Сложности: Всё понятно 
Комментарии: Теперь ждём EnPassant :)  
23 Пешка в сапогах 00:09:56
19 чел. ★ 5 Done
  На этом уроке мы доработаем алгоритм для функции
is_correct_white_pawn_move() на основе блок-схемы.
Так же подкорректируем нашу схему.
Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Научился писать код по блок-схеме 
Сложности: Всё было понятно 
Комментарии: И для чёрных написал, но порефакторить надо ещё)  
24 Взятие на проходе шустрых пешек 00:08:50
1 тест
19 чел. ★ 5 Done
  На этом уроке мы реализуем алгоритм взятия на проходе.
Для этого мы доработаем ранее созданную заглушку is_pawn_passant().
Добавим вспомогательные переменные для хранения координат
возможного взятия на проходе, они нам пригодится на следующем уроке.
Отчёт отправил: 6925. Артём Выполнено за 15 мин. [Показать отчёт]
Научился: Изучил алгоритм взятия на проходе 
Сложности: Не сразу сработал 
Комментарии: Продолжаем:) 
25 Радар для быстрых пешек 00:11:48
1 тест
18 чел. ★ 5 Done
  -- Куда торопимся?
-- Почему превышаем?
-- Покажите ваши координатики...
-- Пройдёмте, пешечка, в отделение...


На этом уроке мы доработаем функцию click_box_to(),
добавив проверку прыгнула ли пешка через клетку.прыгнула, то мы сохраняем координаты,
по которым её можно поймать.
Вынесем написанный алгоритм в отдельную функцию check_pawn_attack()
После чего мы уберём пешку противника в отделение для сбитых фигур.

Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Изучил алгоритм "перепрыгивания" 
Сложности: Не сразу понял, как мы проверяем взятие на проходе сразу, а не спустя ход, допустим 
Комментарии: об этом правиле узнал, уже получив 1 разряд, а до этого не знал его :)  
26 Афроамериканская пешка 00:10:32
18 чел. ★ 5 Done
  На этом уроке мы реализуем правила движения
чёрных пешек по аналогии с белыми.

Для начала мы перенесём общую проверку
из функций is_correct_*_pawn_move()
в функцию is_correct_pawn_move().

Доработаем функцию is_pawn_passant().
Объединим функции is_correct_*_pawn_move()
в общую функцию is_correct_sign_pawn_move().
Отчёт отправил: 6925. Артём Выполнено за 40 мин. [Показать отчёт]
Научился: Повторил рефакторинг 
Сложности: Превращение нескольких функций в одну 
Комментарии: Способ хороший, конечно, но каша в голове часто от таких превращений. Кроме того, в уроке при взятии чёрной пешкой на проходе не снимается белая :(  
27 Пешкина мечта 00:07:44
1 тест
18 чел. ★ 5 Done
  На этом уроке мы исправим ошибку в функции click_box_to(),
чтобы чёрные пешки тоже могли съедать после взятия на проходе.
После чего мы перенесём рабочий код в функцию check_pawn_attack().

Отчёт отправил: 6925. Артём Выполнено за 10 мин. [Показать отчёт]
Научился: Научился исправлять ошибки в коде 
Сложности: Всё было  понятно.  
Комментарии: "В мире шахмат пешка может выйти (ну если тренируется) в ферзи" В.Высоцкий 
28 Волшебное превращение пешки 00:14:53
18 чел. ★ 5 Done
  На этом уроке мы реализуем алгоритм превращения пешки.
Для этого нам понадобится новая функция promote_pawn().
Выбор фигуры реализуем через функцию prompt().
Добавим проверку, чтобы можно было выбирать только разрешённые фигуры.
Доработаем функцию click_box_to() - добавим вызов
превращения пешки если это необходимо.

Отчёт отправил: 6925. Артём Выполнено за 30 мин. [Показать отчёт]
Научился: Изучил алгоритм превращения пешки 
Сложности: Всё был опонятно.  
Комментарии: Немного творчества шахматного) На первом скрине исходная позиция, на втором - что получилось. Комбинация как раз в тему превращения: 1) Ф:h6!! gh 2)gh+ Kpf8 3)Лg8+! Kp:g8 4)h7+ Kpf8 5) h8Ф # 
29 ТРЕТИЙ ЧЕТВЕРТЬФИНАЛЬНЫЙ УРОК без видео
1 тест
18 чел. ★ 5 Done
  Поздравляю, три четверти курса позади.
Предлагаю немножко передохнуть.

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

Приложи к отчёту любую шахматную карикатуру.
Отчёт отправил: 6925. Артём Выполнено за 10 мин. [Показать отчёт]
Научился: Повторил запись 
Сложности: ничего  
Комментарии: Очень полезные алгоритмы изучил, сам бы до них не смог додуматься. Было очень доступно объяснено и главное - короткие видеоуроки, потому что когда идут длинные по 40 минут, то устать можно. А тут легко запомнить :)  
Видеообзор: ZDwWRMGZuak
30 Случайный шах 00:08:07
17 чел. ★ 5 Done
  На этом уроке мы реализуем функцию is_check(),
чтобы король не ходил на клетку, которая под боем.

На время теста вы уберём все пешки и добавим функцию is_check()
с генерируемой случайностью шаха для всех фигур на поле.
Отчёт отправил: 6925. Артём Выполнено за 10 мин. [Показать отчёт]
Научился: Повторил рандом 
Сложности: Всё было понятно 
Комментарии: Не все ходы были доступны из-за рандома, ведь там в 1 из 5 случаев будет шах 
31 Возврат хода 00:12:52
1 тест
17 чел. ★ 5 Done
  На этом уроке мы опишем псевдокод для функции is_check().
Добавим две глобальных переменных: move_figure и to_figure.
Так же добавим функции: move_figure() и back_figure().
Модернизируем функции click_box_to() и promote_pawn()
для поддержки новой системы передвижения фигур по доске.
Отчёт отправил: 6925. Артём Выполнено за 15 мин. [Показать отчёт]
Научился: Создавать функции возврата хода 
Сложности: Не сразу понял смысл функций, т.к. визуально ничего не поменялось 
Комментарии: Ну да посмотрим, что будет дальше :)  
32 Король в розыске 00:10:18
1 тест
17 чел. ★ 5 Done
  На этом уроке мы добавим в функцию is_check() вызов move_figure() и back_figure().
Реализуем вспомогательную функцию find_figure() и поэкспериментируем.
Отчёт отправил: 6925. Артём Выполнено за 30 мин. [Показать отчёт]
Научился: Изучил нестрандартные ситуации для шахмат 
Сложности: всё было понятно 
Комментарии: Нелегко писать код, результат которого не сразу будет виден. Ну да, как мне кажется, для программирования такая глубина знаний только в плюс пойдёт :)  
33 Служба безопасности короля 00:12:58
1 тест
17 чел. ★ 5 Done
  На этом уроке мы продолжим дорабатывать функцию is_check().
Переберём все ходы противника, чтобы исключить
из возможных ходов короля клетки, которые под боем.
Отчёт отправил: 6925. Артём Выполнено за 25 мин. [Показать отчёт]
Научился: Реализовал алгоритм проверки на шах  
Сложности: Всё понятно)  
Комментарии: На четвертьфинальном уроке я показывал партию, где ставили мат жертвой ферзя. Действительно классно видеть все возможные ходы и результат - мат:)  
34 Шах вперёд - шаг назад 00:14:09
1 тест
16 чел. ★ 5 Done
  На этом уроке мы выделим часть кода из функции is_check()
в новую функцию: is_check_after_move(), которая
будет вызываться для проверки возможности хода.
Сама же функция is_check() останется независимой
и может вызываться тогда, когда нам будет нужно.
Отчёт отправил: 6925. Артём Выполнено за 25 мин. [Показать отчёт]
Научился: Повторил рефакторинг 
Сложности: Всё было понятно 
Комментарии: Думаю, надо поставить в функции взятии на проходе проверку на шах ещё. И логичный вопрос ещё с прошлого урока: в чём измеряется сложность алгоритмов?  
35 Информационная панель 00:13:07
1 тест
16 чел. ★ 5 Done
  На этом уроке мы выведем информацию о текущем состоянии игры.
Для этого мы реализуем функцию show_info(),
которая будет вызываться при каждой генерации доски.

Так же нам надо будет реализовать вспомогательные
функции: is_checkmate() и is_stalemate().

Доработаем функцию mark_moves_from() для подсчёта
количества возможных ходов текущего игрока.

Оптимизируем определение очерёдности хода.
Отчёт отправил: 6925. Артём Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Вспомнил функцию мата и научился писать функцию пата 
Сложности: Всё было понятно 
Комментарии: Теперь и мат есть, осталась рокировка :)  
36 Подвиг безымянной пешки 00:15:36
1 тест
16 чел. ★ 5 Done
  На этом уроке мы добавим проверку на
пешечный подвиг по спасению короля:
может ли она взять на проходе вражескую
пешку, которая угрожает королю шахом.

Для этого вынесем проверку взятия на проходе
в отдельную функцию move_pawn_attack().

Для корректной работы кода нам понадобится
ещё одна функция back_pawn_attack().

Отчёт отправил: 6925. Артём Выполнено за 30 мин. [Показать отчёт]
Научился: научился проверять взятие на проходе при шахе 
Сложности: -- 
Комментарии: Финиш остался))  
37 ФИНИШНАЯ ПРЯМАЯ без видео
1 тест
16 чел. ★ 5 Done
  Быстро сказка сказывается, не быстро дело делается.
Наша программа практически завершена,
осталось самую малость - научить короля прятаться за ладьёй,
это таинство называется "рокировка".

Ваше задание.
1. Найти/нарисовать хорошую картинку на тему "Рокировки" и приложить её к отчёту.
2. Выписать все правила, при которых возможна рокировка.



Отчёт отправил: 6925. Артём Выполнено за 15 мин. [Показать отчёт]
Научился: Вспомнил рокировку 
Сложности: Всё было понятно 
Комментарии: Рокировка запрещена, если: 1) король и/или ладья делали ход; 2) между королём и ладьёй есть хоть одна фигура любого цвета; 3) королю объявлен шах; 4) при рокировке король попал или проходил бы через битое поле.  
38 Правила рокировки 00:09:54
1 тест
16 чел. ★ 5 Done
  На этом уроке мы обсудим правила рокировки короля.
Так же обсудим необходимы действия для её совершения.
Найти интересную картинку на тему рокировки.

Отчёт отправил: 6925. Артём Выполнено за 10 мин. [Показать отчёт]
Научился: Рисовать блок-схемы 
Сложности: Всё понятно 
Комментарии: Ну написать блок-схему нетрудно, а вот реализовать...  
39 Флаг над замком 00:14:39
1 тест
16 чел. ★ 5 Done
  На этом уроке мы создадим 4 глобальных флага:
can_white_castle_left, can_white_castle_right,
can_black_castle_left, can_black_castle_right.

Реализуем вспомогательную функцию update_castle_flags().
Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Научился проверять, был ли ход королём или ладьёй 
Сложности: Ничего 
Комментарии: Следующая проверка, наверное, на шах)  
40 Король всемогущий 00:12:13
1 тест
16 чел. ★ 5 Done
  На этом уроке мы добавим проверку для короля,
может ли он сделать рокировку - can_castle().

Добавим заглушки для вспомогательных функций:
can_white_castle() и can_black_castle().
Отчёт отправил: 6925. Артём Выполнено за 30 мин. [Показать отчёт]
Научился: Научился проверять рокировку 
Сложности: Всё было понятно :) 
Комментарии: Уже жду момента рокировки)  
41 Рокировка под шахом 00:11:13
1 тест
16 чел. ★ 5 Done
  На этом уроке мы доработаем функцию can_castle(),
добавив проверку на шах и оптимизируем is_check().
Отчёт отправил: 6925. Артём Выполнено за 15 мин. [Показать отчёт]
Научился: Реализовал проверку на шах 
Сложности: Проблем не было 
Комментарии: В предвкушении))) 
42 Белолевая рокировка 00:14:23
1 тест
16 чел. ★ 5 Done
  На этом уроке мы отрефакторим функцию can_castle(),
добавив заглушки вспомогательных функций can_white/black_cl/cr().
Отчёт отправил: 6925. Артём Выполнено за 30 мин. [Показать отчёт]
Научился: Повторил рефакторинг 
Сложности: Всё понятно)  
Комментарии: Продолжаем :) 
43 Рокировка на все времена 00:08:36
1 тест
16 чел. ★ 5 Done
  На этом уроке мы реализуем функции can_white/black_cl/cr().
Отчёт отправил: 6925. Артём Выполнено за 10 мин. [Показать отчёт]
Научился: Проверять битые поля и отсутствие фигур между королём и ладьёй 
Сложности: Всё понятно, чёрную рокировку даже сам написал)  
Комментарии: Осталась ладья :)  
44 Ладейный паркур 00:10:07
1 тест
16 чел. ★ 5 Done
  На этом уроке мы реализуем функцию move_castling_rook(),
чтобы при рокировке наши ладьи тоже перемещались.
Отчёт отправил: 6925. Артём Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Завершил рокировку 
Сложности: Найти этюд 
Комментарии: Теме рокировки посвящается этюд Лойда, 1857г. Решение такое: 1) Rf4 Kxg3 2) 0-0! Kh3 3) R1f3x  
45 ФИНАЛЬНЫЙ УРОК без видео
14 чел. ★ 5 Done
  Поздравляю с завершением курса!

Оставь, пожалуйста, отзыв об этом курсе.

Запиши видеообзор созданной программы.

Напиши, что ещё можно добавить в эту программу.
Отчёт отправил: 6925. Артём Выполнено за 20 мин. [Показать отчёт]
Научился: Повторил защиту своих программ 
Сложности: ничего)  
Комментарии: Курс замечателен тем, что познакомился подробно с новым языком программирования и, что самое главное, - я вижу налицо результат своего труда. Я всегда хотел написать микрошахматы, но не думал, что будет так красиво. Зато теперь есть цель - написать искусственный интеллект для этой программы. Хотя бы на уровне 1 разряда. Спасибо большое за этот курс и спасибо за воплощение мечты в реальность! По-моему, это не Газпром "Мечты сбываются", а Видеошарп - мечты сбываются :) P.S. в обзоре дарю одну из шикарнейших партий в истории шахмат :)  
Видеообзор: GXF36xxZwoE
46 VIP урок - Минное поле 00:11:37
14 чел. ★ 5 Done
  На этом уроке мы реализуем функцию mark_attack(),
чтобы отображать все битые поля на шахматной доске,
куда может атаковать противник сразу после вашего хода.
Доработаем функцию show_map() для отображения полей.
Отчёт отправил: 6925. Артём Выполнено за 30 мин. [Показать отчёт]
Научился: Научился показывать битые поля 
Сложности: Всё было понятно 
Комментарии: так сразу видно, сколько атак на определённое поле)  
47 VIP урок - Бестолковый интеллект 00:10:38
13 чел. ★ 5 Done
  На этом уроке мы реализуем функцию doRandMove(),
для случайного выбор какой фигурой пойти,
Так же столкнём два "рандомайзера" на шахматной доске.


Отчёт отправил: 6925. Артём Выполнено за 40 мин. [Показать отчёт]
Научился: Создал рандомайзер ходов 
Сложности: Всё было понятно 
Комментарии: Ну что, Евгений Витольдович семена для шахмат дал, осталось вырастить деревце и регулярно его поливать) За курс только спасибо, потому что свершилась мечта - написал шахматы. Жаль только, что слишком поздно начал заниматься программированием... 
  Итого:   47 видеоуроков 7 час. 14 мин.
32 теста
13 чел. ★ 5  
  Финалисты:   Иван Воронин,   Алексей В.,   Tekashnik,   Артём,   Сергей Соколов,   Yefim,   Константин,   Елена,   Дмитрий,   Andrew,   Tom,   Александр Шлома,   MaxB .

Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Записывать партию
Трудности: Запрограммировать запись партии
Курс Микрошахматы на Javascript получился не просто хорошим, а сказочно шикарным! До курса мне казалось, что программирование шахмат это заоблачные высоты. И хотя Я понимаю, то, что сделано - это еще не игра в полном смысле этого слова, но фундамент заложен основательный. Почти из каждого урока я узнавал о каком-то новом программистском приеме и почти каждый раз не переставал восторгаться красотой и простой кода. Причем все было настолько понятно, что можно было самому вносить свои изменения, не опасаясь, что-то испортить. Попутно много интересного узнавал о самих шахматах. Конечно, осталось место для совершенствования программы и добавления дополнительных опций. Сейчас, при клике на фигуру, программа показывает возможные ходы этой фигуры. На стадии отладки программы - это очень полезный инструмент. Для новичков шахматной игры - это также прекрасная возможность быстрее освоить правила игры. Однако, опытных игроков такой подход может даже раздражать, т.к. эта своеобразная подсказка сопернику. Компромисс - сделать это в виде опции. Что ещё можно добавить в прoгpаммy ? 0. Навести косметический ремонт (Отразить реальные шахматные координаты) 1. Контроль времени. 2. Запись партии. 3. Установка начальной позиции для шахматных задач. 4. Возврата хода(как опция). 5. Симуляция партии 6. Введение анимации при движении фигур. Хочу еще раз поблагодарить Евгения Витольдовича за прекрасный курс. Предлагаю Евгению Витольдовичу подумать над продолжением курса в плане научить программу самостоятельно делать ходы. Для начала - решать шахматные задачи. Я думаю найдется немало желающих пройти этот курс. Для видео отчета я доработал программу и теперь можно записать партию заранее, а затем программа демонстрирует игру на полуавтомате.


Научился: Курс просто супер. Не ожидал, что мне он так легко дастся. Есть желание его оптимизировать, добавить нотацию и запись партии, дописать оставшиеся правила (троекратное повторение, правило 50 ходов, 75 ходов). И вообще надо правила почитать, а то они меняются каждый год :)
Трудности: Записать видео, придумать тему обзора. В итоге сплагиатил идею