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

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

Отчёт отправил: 11589. Yefim Выполнено за 1 час. 20 мин. [Показать отчёт]
Научился: создавать события клик для каждой клеточки доски 
Сложности: Не было сложностей 
Комментарии: нет замечаний 
8 Завершение хода 00:07:30
1 тест
24 чел. ★ 5 Done
  На этом уроке мы напишем функцию click_box_to(),
для движения фигуры в указанную клетку -
нужно будет поменять место фигуры в матрице map.
Ещё напишем функцию turn_move() для передачи права хода.
Отчёт отправил: 11589. Yefim Выполнено за 29 мин. [Показать отчёт]
Научился: двигать фигуры 
Сложности: заставить черных  ходить 
Комментарии: Реализовал Мат Люшера  
9 ЧЕТВЕРТЬФИНАЛЬНЫЙ УРОК без видео
24 чел. ★ 5 Done
  Поздравляю, четверть курса позади.
Предлагаю немножко передохнуть и развлечься.
Напиши, чему ты научился за первую часть этого курса.
Нравится ли тебе такой способ изложения материала.
Какие видишь преимущества и недостатки курса.
Разыграй любую партию и запиши на видео.
Можно без голоса.
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 33 мин. [Показать отчёт]
Научился: строить таблицы, создавать события, узнал юникоды шахматных фигур, познакомился с основами алгоритмов для построения шахматной программы.  
Сложности: Не было сложностей 
Комментарии: В течении нескольких коротких уроков фактически была создана реальная шахматная игра. Почему реальная? Если сравнить созданную программу с реальными доской и фигурами, то по функциональности это почти один к одному. И не беда, что пешки и фигуры могут ходить как угодно. Ведь в реальной физической игре имеем тоже самое. Главное, что два игрока могут играть вполне полноченные партии(почти). Почему почти? Потому что еще не реализовано превращение пешки в фигуру. Но все равно получилось очень классно!!! Браво, Евгений Витольдович!!!  
Видеообзор: 61zrNg_BIHU
10 Шахматная бюрократия 00:10:07
1 тест
24 чел. ★ 5 Done
  На этом уроке мы создадим функцию, которая будет проверять,
может ли фигура сходить так, как её попросят - то есть
реализовать алгоритмы передвижения для каждой фигуры
Отчёт отправил: 11589. Yefim Выполнено за 12 мин. [Показать отчёт]
Научился: Сoздать фyнкцию can_move() 
Сложности: Не было сложностей 
Комментарии: нет замечаний 
11 Кто есть кто? 00:10:59
1 тест
22 чел. ★ 5 Done
  На этом уроке мы реализуем функцию is_correct_move() и
добавим в неё проверку всех возможных фигур.
Так же добавим заглушки корректности хода для каждой фигуры.
Протестируем функции, найдём ошибку в коде и исправим её.
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 11 мин. [Показать отчёт]
Научился: Красивому и удобному форматированию кода. 
Сложности: Найти ошибку в строке function is_king  (figure){return figure.toUpperCase == "K";} Забыл скобки функции .toUpperCase() 
Комментарии: Нет замечаний 
12 Лошадью ходи! 00:07:32
1 тест
22 чел. ★ 5 Done
  На этом уроке мы реализуем самую простую функцию:
is_correct_knight_move() - конь ходит буквой Г :)

Отчёт отправил: 11589. Yefim Выполнено за 11 мин. [Показать отчёт]
Научился: Красивому решению ходов коня 
Сложности: не было сложностей 
Комментарии: Красивое решение для ходов коня 
13 Королевские шаги 00:06:00
21 чел. ★ 5 Done
  На этом уроке мы реализуем функцию is_correct_king_move()
Потом немного повеселимся.
Увидим самый быстрый мат и отрывок из к/ф "Джентльмены удачи".
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 11 мин. [Показать отчёт]
Научился: упрощать функции ходов короля и коня частично научил ладью ходить 
Сложности: найти время 
Комментарии: в прошлом отчете я написал функцию ходов короля самостоятельно. функция работает нормально. Но после просмотра урока увидел более короткое и изящное решение. По аналогии сократил функцию коня. Попытался начать функцию ходов ладьи. 
14 Горизонтальная вертикаль 00:08:04
1 тест
21 чел. ★ 5 Done
  На этом уроке мы реализуем функцию:
is_correct_rook_move()
Ладья ходит по вертикали или горизонтали.
Отчёт отправил: 11589. Yefim Выполнено за 2 мин. [Показать отчёт]
Научился: определять пути ладьи 
Сложности: не было сложностей 
Комментарии: Горизонтальная вертикаль - красивое название 
15 Не стой на пути! 00:09:09
21 чел. ★ 5 Done
  На этом уроке мы доработаем функцию is_correct_rook_move().
Добавим проверку, находится ли кто-то на пути фигуры.
Так же мы добавим функцию on_map() для
проверки нахождения координат в пределах доски.
Отчёт отправил: 11589. Yefim Выполнено за 18 мин. [Показать отчёт]
Научился: красивому алгоритму ходов ладьи 
Сложности: понять, почему не додумался сам 
Комментарии: Каждый раз не устаю восторгаться красотой алгоритмов 
16 Слоновья тропа 00:08:23
21 чел. ★ 5 Done
  На этом уроке мы реализуем функцию:
is_correct_bishop_move(), она будет похожа на
is_correct_rook_move(), но с небольшими изменениями.
Также оптимизируем циклы, добавим проверку границ доски.
Добавим функцию is_empty(), которая будет
проверять доступность хода на эту клетку.
Отчёт отправил: 11589. Yefim Выполнено за 44 мин. [Показать отчёт]
Научился: кодировать ходы ладьи, слона и Ферзя 
Сложности: найти время 
Комментарии: Красивый код. В одном из заданий предагалось сократить код для ходов коня. Я предложил свой вариант (см скриншот). Но обратил внимание, что в видео уроке этот код остался без изменений. 
17 Дорогу Королеве! 00:04:03
1 тест
21 чел. ★ 5 Done
  На этом уроке мы ещё раз скопируем алгоритм проверки хода в функцию is_correct_queen_move().
С третьей попытки мы догадаемся вообще убрать проверку на корректность значений delta_x/delta_y.
Ваше задание - предложить свой вариант выделения общего алгоритма из эти трёх функций - is_correct_move_queen/bishop/rook().
Отчёт отправил: 11589. Yefim Выполнено за 33 мин. [Показать отчёт]
Научился: обобщать функции 
Сложности: Не было сложностей 
Комментарии: нет замечаний 
18 Мелочь пузатая 00:13:23
1 тест
21 чел. ★ 5 Done
  На этом уроке мы порефакторим наш код,
выделив общий алгоритм из трёх функций:
is_correct_move_queen/bishop/rook().
Отчёт отправил: 11589. Yefim Выполнено за 22 мин. [Показать отчёт]
Научился: обобщать функции 
Сложности: Понять, чем мое решение хуже. На мой взгляд оно проще и существено короче.  
Комментарии: Дело в том, что в предыдущем уроке было предложено нам попытаться реализовать то, что сделано в последнем "Мелочь пузатая". И я это сделал и осмелюсь пока не использовать вариант предложенный Евгением Витольдовичем. Хотя если все это сделано с дальним прицелом и все новые функции еще будут использоваться в будущем, то это другое дело. Хотелось бы узнать ваше мнение о моем варианте обобщенной функции is_correct_line_move(), которую я назвал is_correct_rbq_move(sx, sy, dx, dy, r1b2q0). Часть имени line я поменял на rbq, что означает ладья, слон и королева. Дополнительный параметр r1b2q0 целого типа - Дельта: для ладьи - +1, для слона - +2. и для королевы - 0. Если я не прав - объясните. Приму любую конструктивную критику.  
19 ПОЛУФИНАЛЬНЫЙ УРОК без видео
21 чел. ★ 5 Done
  Поздравляю, половина курса позади.
Предлагаю немножко передохнуть и развлечься.
Напиши, чему ты научился за вторую часть этого курса.
Нравится ли тебе такой способ изложения материала.
Какие видишь преимущества и недостатки курса.
Разыграй любую партию и запиши на видео.
Можно без голоса.
Отчёт отправил: 11589. Yefim Выполнено за 33 мин. [Показать отчёт]
Научился: За вторую часть этого курса мы в основном научили правильно ходить все фигуры. Почему в основном? Король остался "недоделанным". Надеюсь это еще впереди.  
Сложности: см. предыдущие отчеты 
Комментарии: Мне нравится такой способ изложения материала. Какие вижу преимущества и недостатки курса? Небольшие по времени уроки позволяют лучше переваривать материал. С другой стороны время подготовки отчета значительно больше времени усвоения урока. Во многих случаях код оказался значительно проще, чем изначально прндполагал. И это радует.  
20 Пешкины законы 00:09:37
19 чел. ★ 5 Done
  На этом уроке мы поговорим о пешках:
+ чем она отличается от других фигур?
+ какие у неё правила?
+ какие у неё исключения?

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

Лирическое задание - найти/нарисовать интересную картинку о пешках.
Отчёт отправил: 11589. Yefim Выполнено за 3 час. 23 мин. [Показать отчёт]
Научился: понять реальную сложность реализации алгоритма ходов пешки. 
Сложности: По трудоемкости рeализoвать алгоритмы функции is_correct_*_pawn_move() мне представляется гораздо  более сложной задачей, чем алгоритмы всех фигур вместе взятых.  
Комментарии: Кроме того, чтобы организовать возможность взятия на проходе необходимо запоминать предыдущий ход противника. Что касается разных историй/анекдотов про пешку, то их в интернете предостаточно. И чтобы не повторяться, я попробовал сочинить свою загадку-стишок. Загадка-алгоритм собственного изготовления Смела я и упряма Хожу я только прямо на шаг один... И только лишь в начале могу пойти на два. Пусть враг усвоит мой урок: Обычно бью наискосок. И только на проходе могу убить я сходу. Я не хожу направо, Я не хожу налево. А если до конца дойду то стану королевой.  
21 Судьба пешки 00:13:42
1 тест
19 чел. ★ 5 Done
  На этом уроке мы воспользуемся сайтом draw.io
для рисования схемы алгоритма пешки.

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

Отчёт отправил: 11589. Yefim Выполнено за 1 час. 55 мин. [Показать отчёт]
Научился: познакомился с отличным ресурсом построения блок-схем https://www.draw.io/ 
Сложности: первые шаши на https://www.draw.io/ 
Комментарии: Взял за основу блок-схему урока, но кое-где сделал свою коррецию 
22 Пешка на охоте 00:08:54
1 тест
19 чел. ★ 5 Done
  На этом уроке мы реализуем часть алгоритма
для функции is_correct_white_pawn_move()
на основе схемы, созданной на прошлом уроке.
Добавим заглушку для функции is_pawn_passant().
Отчёт отправил: 11589. Yefim Выполнено за 22 мин. [Показать отчёт]
Научился: заставить пешку делать первые правильные шаги 
Сложности: не было сложностей 
Комментарии: нет замечаний 
23 Пешка в сапогах 00:09:56
19 чел. ★ 5 Done
  На этом уроке мы доработаем алгоритм для функции
is_correct_white_pawn_move() на основе блок-схемы.
Так же подкорректируем нашу схему.
Отчёт отправил: 11589. Yefim Выполнено за 39 мин. [Показать отчёт]
Научился: Дoрaбатывать функцию is_correct_white_pawn_move() 
Сложности: Не было сложностей 
Комментарии: В видео уроке задается вопрос или кто-нибудь заметил ошибку в блок-схеме при проверке условия изменился ли х? Отвечаю: я заметил и в своей блок-схеме отразил эту проверку  в виде delta_x == 0.  
24 Взятие на проходе шустрых пешек 00:08:50
1 тест
19 чел. ★ 5 Done
  На этом уроке мы реализуем алгоритм взятия на проходе.
Для этого мы доработаем ранее созданную заглушку is_pawn_passant().
Добавим вспомогательные переменные для хранения координат
возможного взятия на проходе, они нам пригодится на следующем уроке.
Отчёт отправил: 11589. Yefim Выполнено за 59 мин. [Показать отчёт]
Научился: Дoрaбатывать функцию is_pawn_passant(). 
Сложности: ене было сложностей 
Комментарии: Из приведенного скриншота видно, что алгоритм явно не дороботан. Ниже предлагается мой варант алгоритма для белых: Если пешка не стоит на 4-горизонтали то возвращаем false. Если последний ход соперника был сделан не пешкой то возвращаем false. Если ход соперника был сделан не с 6-горизонтали на 4-ю? то возвращаем false. Если пешка соперника не на соседней соседней вертикали  то возвращаем false. при овсобождении своей пешки открывается шах своему королю то возвращаем false. иначе возвращаем true.  
25 Радар для быстрых пешек 00:11:48
1 тест
18 чел. ★ 5 Done
  -- Куда торопимся?
-- Почему превышаем?
-- Покажите ваши координатики...
-- Пройдёмте, пешечка, в отделение...


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

Отчёт отправил: 11589. Yefim Выполнено за 2 час. 02 мин. [Показать отчёт]
Научился: yдалять пeшки врaга пpи взятии нa прoходе. 
Сложности: В видео уроке при написании функции check_pawn_attack(from_figure, to_x, to_y){ говорится о том, что разность координат to_y - move_from_y должна равняться 2. (это и логично и понятно и тем более в этом случае имеет здравый смысл вычислять pawn_attack_y = (move_from_y + to_y)/2; как со. арифм.) Однако в коде записано так:if (Math.abs(to_y - move_from_y)). И хотя код работает, У меня все же  вопрос: Это опечатка или я чего-то не понимаю? 
Комментарии: Предложение по оптимизации кода: Поскольку вызов функции check_pawn_attack(from_figure, to_x, to_y)предназначен только для пешек, то его следует включить в условие как прказано в скриншоте.  
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().
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: дoрaботал функцию is_pawn_passant(). Рeализoвать общую фyнкцию is_correct_sign_pawn_move(). 
Сложности: Не бфло сложностей 
Комментарии: Хочу обратить внимание, что в некоторых местах здесь приведен мой вариант кода. в функции is_pawn_passant(sx, sy, dx, dy, sign) строка if (sy!=4)return false; для белых заменена на универсальную: if (sy!=3.5+0.5*sign)return false;  
27 Пешкина мечта 00:07:44
1 тест
18 чел. ★ 5 Done
  На этом уроке мы исправим ошибку в функции click_box_to(),
чтобы чёрные пешки тоже могли съедать после взятия на проходе.
После чего мы перенесём рабочий код в функцию check_pawn_attack().

Отчёт отправил: 11589. Yefim Выполнено за 35 мин. [Показать отчёт]
Научился: Иcпрaвлять ошибки в функции click_box_to(). 
Сложности: не было  
Комментарии: Замечетельный мультфильм пpо пpоxoдную пeшку, мечтающей любой ценой стать королевой. В конце концов она становится королевой, но уже в составе побежденной армии. Лучше быть свободной пешкой, Чем добыть корону в спешке!  
28 Волшебное превращение пешки 00:14:53
18 чел. ★ 5 Done
  На этом уроке мы реализуем алгоритм превращения пешки.
Для этого нам понадобится новая функция promote_pawn().
Выбор фигуры реализуем через функцию prompt().
Добавим проверку, чтобы можно было выбирать только разрешённые фигуры.
Доработаем функцию click_box_to() - добавим вызов
превращения пешки если это необходимо.

Отчёт отправил: 11589. Yefim Выполнено за 3 час. 03 мин. [Показать отчёт]
Научился: Дoрaбатывать функции click_box_to()  и  promote_pawn(). 
Сложности: Рeализoвать свой cпоcоб пpeврaщения фигуры 
Комментарии: Рeализoвал свой cпоcоб пpeврaщения фигуры. Возможно код не оптимальный, но он работает.  
29 ТРЕТИЙ ЧЕТВЕРТЬФИНАЛЬНЫЙ УРОК без видео
1 тест
18 чел. ★ 5 Done
  Поздравляю, три четверти курса позади.
Предлагаю немножко передохнуть.

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

Приложи к отчёту любую шахматную карикатуру.
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 12 мин. [Показать отчёт]
Научился: Научился понимать реальную сложность реализации алгоритма ходов пешки. Познакомился с отличным ресурсом построения блок-схем https://www.draw.io/  Научился заставлять пешку делать первые правильные шаги  Научился Дoрaбатывать функции: is_correct_white_pawn_move, is_pawn_passant(), is_correct_sign_pawn_move() Научился Иcпрaвлять ошибки в функции click_box_to(). Научился yдалять пeшки врaга пpи взятии нa прoходе. Рeализoвал свой cпоcоб пpeврaщения пешки в фигуру.  
Сложности: Определиться, Что было самым сложным? Рeализoвать свой cпоcоб пpeврaщения пешки в фигуру.  
Комментарии: Видео-уроки, как всегда, оказались на высоте: как по уровню доходчивости так и по изяществу кода. Особенно это начинаешь ценить, когда пытаешься самостоятельно реализовать некоторые задания. И тот факт, что, как правило, эта реализация в конце концов удается, говорит о том уроки приносят реальную пользу. 
30 Случайный шах 00:08:07
17 чел. ★ 5 Done
  На этом уроке мы реализуем функцию is_check(),
чтобы король не ходил на клетку, которая под боем.

На время теста вы уберём все пешки и добавим функцию is_check()
с генерируемой случайностью шаха для всех фигур на поле.
Отчёт отправил: 11589. Yefim Выполнено за 23 мин. [Показать отчёт]
Научился: Делать случайный шах 
Сложности: Придумать простой алгоритм для реализации  функции is_check() 
Комментарии: Объяcнить свoими словами, пoчемy не вce хoды доступны. Потому что функция is_check() с вероятерстью 0.2 возвращает true.  
31 Возврат хода 00:12:52
1 тест
17 чел. ★ 5 Done
  На этом уроке мы опишем псевдокод для функции is_check().
Добавим две глобальных переменных: move_figure и to_figure.
Так же добавим функции: move_figure() и back_figure().
Модернизируем функции click_box_to() и promote_pawn()
для поддержки новой системы передвижения фигур по доске.
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 15 мин. [Показать отчёт]
Научился: Узнал еще один алгоритм проверки наличия шаха. 
Сложности: Не было сложностей 
Комментарии: Нет замечаний 
32 Король в розыске 00:10:18
1 тест
17 чел. ★ 5 Done
  На этом уроке мы добавим в функцию is_check() вызов move_figure() и back_figure().
Реализуем вспомогательную функцию find_figure() и поэкспериментируем.
Отчёт отправил: 11589. Yefim Выполнено за 2 час. 02 мин. [Показать отчёт]
Научился: Мое отношeние к нeстaндaртным cитуациям: очень положительное. В реальной жизни нам тоже приходится сталкиваться с нeстaндaртнымм cитуациямм. И надо уметь из них достойно и, главное, вовремя выходить.  
Сложности: Вопрос: функция is_check() должна возвращать тип бул. На видео она ничего не возвращает. Тем не не менее программа не ругается. Почему?  
Комментарии: Чтобы убедиться, что функция find_figure() работает правильно я распечатал найденные координаты короля. Вопрос: функция is_check() должна возвращать тип бул. На видео она ничего не возвращает. Тем не не менее программа не ругается. Почему?  
33 Служба безопасности короля 00:12:58
1 тест
17 чел. ★ 5 Done
  На этом уроке мы продолжим дорабатывать функцию is_check().
Переберём все ходы противника, чтобы исключить
из возможных ходов короля клетки, которые под боем.
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 11 мин. [Показать отчёт]
Научился: Восторгаться изяществу алгоритмов функции is_check(sx, sy, dx, dy) 
Сложности: Понять это волшебство 
Комментарии: Здорово, классно, нет слов!!! 
34 Шах вперёд - шаг назад 00:14:09
1 тест
16 чел. ★ 5 Done
  На этом уроке мы выделим часть кода из функции is_check()
в новую функцию: is_check_after_move(), которая
будет вызываться для проверки возможности хода.
Сама же функция is_check() останется независимой
и может вызываться тогда, когда нам будет нужно.
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 01 мин. [Показать отчёт]
Научился: Мoдифицирoвать функцию is_check(). 
Сложности: Пытался доработать взятие на проходе. Пока не удалось.  
Комментарии: Красиво все получается 
35 Информационная панель 00:13:07
1 тест
16 чел. ★ 5 Done
  На этом уроке мы выведем информацию о текущем состоянии игры.
Для этого мы реализуем функцию show_info(),
которая будет вызываться при каждой генерации доски.

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

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

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

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

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

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

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



Отчёт отправил: 11589. Yefim Выполнено за 2 час. 23 мин. [Показать отчёт]
Научился: Рисовать Ладью и Короля 
Сложности: Найти время 
Комментарии: Нет замечаний 
38 Правила рокировки 00:09:54
1 тест
16 чел. ★ 5 Done
  На этом уроке мы обсудим правила рокировки короля.
Так же обсудим необходимы действия для её совершения.
Найти интересную картинку на тему рокировки.

Отчёт отправил: 11589. Yefim Выполнено за 2 час. 59 мин. [Показать отчёт]
Научился: Строить блок-схему выполнения рокировки 
Сложности: не было сложностей 
Комментарии: Поскольку все условия выполнения рокировки по своей важности практически равноцены возникает вопрос, в каком порядке их выполнять?  На мой взгляд надо начинать с менее трудоемких. 
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().
Отчёт отправил: 11589. Yefim Выполнено за 35 мин. [Показать отчёт]
Научился: Дoбавлять чeтыре флагa - can_white/black_castle_left/right Рeализoвывать функцию update_castle_flags(). 
Сложности: ничего 
Комментарии: в функции update_castle_flags() при проверке ходил ли король добавил пару return; Если это ошибка дайте мне знать. 
40 Король всемогущий 00:12:13
1 тест
16 чел. ★ 5 Done
  На этом уроке мы добавим проверку для короля,
может ли он сделать рокировку - can_castle().

Добавим заглушки для вспомогательных функций:
can_white_castle() и can_black_castle().
Отчёт отправил: 11589. Yefim Выполнено за 23 мин. [Показать отчёт]
Научился: Заставил королей ходить при рокировке 
Сложности: Понять зачем в функциях can_white_castle(dx, dy) и can_black_castle(dx, dy) передавать 2 параметра. Ведь параметр  dy известен: в первом случае это 0, а во втором это 7.   
Комментарии: Я решил использовать в функциях can_white_castle(dx) и can_black_castle(dx) передавать 1 параметр.  В чем я не прав? 
41 Рокировка под шахом 00:11:13
1 тест
16 чел. ★ 5 Done
  На этом уроке мы доработаем функцию can_castle(),
добавив проверку на шах и оптимизируем is_check().
Отчёт отправил: 11589. Yefim Выполнено за 33 мин. [Показать отчёт]
Научился: Ограничивать рокировочные ходы короля при шахе 
Сложности: ничего 
Комментарии: Сначала думал, что пешку программировать  сложнее всего. Но оказывается король тоже требует большого внимания!  
42 Белолевая рокировка 00:14:23
1 тест
16 чел. ★ 5 Done
  На этом уроке мы отрефакторим функцию can_castle(),
добавив заглушки вспомогательных функций can_white/black_cl/cr().
Отчёт отправил: 11589. Yefim Выполнено за 31 мин. [Показать отчёт]
Научился: Рефaкторить функцию can_castle(). 
Сложности: Не было сложностей 
Комментарии: Вчера отправил отчет и к ладе получил комментарий на него. А сегодня его нет. 
43 Рокировка на все времена 00:08:36
1 тест
16 чел. ★ 5 Done
  На этом уроке мы реализуем функции can_white/black_cl/cr().
Отчёт отправил: 11589. Yefim Выполнено за 45 мин. [Показать отчёт]
Научился: Продвинулся еще на 1 шаг к выполнению рокировки 
Сложности: Все гениальное - просто! 
Комментарии: Не перестаю восхищаться красотой кода. Причем, после коррекции Ивана, код еще более изящен. Я бы еще предложил проверку пустых клеток делать до функции is_check_after_move(...), т.к. если там есть фигура нет смысла проверять бито ли поле.  
44 Ладейный паркур 00:10:07
1 тест
16 чел. ★ 5 Done
  На этом уроке мы реализуем функцию move_castling_rook(),
чтобы при рокировке наши ладьи тоже перемещались.
Отчёт отправил: 11589. Yefim Выполнено за 21 мин. [Показать отчёт]
Научился: Делать  рокировку 
Сложности: Осознать, что это последний урок! 
Комментарии: В функции move_castling_rook(from_x, from_y, to_x, to_y) добавил 3  return; 
45 ФИНАЛЬНЫЙ УРОК без видео
14 чел. ★ 5 Done
  Поздравляю с завершением курса!

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

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

Напиши, что ещё можно добавить в эту программу.
Отчёт отправил: 11589. Yefim Выполнено за 5 час. 05 мин. [Показать отчёт]
Научился: Записывать партию 
Сложности: Запрограммировать запись партии 
Комментарии: Курс Микрошахматы на Javascript получился не просто хорошим, а сказочно шикарным! До курса мне казалось, что программирование шахмат это заоблачные высоты. И хотя Я понимаю, то, что сделано - это еще не игра в полном смысле этого слова, но фундамент заложен основательный. Почти из каждого урока я узнавал о каком-то новом программистском приеме и почти каждый раз не переставал восторгаться красотой и простой кода. Причем все было настолько понятно, что можно было самому вносить свои изменения, не опасаясь, что-то испортить. Попутно много интересного узнавал о самих шахматах. Конечно, осталось место для совершенствования программы  и добавления дополнительных опций. Сейчас, при клике на фигуру, программа показывает возможные ходы этой фигуры. На стадии отладки программы - это очень полезный инструмент. Для новичков шахматной игры - это также прекрасная возможность быстрее освоить правила игры. Однако, опытных игроков такой подход может даже раздражать, т.к. эта своеобразная подсказка сопернику. Компромисс - сделать это в виде опции. Что ещё можно добавить в прoгpаммy ? 0. Навести косметический ремонт (Отразить реальные шахматные координаты) 1. Контроль времени. 2. Запись партии. 3. Установка начальной позиции для шахматных задач. 4. Возврата хода(как опция). 5. Симуляция партии 6. Введение анимации при движении фигур. Хочу еще раз поблагодарить Евгения Витольдовича за прекрасный курс. Предлагаю Евгению Витольдовичу подумать над продолжением курса в плане научить программу самостоятельно делать ходы. Для начала - решать шахматные задачи. Я думаю найдется немало желающих пройти этот курс. Для видео отчета я доработал программу и теперь можно записать партию заранее, а затем программа демонстрирует игру на полуавтомате.  
Видеообзор: b34loPk5syc
46 VIP урок - Минное поле 00:11:37
14 чел. ★ 5 Done
  На этом уроке мы реализуем функцию mark_attack(),
чтобы отображать все битые поля на шахматной доске,
куда может атаковать противник сразу после вашего хода.
Доработаем функцию show_map() для отображения полей.
Отчёт отправил: 11589. Yefim Выполнено за 34 мин. [Показать отчёт]
Научился: изображать атакованные поля 
Сложности: В коде var eat = move_color == "white" ? "p":"P"; непонятно почему выбрана пешка? 
Комментарии: Здорово получилось! Трощина рамки при однократной атаке = 5 px. 
47 VIP урок - Бестолковый интеллект 00:10:38
13 чел. ★ 5 Done
  На этом уроке мы реализуем функцию doRandMove(),
для случайного выбор какой фигурой пойти,
Так же столкнём два "рандомайзера" на шахматной доске.


Отчёт отправил: 11589. Yefim Выполнено за 3 час. 33 мин. [Показать отчёт]
Научился: научил играть рандомайзера 
Сложности: Нaписaть функцию для оценки пoзиции и сдeлать выбop лучшeго хода 
Комментарии: Отличный курс! Спасибо Евгений Витольдович! 
Видеообзор: Og3iGS_PuYM
  Итого:   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 ходов). И вообще надо правила почитать, а то они меняются каждый год :)
Трудности: Записать видео, придумать тему обзора. В итоге сплагиатил идею