Обучение языку 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.

В каждом уроке кроме видео есть фото-инструкция по изменению кода.
Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 22 мин. [Показать отчёт]
Научился: Практически первое знакомство с javascript/html. Именно сейчас очень нужен. 
Сложности: С удовольствием выполнил бы ДЗ по раскраске клеток и их координатам, но пока не имею достаточных знаний. 
2 Координатное поле 00:08:53
28 чел. ★ 5 Done
  На этом уроке мы увеличим клетки нашей доски,
чтобы они были одинаковыми в любой ситуации.
Уберём зазор между клетками.
Так же мы раскрасим доску по правилам игры,
чтобы правая-нижняя клетка была светлой.
Добавим координаты слева и снизу доски,
а для полноты картины добавил заголовок.
Отчёт отправил: 4814. Дмитрий Выполнено за 55 мин. [Показать отчёт]
Научился: Изучаю javascript. Все отлично. 
Сложности: Все ново. 
3 Шахматные буквы 00:09:05
1 тест
28 чел. ★ 5 Done
  На этом уроке мы отобразим «шахматные» буквы на доске.
Для этого мы создадим массив, заполним его буквами,
которые кодируют фигуры по нотации FEN
и сделаем их отображение в таблице.
Отчёт отправил: 4814. Дмитрий Выполнено за 5 час. 56 мин. [Показать отчёт]
Научился: Создавать шахматную доску, раскрашивать, добавлять фигуры. Великолепно. 
Сложности: Все понятно, но ново. 
4 Фигуры на доске 00:07:13
1 тест
28 чел. ★ 5 Done
  На этом уроке наши фигуры обретут свой облик,
для этого нам потребуется вспомогательная функция figure_to_html(),
которая будет возвращать облик нужной нам фигуры в формате HTML-Unicode.
Поиграемся с размером и цветом фигур.
Отчёт отправил: 4814. Дмитрий Выполнено за 9 час. 16 мин. [Показать отчёт]
Научился: Преобразовывать знаки в фигуры. Все замечательно. 
Сложности: Очень люблю функцию, которая считывает из текстового файла различные знаки ".", "#", "*" и т.п., преобразовывает в графические картинки и формирует карту. Как, например, в сокобане. 
5 Светофор для фигур 00:08:35
27 чел. ★ 5 Done
  На этом уроке мы будем отмечать,
какими фигурами можно ходить и куда можно ходить.
Пока реализуем простое правило:
можно ходить на пустую клетку или клетку врага.
Для этого мы добавим ещё один массив inf,
для хранения возможных ходов выбранной фигуры.
Так же мы доработаем функцию show_map (),
чтобы она отображала подсказки из массива inf.
Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 5 мин. [Показать отчёт]
Научился: Создание массива для подсветки и перемещения фигур. Все замечательно. 
Сложности: Сложно было найти ошибку, связанную со скобками в массиве {} вместо []. Ошибки не высвечиваются, а искать тяжко. 
6 Фигурная перекличка 00:07:49
2 теста
26 чел. ★ 5 Done
  На прошлом уроке мы статично отобразили
выбранную фигуру и поля, куда эта фигура может пойти.
Теперь наша задача реализовать это программно.
Для этого нам понадобится переменная для хранения цвета хода и
реализуем функции: mark_moves_from(), can_move_from() и get_color().
Протестируем результат изменив цвет хода.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 46 мин. [Показать отчёт]
Научился: Реализовали функции определения возможности движения фигур при условии, что сейчас наш ход. Все замечательно. 
Сложности: Все понятно. 
7 Шахматные выборы 00:11:58
26 чел. ★ 5 Done
  На этом уроке мы реализуем выбор фигуры для хода
через клик левой кнопкой мышки по нужной клетке.
Для этого мы сформируем вызов функции click_box()
с координатами клетки, по которой было нажато.

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

Отчёт отправил: 4814. Дмитрий Выполнено за 21 мин. [Показать отчёт]
Научился: Реализовали функцию возможных ходов конем. На редкость просто. 
Сложности: Думаю, что функция возможных ходов короля без учета рокировки и угрозы шаха: if (Math.abs (dx - sx) * Math.abs (dy - sy) <= 1) if (Math.abs (dx - sx) == 1 || Math.abs (dy - sy) == 1) return true; return false;  
13 Королевские шаги 00:06:00
21 чел. ★ 5 Done
  На этом уроке мы реализуем функцию is_correct_king_move()
Потом немного повеселимся.
Увидим самый быстрый мат и отрывок из к/ф "Джентльмены удачи".
Отчёт отправил: 4814. Дмитрий Выполнено за 8 мин. [Показать отчёт]
Научился: Реализовали функцию допустимых ходов для короля. Все отлично. 
Сложности: Все понятно. 
14 Горизонтальная вертикаль 00:08:04
1 тест
21 чел. ★ 5 Done
  На этом уроке мы реализуем функцию:
is_correct_rook_move()
Ладья ходит по вертикали или горизонтали.
Отчёт отправил: 4814. Дмитрий Выполнено за 54 мин. [Показать отчёт]
Научился: Реализована функция хода туры. 
Сложности: Все отлично 
15 Не стой на пути! 00:09:09
21 чел. ★ 5 Done
  На этом уроке мы доработаем функцию is_correct_rook_move().
Добавим проверку, находится ли кто-то на пути фигуры.
Так же мы добавим функцию on_map() для
проверки нахождения координат в пределах доски.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 18 мин. [Показать отчёт]
Научился: Реализовывать функцию, проверяющую наличие препятствий на пути движения, а также проверка нахождения на карте. 
Сложности: Все интересно. 
16 Слоновья тропа 00:08:23
21 чел. ★ 5 Done
  На этом уроке мы реализуем функцию:
is_correct_bishop_move(), она будет похожа на
is_correct_rook_move(), но с небольшими изменениями.
Также оптимизируем циклы, добавим проверку границ доски.
Добавим функцию is_empty(), которая будет
проверять доступность хода на эту клетку.
Отчёт отправил: 4814. Дмитрий Выполнено за 49 мин. [Показать отчёт]
Научился: Оптимизировали функции проверки корректности хода для слона и туры, добавили функцию, проверяющую нахождение в рамках карты, добавили ее в функции can_move_from/to. 
Сложности: Уже становится сложно удержать это в голове, особенно с учетом оптимизаций.  
17 Дорогу Королеве! 00:04:03
1 тест
21 чел. ★ 5 Done
  На этом уроке мы ещё раз скопируем алгоритм проверки хода в функцию is_correct_queen_move().
С третьей попытки мы догадаемся вообще убрать проверку на корректность значений delta_x/delta_y.
Ваше задание - предложить свой вариант выделения общего алгоритма из эти трёх функций - is_correct_move_queen/bishop/rook().
Отчёт отправил: 4814. Дмитрий Выполнено за 38 мин. [Показать отчёт]
Научился: Реализовали функцию проверки корректности хода для ферзя. 
Сложности: Все новое и интересное. 
18 Мелочь пузатая 00:13:23
1 тест
21 чел. ★ 5 Done
  На этом уроке мы порефакторим наш код,
выделив общий алгоритм из трёх функций:
is_correct_move_queen/bishop/rook().
Отчёт отправил: 4814. Дмитрий Выполнено за 44 мин. [Показать отчёт]
Научился: Вынесли и оптимизировали код для ферзя, слона и туры. 
Сложности: Становится посложнее разбираться в функциях, они уже переплетены между собой. 
19 ПОЛУФИНАЛЬНЫЙ УРОК без видео
21 чел. ★ 5 Done
  Поздравляю, половина курса позади.
Предлагаю немножко передохнуть и развлечься.
Напиши, чему ты научился за вторую часть этого курса.
Нравится ли тебе такой способ изложения материала.
Какие видишь преимущества и недостатки курса.
Разыграй любую партию и запиши на видео.
Можно без голоса.
Отчёт отправил: 4814. Дмитрий Выполнено за 15 мин. [Показать отчёт]
Научился: Научился формулировать и реализовывать правила хода для каждой из фигур с учетом проверки на корректность хода. Все отлично и крайне нужно. 
Сложности: Сложности начинаются сейчас, когда мы уже пишем функции не для каждой из фигур, а объединяем их, оптимизируя. С одной стороны, функции становятся проще, с другой, глаза начинают разбегаться, усложняется иерархия функций. 
Видеообзор: 5zI4yOVCl5M
20 Пешкины законы 00:09:37
19 чел. ★ 5 Done
  На этом уроке мы поговорим о пешках:
+ чем она отличается от других фигур?
+ какие у неё правила?
+ какие у неё исключения?

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

Лирическое задание - найти/нарисовать интересную картинку о пешках.
Отчёт отправил: 4814. Дмитрий Выполнено за 35 мин. [Показать отчёт]
Научился: Шахматным правилам, связанным с пешкой.  
Сложности: Поговорки: Конь пешке не товарищ. Кафтан продай, но пешку возьми. Лес рубят - пешки летят. Сотку махнул  - пешкой занюхни. С похмелья и пешка - огурец! Пешка не пушка, а воробей - не кукушка. Хочешь драться - бей ферзя, но родную тещу даже пешкой бить нельзя.  
21 Судьба пешки 00:13:42
1 тест
19 чел. ★ 5 Done
  На этом уроке мы воспользуемся сайтом draw.io
для рисования схемы алгоритма пешки.

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

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


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

Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 40 мин. [Показать отчёт]
Научился: Научились брать пешку на проходе. Все отлично. 
Сложности: По отдельности все понятно.  
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().
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 23 мин. [Показать отчёт]
Научился: Написали функцию допустимых ходов для черной пешки и тут же объединили 2 функции в 1 и оптимизировали их. Такой вариант лучше. Но мы еще не закончили полностью с черной пешкой, т.к. еще не реализовали механизм "поедания" черной пешкой белую "на проходе". Необходимо внести дополнения в функцию click_box_to 
Сложности: По отдельности все понятно, но в целом становится уже сложнее ориентироваться во взаимосвязи и последовательности функций. 
27 Пешкина мечта 00:07:44
1 тест
18 чел. ★ 5 Done
  На этом уроке мы исправим ошибку в функции click_box_to(),
чтобы чёрные пешки тоже могли съедать после взятия на проходе.
После чего мы перенесём рабочий код в функцию check_pawn_attack().

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

Отчёт отправил: 4814. Дмитрий Выполнено за 1 день 4 час. 40 мин. [Показать отчёт]
Научился: Закончили описание правил для пешек и фигур. Функция prompt очень понравилась. 
Сложности: Все отлично. 
29 ТРЕТИЙ ЧЕТВЕРТЬФИНАЛЬНЫЙ УРОК без видео
1 тест
18 чел. ★ 5 Done
  Поздравляю, три четверти курса позади.
Предлагаю немножко передохнуть.

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

Приложи к отчёту любую шахматную карикатуру.
Отчёт отправил: 4814. Дмитрий Выполнено за 6 мин. [Показать отчёт]
Научился: Вся третья четверть была посвящена исключительно пешке как самой сложной для реализации фигуре. Научили пешку правильно ходить, прыгать через клетку, брать чужую пешку на проходе, а также превращаться в сильную фигуру! 
Сложности: Все отлично и крайне интересно! 
30 Случайный шах 00:08:07
17 чел. ★ 5 Done
  На этом уроке мы реализуем функцию is_check(),
чтобы король не ходил на клетку, которая под боем.

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

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

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

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

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

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

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

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



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

Отчёт отправил: 4814. Дмитрий Выполнено за 6 час. 30 мин. [Показать отчёт]
Научился: Повторили правила и составили псевдоалгоритм рокировки. Все отлично. 
Сложности: Все понятно.  
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().
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 59 мин. [Показать отчёт]
Научился: Реализовали функцию проверки не делали ли ранее (до момента рокировки) ходы ладьи и король. Если фигуры двигались - рокировка с их участием уже невозможна. Все отлично. 
Сложности: Все понятно. 
40 Король всемогущий 00:12:13
1 тест
16 чел. ★ 5 Done
  На этом уроке мы добавим проверку для короля,
может ли он сделать рокировку - can_castle().

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

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

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

Напиши, что ещё можно добавить в эту программу.
Отчёт отправил: 4814. Дмитрий Выполнено за 12 час. 41 мин. [Показать отчёт]
Научился: Мне очень понравился видеокурс, особенно с учетом того, что мне как раз необходимо изучать джаваскрипт для создания "игры своей мечты", где C# - сервер, js - клиент. Курс "попался" очень вовремя, именно в тот момент, когда я как раз приобрел книги по js/html/css,  к тому же имеет много общих элементов с моей будущей игрой - двумерная карта, перемещение и взятие фигур, поиск пути, передача хода и т.п. 
Сложности: Самым сложным будет адаптировать код под свои нужды и углубить свои навыки в процессе написания самостоятельной игры. Особенно с учетом клиент-серверного приложения. В этом вопросе рассчитываю также на курс "клиент-серверные шахматы". Дополнительная неожиданная проблема возникла при записи видео в связи с тем, что youtube не поддерживает параметры монитора 21:9, что очень странно, т.к. месяц назад подобную запись пропустил. Пришлось более 10 раз переписывать обзор. 
Видеообзор: Sy1CuJ0ClNw
46 VIP урок - Минное поле 00:11:37
14 чел. ★ 5 Done
  На этом уроке мы реализуем функцию mark_attack(),
чтобы отображать все битые поля на шахматной доске,
куда может атаковать противник сразу после вашего хода.
Доработаем функцию show_map() для отображения полей.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 12 мин. [Показать отчёт]
Научился: Добавили функцию, отражающую степень защищенности соперником клеток.  
Сложности: Сложность в том, что вообще не знаю html, поэтому сложно ориентироваться в редактировании функции show_map, когда задаем ширину и цвет рамки. Зато параллельно учится html. 
47 VIP урок - Бестолковый интеллект 00:10:38
13 чел. ★ 5 Done
  На этом уроке мы реализуем функцию doRandMove(),
для случайного выбор какой фигурой пойти,
Так же столкнём два "рандомайзера" на шахматной доске.


Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 23 мин. [Показать отчёт]
Научился: Реализовали функцию случайных ходов. Организовал сражение 2 рандомайзеров. Убедился, что черный рандомайзер играет в шахматы лучше меня. Я таких мудреных комбинаций и не видел. Черные играли крайне агрессивно, слопав почти все белые фигуры, кроме 2 пешек и слона, потеряв всего лишь 2 пешки, 2 ладьи и 1 слона. С последних 2 ходов черных я вообще обалдел: Король белых стоял на своей позиции e1. Черная пешка делает ход b2-b1, превращается в ферзя, шахует белого короля.  Королю закрыться нечем, должен уходить. Король не может уйти на f2, т.к. ферзь и черная пешка угрожают, не может на e2, т.к. черный конь бьет. При этом король даже не может подойти к пешке, т.к. связка конь-пешка блокируют сразу 4 клетки в линии. И король делает вынужденный ход - Ke1-d2. И черные тут же двигают пешку c4-c3 и объявляют мат. При этом эта пешка прикрыта сразу ферзем и слоном! И королю уйти некуда, т.к. все 8 (!!!) клеток вокруг под ударом!!! P.S. Ожидал более бессмысленных ходов от рандомайзера и взаимоуничтожения фигур, а он провел эталонную финальную атаку без лишних ходов. И сантиментов.  
Сложности: Курс очень понравился. По отдельности все понятно. Сложно будет разбираться при детальном анализе и попытке сделать сниппеты.  
  Итого:   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 ходов). И вообще надо правила почитать, а то они меняются каждый год :)
Трудности: Записать видео, придумать тему обзора. В итоге сплагиатил идею