Си шарп видео уроки

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

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

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

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

После взноса  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:06:08
3 теста
94 чел. ★ 4.9 Done
  Мы начинаем создание клиент-серверной программы для игры в Шахматы по сети.
Это комплекс программных решений с исользованием: C#, ASP.NET, MS-SQL, EF, Unity
В результате мы создадим сервер, через который клиенты
смогут играть друг с другом в шахматы со смартфона.

Записаться на курс
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 14 мин. [Показать отчёт]
Научился: Unity - не работал, знаком отдаленно. C# - достаточно для понимания. Писал до этого на С++ и других языках ООП. MS-SQL - знаком. Сталкивался с БД, да и на работе часто. EF, ASP.NET - отдаленно или поверхностно. Шахматы - знаком уже достаточно давно.  
2 Доска. Установка Unity 3D 00:05:17
86 чел. ★ 4.9 Done
  Цель этого урока - установить Unity и набрать несколько строчек шахматных терминов.

Скачать Unity3D: unity3d.com/ru

Набрать шахматные термины: videosharp.info/console/task/level=1766

Скачать архив с картинками: https://yadi.sk/d/irBRduLp3SseXY

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 час. 48 мин. [Показать отчёт]
Научился: 2. Средняя скорость 164 сим./мин. 
Сложности: Ждать, пока обновится Unity. 
3 Доска. Фигуры 00:13:05
62 чел. ★ 5 Done
  На этом уроке мы разместим доску с фигурами.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 час. 0 мин. [Показать отчёт]
Научился: Импортировал подготовленные фигуры в проект. Создал доску и разместил на ней все фигуры. Переименовал объекты в списке 
Сложности: Пока все понятно 
4 Доска. Состояния переноса 00:11:29
64 чел. ★ 5 Done
  На этом уроке мы начнём процесс Drag-n-Drop и обсудим все состояния,
через которые проходит объект в процессе переноса.
Создадим скрипт, класс, перечисление, конструктор и метод Action.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 32 мин. [Показать отчёт]
Научился: Создал скрипт, класс и перечисление. + конструктор и метод Action(); Вывел сообщение в консоль и проверил (в Unity) 
Сложности: Постепенно познаю новое, но пока усваивается =) 
5 Доска. Подцеп фигуры 00:12:05
61 чел. ★ 5 Done
  На этом уроке мы найдём фигуру, по которой кликнул пользователь.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 4 час. 2 мин. [Показать отчёт]
Научился: Создал коллайдер вокруг фигур. Написал вспомогательные функции. Протестировал - выводил название выбранной фигуры в консоль 
Сложности: Перерисовал все картинки за 6 часов =) Пока с board не нашел подходящего (сейчас мраморный) 
6 Доска. Смещение 00:07:57
59 чел. ★ 4.9 Done
  На этом уроке мы допишем перенос фигуры и учтём смещение при клике.
Теперь вы сможете разыграть любую партию - сделайте скриншот интересной позиции!
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 17 мин. [Показать отчёт]
Научился: Доделал метод PickUp(); Написал методы Drag()/Drop(); Учел смещение при перетаскивании фигуры. 
Сложности: Пока легко. 
7 Доска. Запуск на Windows 00:05:57
59 чел. ★ 5 Done
  На этом уроке мы создадим независимый билд (рабочая версия)
нашей игры для платформы Windows.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 13 час. 21 мин. [Показать отчёт]
Научился: Выбрал платформу для тестирования (Windows); Настроил Player Settings; Выбрал место для хранения билдов; Запустил созданный билд игры; Запустил игру на другом ПК (рабочий)  
Сложности: Сначала пришлось бороться с "пустым экраном" после заставки Unity.  
8 Доска. ПЕРВЫЙ ФИНАЛЬНЫЙ УРОК 00:02:32
54 чел. ★ 4.8 Done
  Мы закончили первую часть курса,
создали шахматную доску,
запустили её на Windows.

Напишите отзыв о первой части курса:
что получилось, что было сложным,
что ещё вы добавите в программу.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 5 час. 16 мин. [Показать отчёт]
Научился: К первой части от шахмат очень доволен, поэтому будем продолжать осваивать Unity. А результаты первой части - дают двигаться дальше, поэтому с удовольствием продолжу данный курс. 
Сложности: Сначала не привычно было работать с Unity, но все первое становится привычным.  
9 Доска. VIP. Запуск на Android 00:10:00
53 чел. ★ 4.8 Done
  На этом уроке мы запустим нашу доску на операционной системе Android.
Приготовьте свой планшет/телефон и приступайте к эскпорту и запуску!
* Выполнять этот урок не обязательно.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 день 7 час. 44 мин. [Показать отчёт]
Научился: Смог запустить программу на Android устройстве - телефон, не без "копания и чтения мануалов" =) (SDK путь не указал). 
Сложности: Тут не прочитал внимательно, пришлось на youtube иностранном искать, как это все исправить и откомпилировать. Язык точно был не английский =)) 
10 Доска. VIP. Запуск в Интернете 00:11:24
53 чел. ★ 4.9 Done
  На этом уроке мы отправим наш проект в Интернет.
Для этого мы воспользуемся технологией WebGL.
Генерация страницы занимает продолжительное время.
Засеки момент начала и напиши в отчете сколько времени это заняло.

* Выполнять этот урок необязательно.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 25 мин. [Показать отчёт]
Научился: Откомпилировал проект на WebGL; Протестировал работу в браузере; На генерацию ушло примерно около 4 минут; 
Сложности: Думал долго будет, поэтому запустил в самом начале видео, но видео не обогнало =) 
11 FREE Классы. Архитектура проекта 00:19:24
1 тест
64 чел. ★ 5 Done
  На этом уроке мы познакомимся с архитектурой проекта,
посмотрим на предстоящее путешествие с высоты птичьего полёта.
Задание: написать, что для вас в этом плане самое простое, а что - самое сложное.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 2 час. 44 мин. [Показать отчёт]
Научился: Чем больше вникаешь в проект, тем больше хочешь его довести до конечного результата + реализовать еще другие интересные "добавления" / фишки. 2. Самое простое: то что знаком с шахматами =) 3. Сложное - Не думать о других уроках из курса... 
12 Классы. Шахматная библиотека 00:15:22
2 теста
53 чел. ★ 4.9 Done
  На данном уроке мы начинаем создание шахматных классов на языке C#, которые позволят проверять правила игры.
Для этого мы напишем библиотеку, которая сможет для любой шахматной позиции определить возможность любого хода.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 3 дня 21 час. 4 мин. [Показать отчёт]
Научился: Создал основную библиотеку правил для проекта. Создал новый проект для тестирования данной библиотеки. Подключил туда нашу библиотеку ChessRules. Убедился в работе библиотеки через консольное приложение. 
Сложности: Отвлекся другими работами. Пришлось вспоминать, на чем остановился :) 
13 Классы. Цветная фигура 00:10:21
53 чел. ★ 4.9 Done
  Мы продолжаем создание шахматных классов на языке C#,
которые позволят проверять правила игры.
На этом уроке мы рассмотри схему библиотеки dll,
которая поможет нам сориентироваться в дальнейших действиях.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 2 час. 2 мин. [Показать отчёт]
Научился: Создал 2 перечисления Figure и Color; Реализовал статичный класс ColorMethods() ; Реализовал функцию FlipColor() - меняет цвет фигуры; 
Сложности: Все понятно 
14 Классы. Квадратная площадь 00:14:59
52 чел. ★ 5 Done
  Мы продолжаем создание шахматных классов на языке C#,
которые позволят проверять правила игры.
На этом уроке мы создадим структуру классов
с минимально необходимым кодом.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 7 час. 48 мин. [Показать отчёт]
Научился: Создал структуру Square() и реализовал конструктор Square(string name); Создал вспомогательную функцию OnBoard(); Реализовал геттер Name(); Протестировал работу как внутри, так и за пределами доски. 
Сложности: Возможно самое долгое, как не странно - это  тестирование и откладка. 
15 Классы. Фигурой марш! 00:11:52
51 чел. ★ 5 Done
  Мы продолжаем создание шахматных классов на языке C#,
которые позволят проверять правила игры.
На этом уроке мы создадим классы для
хранения и перемещения фигур по клеткам.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 27 мин. [Показать отчёт]
Научился: Создал класс FigureOnSquare() и класс FigureMoving(); Добавил конструктор FigureOnSquare() в класс FigureOnSquare(); Добавил конструкторы FigureMoving() и FigureMoving(string move) 
16 Классы. Квадратная матрица 00:09:56
51 чел. ★ 5 Done
  Мы продолжаем создание шахматных классов на языке C#,
которые позволят проверять правила игры.
На этом уроке мы создадим класс Board(),
который будет заниматься доской и работать с FEN.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 49 мин. [Показать отчёт]
Научился: Создал класс Board(); Добавил конструктор  Board(string fen); Создал геттер GetFigureAt(Square square) и сеттер SetFigureAt(Square square, Figure figure); Добавил функции Init() и Move(FigureMoving fm); 
Сложности: Пока еще нормально, усваивать можно. 
17 Классы. Стой, кто идёт! 00:10:04
51 чел. ★ 5 Done
  Мы продолжаем создание шахматных классов на языке C#,
которые позволят проверять правила игры.
На этом уроке мы создадим класс Moves(),
который будет заниматься проверкой возможности хода.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 час. 28 мин. [Показать отчёт]
Научился: Создал класс Moves(); Создал функцию CanMove(FigureMoving fm) и вспомогательные функции CanMoveFrom/To(); Создал расширяющий класс FigureMethods. Добавил метод GetColor();  
Сложности: Медленно пока идет, только дома выполняю... 
18 Классы. Шахматная бюрократия 00:07:58
50 чел. ★ 5 Done
  Мы продолжаем создание шахматных классов на языке C#,
которые позволят проверять правила игры.
На этом уроке мы допишем класс Chess().
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 23 мин. [Показать отчёт]
Научился: Изменил конструктор Chess(string fen) и метод Move(stirng move); Создал вспомогательный конструктор Chess(Board board); Модифицировал метод GetFigureAt(int x, int y) 
Сложности: Дойти до интересной работы, до следующего занятия... 
19 Классы. Консольная доска 00:14:05
1 тест
49 чел. ★ 5 Done
  Мы приступаем к написанию тестов для нашей библиотеки.
На этом уроке мы создадим функционал для отображения доски
и исправим старую ошибку копипаста.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 час. 53 мин. [Показать отчёт]
Научился: Реализовал вспомогательную функцию ChessToAscii(Chess chess) и вывел отображение доски; Исправил ошибки и опечатки; Добавил вспомогательную функцию Print(string text); Использовал ей для отображения цветной доски  
Сложности: 9. * Напишите, какую фигуру сложнее, а какую проще программировать Сложнее всего пешку - очень много условий, как рубит другую пешку (по диагонали, на проходе, превращение в другие фигуры) Легче всего - коня (нет препятствий по пути на свою клетку, перепрыгивает в отличие от других фигур) 
20 Классы. ВТОРОЙ ФИНАЛЬНЫЙ УРОК 00:00:00
49 чел. ★ 4.8 Done
  Мы создали все основные классы нашего проекта.
Твоя задача - нарисовать UML схему созданных классов.
Нарисовать схему значительно проще, когда проект уже готов.
Поэтому задание не сложное, но очень, очень полезное и нужное.
Используй иерархическую структуру Solution Explorer в VisualStudio.
Нарисовать можно от руки, либо в сервисе draw.io.
Можно использовать любой другой *не автоматический* инструмент рисования.
Важно сделать это самостоятельно, а не сгенерить программой! Поэтому рисуй сам.

* Не забывайте потом дорисовывать схему в процессе добавления новых методов в классах.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 2 дня 9 мин. [Показать отчёт]
Научился: Разобрался с UML схемами 
Сложности: Все это нарисовать, хоть и средствами по созданию таких схем. 
21 Алгоритмы. Волшебные шахматы 00:22:30
1 тест
47 чел. ★ 5 Done
  Мы приступаем к написанию шахматных алгоритмов.
На этом уроке мы добавил в класс Board() необходимые
свойства и реализуем парсинг передаваемого FEN.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 3 час. 36 мин. [Показать отчёт]
Научился: Добавил свойства возможности рокировки, взятие на проходе, правило 50-ти ходов, текущего хода в класс Board(); Доработал функцию Init(); Реализовал вспомогательные функции для парсинга FEN; Вывел начальную позицию на шахматную доску, сходил первый ход. 
Сложности: Ничего. Сделал, пока ждал завершение архивации. =) 
22 Алгоритмы. Сборка фена 00:16:34
1 тест
46 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы реализуем формирование
текущей позиции в формате FEN.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 6 час. 23 мин. [Показать отчёт]
Научился: Реализовал функцию GenerateFEN(); Добавил вспомогательные функции для формирования FEN; Доработал Move(FigureMovoing fm) в классе Board(); 
Сложности: Пока ничего 
23 Алгоритмы. Генератор ходов 00:19:11
1 тест
43 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы начинаем реализацию проверок
можно ли пойти с одной клетки на другую.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 час. 16 мин. [Показать отчёт]
Научился: Сделал функцию Chess().YieldValidMoves(); Добавил статичную функцию Square().YieldBoardSquares(), функцию Board().YieldMyFigureOnSquares(); Переопределил функцию FigureMoving().ToString(); Протестировал работу добавленного функционала.  
Сложности: Пока нормально. 
24 Алгоритмы. Куда идёт Король 00:10:43
1 тест
42 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы реализуем проверку
может ли King пойти с одной клетки на другую.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 35 мин. [Показать отчёт]
Научился: Доработал функцию CanMoves(); Добавил атрибуты deltaX/Y и absDeltaX/Y в классе FigureMoving(); Протестировал работу (возможные ходы короля); Уже писал где-то выше: легкая - конь. сложная - пешка... (см. тут https://www.videosharp.info/18493/checking/chess3=1918) 
Сложности: пока идет нормально 
25 Алгоритмы. Ночью с Конём 00:05:05
1 тест
42 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы реализуем проверку
может ли Knight пойти с одной клетки на другую.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 16 мин. [Показать отчёт]
Научился: Изменил FEN доски (добавил только коней для теста); Остальное была ДЗ: Реализовал функцию возможности хода коня Moves().CanKnightMove(); Изменил функцию CanFigureMove(); Протестировал работу; Пока оставил свой вариант хода коня, ошибок пока не было; ...   return (fm.AbsDeltaX >= 1 && fm.AbsDeltaX <= 2 && fm.AbsDeltaX + fm.AbsDeltaY == 3); ... Убедился в правильности своих ответов на предыдущий вопрос про сложность реализации. 
Сложности: Легко, было сделано самостоятельно. 
26 Алгоритмы. Дальнобойщики 00:17:19
1 тест
42 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы переходим к дальнобойным фигурам.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 2 час. 5 мин. [Показать отчёт]
Научился: Добавил на доску ферзя, ладью и слона. Реализовал функцию Moves().CanStraightMove(); Добавил атрибуты signX/Y в классе FigureMoving(); Добавил операторы сравнения в Square(). Сделал проверку движения Ферзя, Ладьи и Слона; Проверил работу программы. 
Сложности: Хорошо, когда нет ошибок) 
27 Алгоритмы. Храбрая пешка 00:19:03
41 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы приступаем к реализации
алгоритмов самой сложной фигуры: Pawn.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 37 мин. [Показать отчёт]
Научился: Реализовал функцию Moves().CanPawnMove() и дополнительные функции CanPawnGo/Jump/Eat; Протестировал текущий функционал. 
Сложности: Ничего. 
28 Алгоритмы. Четвёртое превращение 00:12:27
1 тест
41 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы реализуем превращение Pawn
в одну из четырёх фигур: Queen, Knight, Bishop и Rook.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 35 мин. [Показать отчёт]
Научился: Доработал функции Chess().YieldValidMoves(), FigureMoving().ToString(), Board().Move(); Реализовал статичную функцию FigureMethods().YieldPromotions(); Протестировал работу: Есть баги, либо фича в текстовом варианте: пешка может превращаться в любую другую (хотя в графическом варианте  это не получится сделать ) и не только в свой цвет =) 
Сложности: время - понедельник, однако 
29 Алгоритмы. Рефакторинг на доске 00:17:03
1 тест
41 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы займёмся рефакторингом.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 40 мин. [Показать отчёт]
Научился: Создал новый класс NextBoard(); Модифицировал функцию Board().Move(); Перенес функции из класса Board() в класс NextBoard(): SetFigureAt(), GenerateFEN(), GetFigures(), GetMoveColor(), GetCastleFlags(), GetEnPassant(), GetDrawNumber() и GetMoveNumber(); Отрефакторил конструктор NextBoard(); Протестировал работу после рефакторинга. 
Сложности: Ничего 
30 Алгоритмы. Допрыгалась! 00:21:20
41 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы займёмся взятием пешкой на проходе.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 час. 3 мин. [Показать отчёт]
Научился: Дописал конструктор NextBoard(); Реализовал функции SetEnpassant() и DropEnpassant() в классе NextBoard(); Дописал функцию CanPawnMove() в классе Moves(), создал в этом же классе функцию CanPawnEnPassant(); Реализовал метод FigureMoving().PlacedFigure; Протестировал функционал на "взятие на проходе" 
Сложности: Найти время 
31 Алгоритмы. Королевский паркур 00:25:05
41 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы реализуем рокировку.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 2 час. 12 мин. [Показать отчёт]
Научился: Подготовил начальную позицию в FEN для удобства тестирования; Дописал конструктор NextBoard() Реализовал функцию NextBoard().UpdateCastleFlags() Дописал функцию Moves().CanFigureMove() Реализовал функцию Moves().CanKingCastle() Реализовал функцию NextBoard().MoveCastlingRook() Протестировал работу текущего функционала 
Сложности: найти время 
32 Алгоритмы. Защита короля 00:20:26
41 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы будем защищать короля от ШАХа.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 2 час. 47 мин. [Показать отчёт]
Научился: Подготовил FEN для тестирования; Дописал функцию Chess().YieldValidMoves(); Реализовал функции IsCheckAfterMove(), CanEatKing(), FindBadKing() и IsCheck() в классе Board(); Доработал функцию Moves().CanKingCastle(); Создал конструктор FigureMoving() для пустого хода; Протестировал работу до мата. 
Сложности: Ничего. Ждем большого тестирования =) 
33 Алгоритмы. Шах и Мат! 00:09:55
41 чел. ★ 5 Done
  Мы заканчиваем написание шахматных алгоритмов.
На этом уроке мы реализуем возврат ситуации на доске.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 58 мин. [Показать отчёт]
Научился: Подготовил FEN для тестирования; Дописал класс Chess(); Реализовал вспомогательную функцию Chess().SetCheckFlags(); Протестировал работу. 
Сложности: Пока нет 
34 Алгоритмы. ТРЕТИЙ ФИНАЛЬНЫЙ УРОК 00:03:57
41 чел. ★ 5 Done
  На этом уроке мы исправим одну ошибку и добавим ещё один вариант метода GetFigureAt(string xy).
Ваше задание - записать подробный отзыв об алгоритмической части проекта.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 36 мин. [Показать отчёт]
Научился: Дописал функцию Chess().Move(); Реализовал функцию Chess().GetFigureAt(string xy); Протестировал текущий функционал, жду супертестирование =) Было интересно смотреть на реализвацию данных алгоритмов таким способом. Функционалом доволен, пришел на проект чуть ли не специально для этого курса (youtube предложил видео как раз, что-то с шахматами было, это после пересматривания дебютов и стримов по шахматам), в итоге очень доволен как курсом, так и проектом в целом. Алгоритмы просты и есть еще кучу возможностей, что можно будет реализовать. (Пока не сделал проверка ничьи, но не думаю, что возникнет сложностей. Если только при короле + слоны одного цвета - нужно будет дописать вспомогательные функции, для подсчета одноцветных слонов, при разноцветных уже можно поставить мат или пат) С удовольствием завершу начатое тут и дойду до последнего урока! =)  
Сложности: Вперед у супертестированию, далее смотрим ошибки... 
35 Алгоритмы. VIP. Шахматное супертестирование 00:11:34
41 чел. ★ 5 Done
  На этом уроке мы проверим корректность ваших алгоритмов.
Для этого мы прогоним супер-тест по генерации всех вариантов.

* Выполнять этот урок необязательно.

Ссылка:
Сайт с результатами тестирования

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 день 14 час. 26 мин. [Показать отчёт]
Научился: Реализовал вспомогательную функцию  Program().NextMoves() - далее немного ее изменил под распараллеливание (выполнялось в 4-6 раз быстрее). Результаты супер тестирования: (зря, что файлик нельзя приложить). Position 1: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 Depth 1 : 20 - 3 ms Depth 2 : 400 - 55 ms Depth 3 : 8902 - 322 ms Depth 4 : 197281 - 6616 ms Depth 5 : 4865609 - 176349 ms Depth 6 : 119060324 - 3910432 ms All time : 4093777 ms Position 2: r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1 Depth 1 : 48 - 5 ms Depth 2 : 2039 - 205 ms Depth 3 : 97862 - 3024 ms Depth 4 : 4085603 - 104263 ms Depth 5 : 193690690 - 6729385 ms All time : 6836882 ms Position 3: 8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - 1 8 Depth 1 : 14 - 1 ms Depth 2 : 191 - 20 ms Depth 3 : 2812 - 93 ms Depth 4 : 43238 - 1180 ms Depth 5 : 674624 - 20335 ms Depth 6 : 11030083 - 281078 ms Depth 7 : 178633661 - 4819924 ms All time : 5122631 ms Position 4: r3k2r/Pppp1ppp/1b3nbN/nP6/BBP1P3/q4N2/Pp1P2PP/R2Q1RK1 w kq - 0 1 Depth 1 : 6 - 1 ms Depth 2 : 264 - 32 ms Depth 3 : 8049 - 271 ms Depth 4 : 422333 - 12594 ms Depth 5 : 15833292 - 609828 ms All time : 622726 ms Position 5: rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 1 8 Depth 1 : 44 - 4 ms Depth 2 : 1486 - 187 ms Depth 3 : 62379 - 1749 ms Depth 4 : 2103487 - 67150 ms Depth 5 : 89941194 - 3080864 ms All time : 3149954 ms Position 6: r4rk1/1pp1qppp/p1np1n2/2b1p1B1/2B1P1b1/P1NP1N2/1PP1QPPP/R4RK1 w - - 0 10 Depth 1 : 46 - 5 ms Depth 2 : 2079 - 204 ms Depth 3 : 89890 - 2851 ms Depth 4 : 3894594 - 103707 ms Depth 5 : 164075551 - 6938644 ms All time : 7045411 ms Немного данных: 1) На все ушло около 8 часов. 2) Всего сгенерировано ~788,83 миллионов ходов. (2 раза была попытка посчитать на 703 млн, но через часов 5-6 потоки отваливались и нагрузка CPU падала с 90-100 % до 20%, потоки отваливались...) 3) Средняя схорость нахождения  ~29.356 (комбинаций / сек) 4) Максимальное ~ 39.242  (комбинаций / сек) на позиции 3 5) На скрине: работа программы после распараллеливания и подсчет первым вариантом. 
Сложности: Полдня просидел с попытками придумать подсчет по остальным параметрам (шах, взятия и т.д.) - не сходились. По ходам, например "Qe2e3" сложно понять, что это - съели фигуру, шах или обычный ход. Вопросы генерировались быстрее, чем успевал их реализовывать сам :) По подсчетам других данных (предположения): Нужно знать чуть ли не весь измененный FEN до хода фигуры, который потом парсится и узнается. Хотя это может и не самый идеальный вариант... Как его достать, пока тоже не придумал...  Если есть какие-то идеи, можно вместе подумать и реализовать :) 
36 Алгоритмы. VIP. Можно пройти? 00:02:13
41 чел. ★ 5 Done
  На этом уроке мы немного порефакторим и
добавим очень полезную функцию.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 57 мин. [Показать отчёт]
Научился: Реализовал функцию Chess().IsValidMove() и изменил Chess().Move(); Протестировал запуск и наличия ошибок. 
Сложности: Протестировал на 8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - 1 8 При ходе черных, после pс7с5 не заметил, что там шах при "съедение на проходе". Потратил минут 10 на поиски и пока не посмотрел позицию в lichess.org =)) Нужно избавляться от "буковок" )) 
37 Алгоритмы. VIP. Как пройти в библиотеку 00:10:35
40 чел. ★ 5 Done
  На этом уроке мы подготовим библиотеку ChessRules.
Для этого мы скомпилируем её в необходимой версии .NET
и проверим работоспособность в Unity проекте.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 2 час. 27 мин. [Показать отчёт]
Научился: Создал новый проект на Unity; Добавил туда скрипт, библиотеку ChessRules.dll; Протестировал работу библиотеки (.net 4.0 +) 
Сложности: не смог с первой попытки добавить, отличались .net 4.0 и .net 3.5 
38 Интерфейс. План действий 00:10:23
40 чел. ★ 5 Done
  На этом уроке мы обсудим дальнейший план действий.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 20 час. 20 мин. [Показать отчёт]
Научился: Пересоздал новый проект; Добавил текстуры клеток, фигуры за пределами видимой области; Переименовал по стандарту FEN; 
Сложности: Ничего. PS: Пересоздал из-за неправильного использования первый раз репозитория (добавлялись файлы компиляции, временные файлы и т.д.). Хотел уже давно поправить, пока далеко не ушли =) 
39 Интерфейс. Генерация объектов 00:16:45
40 чел. ★ 5 Done
  На этом уроке мы сгенерируем шахматную доску
с базовыми объектами на ней.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 час. 14 мин. [Показать отчёт]
Научился: Добавил скрипт Board к объекту Main Camera; Установил "Order in Layer" равное -1 для шахматных клеток (нижний слой); Реализовал конструктор Board() и вспомогательную функцию InitGameObjects(); Протестировал работу скрипта 
Сложности: Ничего. 
40 Интерфейс. Начальная позиция 00:11:23
39 чел. ★ 5 Done
  На этом уроке мы добавим ранее созданную
библиотеку ChessRules.dll в проект на Unity.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 час. 37 мин. [Показать отчёт]
Научился: Добавил библиотеку ChessRules.dll; Реализовал функцию ShowFigures(); Протестировал работу скрипта. 
Сложности: Библиотека не добавлялась в скрипт, пока не добавил в папку Assets. Версия .Net - 4.5 (более поздние не подключались) 
41 Интерфейс. Ход делегата 00:10:28
39 чел. ★ 5 Done
  На этом уроке мы активируем проверку ходов,
которую реализовали в ChessRules.dll.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 58 мин. [Показать отчёт]
Научился: Доработал функции DragAndDrop().PickUp/Drop(); Создал Board().DropObject(); Реализовал вызов функции через делегат. Протестировал работу скрипта. 
Сложности: Вроде ничего, запустилось с 1-ой попытки. 
42 Интерфейс. Проверка хода 00:09:44
37 чел. ★ 5 Done
  Мы продолжаем реализацию необходимого функционала для
активации проверки ходов на основе ChessRules.dll.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 37 мин. [Показать отчёт]
Научился: Реализовал вспомогательные функции Board().VectorToSquare() и Board().DropObject(); Протестировал работу скрипта. Исправил ошибку при перетаскивании фигуры за границы доски. (см. скрин) * Создать всплывающее окошко, когда пешка доходит противоположной стороны доски. Меняем Sprite на фигуру, которую выбрали из окошка/списка. 
Сложности: Вроде отлично. Потихоньку идем вперед. 
43 Интерфейс. VIP. Клетки отправления 00:09:17
37 чел. ★ 4.9 Open
  Это бонусный урок, выполнять его не обязательно.
На данном уроке мы реализуем подсветку тех клеток,
с которых можно ходить.
44 Интерфейс. VIP. Клетки прибытия 00:09:17
1 тест
37 чел. ★ 4.9 $
  Это бонусный урок, выполнять его не обязательно.
На данном уроке мы реализуем подсветку тех клеток,
на которые можно ходить.
45 Интерфейс. Щепотка рефакторинга 00:07:18
1 тест
37 чел. ★ 4.9 $
  На этом уроке мы начинаем подготовку к
превращению пешки в одну из четырёх фигур.
Для начала проведём небольшой рефакторинг.
46 Интерфейс. Выставка фигур 00:09:01
37 чел. ★ 4.9 $
  На этом уроке мы продолжаем подготовку к
превращению пешки в одну из четырёх фигур.
Теперь нам надо подготовить фигуры, в которые будем превращать.
47 Интерфейс. Долгожданное превращение 00:17:16
36 чел. ★ 5 $
  На этом уроке мы наконец превратим
нашу пешку в одну из четырёх фигур.
48 Интерфейс. ЧЕТВЁРТЫЙ ФИНАЛЬНЫЙ УРОК 00:00:00
37 чел. ★ 4.9 $
  Напишите отзыв о четвёртой части курса:
что получилось, что было сложным,
что ещё вы добавите в программу.
49 База данных. Management в студию! 00:02:39
35 чел. ★ 4.9 $
  На этом уроке мы приступаем к созданию БД
для нашего сервера шахматы онлайн.
50 База данных. Планирование 00:17:52
37 чел. ★ 4.9 $
  Мы продолжаем создание БД для
нашего сервера шахматы онлайн.
На данном уроке мы спроектируем схему нашей БД.
51 База данных. Упрощение 00:08:09
36 чел. ★ 4.8 $
  Мы продолжаем создание БД для
нашего сервера шахматы онлайн.
На данном уроке мы упростим схему нашей БД.
52 База данных. Созидание 00:06:52
35 чел. ★ 4.9 $
  Мы продолжаем создание БД для
нашего сервера шахматы онлайн.
На данном уроке мы наконец создадим
нашу базу данных для онлайн шахмат.
53 База данных. VIP. Таблицы на вырост 00:12:53
34 чел. ★ 4.9 $
  Мы продолжаем создание БД для
нашего сервера шахматы онлайн.
На данном уроке мы создадим дополнительные таблицы,
которые понадобятся для реализации полноценной онлайн игры.
54 База данных. VIP. Красивая диаграма 00:04:41
34 чел. ★ 4.9 $
  На данном уроке мы нарисуем диаграмму нашей БД.
55 База данных. ПЯТЫЙ ФИНАЛЬНЫЙ УРОК 00:00:00
34 чел. ★ 4.8 $
  Напишите отзыв о пятой части курса:
что получилось, что было сложным,
что ещё вы добавите в программу.
56 Сервер. Последняя версия 00:12:29
33 чел. ★ 5 $
  На данном уроке мы приступаем к созданию
серверной части нашего онлайн проекта по шахматам.
57 Сервер. Райский Эдем - EDM 00:13:23
32 чел. ★ 5 $
  На этом уроке мы создадим EDM - Entity Data Model.
58 Сервер. Новая игра на JSON 00:11:40
32 чел. ★ 5 $
  На этом уроке мы изменим формат вывода с XML на JSON.
59 Сервер. Официант без логики 00:10:07
32 чел. ★ 5 $
  На этом уроке мы будем упрощать наш ChessController.
60 Сервер. Ваш ход! 00:19:29
32 чел. ★ 5 $
  Мы продолжаем создание серверной части для
нашего проекта Шахматы по сети.
На этом уроке мы реализуем выполнение ходов.
61 Сервер. Шахматная Идемпотентность 00:09:34
32 чел. ★ 5 $
  Мы продолжаем создание серверной части для
нашего проекта Шахматы по сети.
На этом уроке мы обсудим Шахматную Идемпотентность.
Напишите своими словами, что такое Идемпотентность.
62 Сервер. Китайская ничья 00:06:28
31 чел. ★ 5 $
  Мы продолжаем создание серверной части для
нашего проекта Шахматы по сети.
На этом уроке мы реализуем завершение игры при сдаче.
63 Сервер. ШЕСТОЙ ФИНАЛЬНЫЙ УРОК 00:00:00
31 чел. ★ 4.8 $
  Напишите отзыв о шестой части курса:
что получилось, что было сложным,
что ещё вы добавите в программу.
64 Хостинг. Регистрация аккаунта 00:05:13
31 чел. ★ 4.9 $
  Приступаем к размещению нашего сервера в интернете.
Для этого нам потребуется Windows-хостинг с поддержкой ASP.NET

Чтобы мы были на одной волне и смогли проработать всё вместе,
пожалуйста зарегистрируйтесь на этом хостинг-сервисе:

Ссылка для регистрации на хостинге: https://www.reg.ru/?rlink=reflink-30461
65 Хостинг. Лучше заплатить 00:11:12
31 чел. ★ 4.8 $
  На этом уроке мы выберем план, доменное имя, укажем контактную информацию.
66 Хостинг. Доступ по FTP 00:10:08
31 чел. ★ 5 $
  На этом уроке мы установим пароль для подключения к хостингу по FTP.

Напишите, какой FTP-клиент вы используете и приложите
скриншот вашей FTP программы с подключением к хостингу.
67 Хостинг. Публикация проекта 00:12:13
31 чел. ★ 5 $
  На этом уроке мы настроим публикацию проекта из Visual Studio.
Выполните все шаги и опубликуйте проект.

Приложите скриншот Visual Studio с логами публикации
и содержимое FTP каталога после публикации.
68 Хостинг. Перенос базы данных 00:11:56
30 чел. ★ 5 $
  На этом уроке мы перенесём базу данных на сервер и подключимся к ней из скрипта.
69 Хостинг. VIP. Двойные стандарты 00:07:32
30 чел. ★ 5 $
  На этом уроке мы обсудим нюансы с публикацией
очередной версии серверной части на хостинге.
70 Хостинг. СЕДЬМОЙ ФИНАЛЬНЫЙ УРОК 00:00:00
30 чел. ★ 5 $
  В этой части мы разместили сервер не хостинге.
Шахматная серверная программа нашла пристанище в интернете.
Наконец-таки можно будет переходить к игре по сети.

Напишите в отчёте, всё ли получилось
и по какому адресу можно найти ваш серверный API.
71 Клиент. Достучаться до облака 00:05:06
29 чел. ★ 5 $
  На этом уроке мы приступаем к завершающему этапу
по созданию клиент-серверной игры "Онлайн шахматы".
72 Клиент. Дедовские методы 00:05:19
29 чел. ★ 5 $
  На этом уроке мы выделим FEN из полученной json строки.
73 Клиент. Ход в мешке 00:15:23
29 чел. ★ 5 $
  На этом уроке мы научимся отправлять на сервер наш ход.
74 Клиент. Серверные пешки 00:05:25
29 чел. ★ 5 $
  На этом уроке мы используем ранее созданный класс Client()
в наш проект на Unity, чтобы можно было поиграть с GUI.
75 Клиент. Следы невиданных ходов 00:07:25
29 чел. ★ 5 $
  На этом уроке мы реализуем отправку хода через GUI.
76 Клиент. Фоновое обновление 00:11:50
29 чел. ★ 5 $
  На этом уроке мы реализуем функцию
обновления текущего состояния на доске.
77 FREE Клиент. ВОСЬМОЙ ФИНАЛЬНЫЙ УРОК 00:03:01
27 чел. ★ 5 Open
  Поздравляю вас с завершением нашего эпического курса
по созданию клиент-серверной игры в шахматы по сети!

Запишите живое видео, где будет видно, что в игру
можно поиграть с двух разных устройств/компьютеров.

Расскажите на видео о своём подвиге.
Чем курс понравился, что было сложно,
что было интересно, что можно будет добавить.
78 Рефакторинг. С чего начать? 00:05:39
24 чел. ★ 5 $
  На этом уроке мы начинаем рефакторинг
кода клиентской части на Unity.
79 Рефакторинг. Координатные трансформации 00:14:04
24 чел. ★ 5 $
  На этом уроке мы продолжаем рефакторинг
и сейчас мы выделим статические элементы.
80 Рефакторинг. Чёрный ящик 00:07:38
24 чел. ★ 5 $
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы займёмся словарями.
81 Рефакторинг. Интерфейсная прослойка 00:10:35
24 чел. ★ 5 $
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы создадим интерфейс ICreatable.
82 Рефакторинг. Ящик с фигурами 00:04:16
1 тест
24 чел. ★ 5 $
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы сделаем класс Box() абстрактным.
83 Рефакторинг. Многоклеточная сущность 00:06:48
24 чел. ★ 5 $
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы создадим класс BoxSquares().
84 Рефакторинг. Вынос переноса 00:02:34
24 чел. ★ 4.9 $
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы создадим класс Box().SetPosition().
85 Рефакторинг. Спрайт, не дай себя заинтерфейсить 00:07:18
24 чел. ★ 5 $
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы создадим класс Box().SetSpriteAt().
86 Рефакторинг. Клетка в клетке 00:04:46
24 чел. ★ 5 $
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы перенесём и разделим класс ShowSquare().
87 Рефакторинг. Шахматная независимость 00:07:23
24 чел. ★ 5 $
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы перенесём некоторые функции в класс BoxSquares().
88 Рефакторинг. Хоровод из четырёх фигур 00:14:37
24 чел. ★ 4.9 $
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы порефакторим функционал превращения пешки.
89 Рефакторинг. Волшебник изумрудного ящика 00:18:39
24 чел. ★ 4.9 $
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы создадим класс BoxPromots().
90 Рефакторинг. Потерянная пешка 00:36:59
24 чел. ★ 4.9 $
  На этом уроке мы вернёмся к нашей библиотеке
для исправления старой ошибки: пешка может
превратиться в чужую фигуру ил остаться пешкой.
91 Рефакторинг. Класс шахматной игры 00:13:15
23 чел. ★ 4.8 $
  ЭТОТ УРОК НУЖНО ПЕРЕЗАПИСАТЬ. ДЛЯ ЭТОГО МНЕ НУЖЕН ПРОЕКТ ДО ЕГО ВЫПОЛНЕНИЯ.
ПОЖАЛУЙСТА ПЕРЕД ВЫПОЛНЕНИЕМ ЭТОГО УРОКА СОЗДАЙТЕ АРХИВ ПРОЕКТА И ПРИШЛИТЕ ЕГО МНЕ.

Мы на финишной прямой нашего рефакторинга.
На данном уроке мы вынесем логику игры в отдельный класс Game().
92 Рефакторинг. Двухэтажное превращение 00:16:50
22 чел. ★ 5 $
  Мы всё ближе и ближе к финишу нашего рефакторинга.
На данном уроке мы вынесем оставшуюся логику игры в класс Game().
93 Рефакторинг. Финальное причёсывание 00:06:58
22 чел. ★ 5 $
  Мы поздравляем тебя с завершением рефакторинга.
На данном уроке мы причешем наши скрипты.
94 Рефакторинг. Последний аккорд 00:14:10
23 чел. ★ 4.9 $
  На этом уроке мы заканчиваем наш эпический курс.
Получилось здорово.
Я доволен результатом.
Надеюсь, вы тоже.
Мы проделали огромную работу.
Каждый стал чуточку умнее и опытнее.
95 VIP. Меню DimanDOSа 00:27:50
20 чел. ★ 5 $
  1. Создание и размещение кнопки вызова меню и панели с кнопками.
2. Программирование действий по нажатиям кнопок -
создание функций и привязка их к событиям нажатия.
  Итого:   95 видеоуроков 17 час. 04 мин.
18 тестов
19 чел. ★ 4.96  
  Финалисты:   Дмитрий,   Yefim,   Tekashnik,   Иван Воронин,   ser2018,   Алексей,   Дмитрий Б,   alklokov,   FireWolf,   Andrew,   Max,   Новопашин Владимир,   Красимир Зорбов,   Антон,   Евгений,   Anatoli,   Freud,   Алена,   MaxB .

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





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

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

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

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


Научился: получили минимально рабочую версию, дальше нужно что то "прикручивать" по усмотрению и способностям



Научился: Научился делать сетевые шахматы на юнити под разные платформы. Были подробно рассмотрены шахматные алгоритмы и проверка правильности ходов, создание веб сервера с базой данных для сохранения игр и связи между игроками. Для полноты игры осталось добавить невозможность играть фигурами соперника, звуки, авторизацию пользователей и подобные украшательства. Ну и ещё рефакторинг...
Трудности: Решить некоторые возникающие в процессе создания игры ошибки, что, однако, дало бесценный опыт на будущее :)