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

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

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

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

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

После взноса  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
В результате мы создадим сервер, через который клиенты
смогут играть друг с другом в шахматы со смартфона.

Записаться на курс
Отчёт отправил: 4814. Дмитрий Выполнено за 19 мин. [Показать отчёт]
Научился: На курс подписался сразу. Очень вовремя мне пригодился дочерний курс "Микрошахматы" на javascript, т.к. именно сейчас интенсивно изучаю javascript/html/css для связки C#(сервер)/JS(клиент). 
Сложности: Вызывает некоторые сомнения целесообразность изучения Unity. Допустим, изучать такой замечательный язык как actionscript смысла нет, т.к. Adobe забило на него, и в результате он просто умер и уже не поддерживается браузерами. Сейчас большинство браузеров отказалось от поддержки Unity, а сами разработчики официально заявили о прекращении дальнейшей разработки и поддержке Unity Webplayer. Стоит ли в таком случае вообще приступать именно к изучению Unity "с нуля" и делать на него ставку? 
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

Отчёт отправил: 4814. Дмитрий Выполнено за 22 час. 41 мин. [Показать отчёт]
Научился: Установил Unity 
Сложности: Все отлично. 
3 Доска. Фигуры 00:13:05
62 чел. ★ 5 Done
  На этом уроке мы разместим доску с фигурами.

Отчёт отправил: 4814. Дмитрий Выполнено за 56 мин. [Показать отчёт]
Научился: Первое знакомство с Unity.  
Сложности: Фигуры не слушались при перетаскивании на доску, не хотели располагаться в одной директории ChessBoard, создавали собственные вложения. Все нормально. 
4 Доска. Состояния переноса 00:11:29
64 чел. ★ 5 Done
  На этом уроке мы начнём процесс Drag-n-Drop и обсудим все состояния,
через которые проходит объект в процессе переноса.
Создадим скрипт, класс, перечисление, конструктор и метод Action.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 32 мин. [Показать отчёт]
Научился: Создали класс для реализации переноса фигур,  сделали заглушку для функций. 
Сложности: Все понятно. 
5 Доска. Подцеп фигуры 00:12:05
61 чел. ★ 5 Done
  На этом уроке мы найдём фигуру, по которой кликнул пользователь.

Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 11 мин. [Показать отчёт]
Научился: Стали использовать много новых незнакомых функций Vector2, Camera, Transform, RayCastHit2D. 
Сложности: Не удалось подцепить фигуры, хотя сборка прошла успешно. Буду разбираться по ходу. 
6 Доска. Смещение 00:07:57
59 чел. ★ 4.9 Done
  На этом уроке мы допишем перенос фигуры и учтём смещение при клике.
Теперь вы сможете разыграть любую партию - сделайте скриншот интересной позиции!
Отчёт отправил: 4814. Дмитрий Выполнено за 20 мин. [Показать отчёт]
Научился: Реализовали функцию переноса фигур. 
Сложности: Хм. Множество новых функций и команд, поэтому в большей степени выглядит как шаманство. Придется читать про  все использованные команды. Но фигуры-то перемещаются. 
7 Доска. Запуск на Windows 00:05:57
59 чел. ★ 5 Done
  На этом уроке мы создадим независимый билд (рабочая версия)
нашей игры для платформы Windows.
Отчёт отправил: 4814. Дмитрий Выполнено за 17 мин. [Показать отчёт]
Научился: Шаманство! Но все работает. 
Сложности: Все четко. 
8 Доска. ПЕРВЫЙ ФИНАЛЬНЫЙ УРОК 00:02:32
54 чел. ★ 4.8 Done
  Мы закончили первую часть курса,
создали шахматную доску,
запустили её на Windows.

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

Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 5 мин. [Показать отчёт]
Научился: Внимательно посмотрел и послушал! 
Сложности: В настоящий момент смартфон с Android не используется в качестве рабочего устройства, но в дальнейшем при решении задачи о кросс-платформенности будущей игры обязательно займусь этим вопросом. 
10 Доска. VIP. Запуск в Интернете 00:11:24
53 чел. ★ 4.9 Done
  На этом уроке мы отправим наш проект в Интернет.
Для этого мы воспользуемся технологией WebGL.
Генерация страницы занимает продолжительное время.
Засеки момент начала и напиши в отчете сколько времени это заняло.

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

Отчёт отправил: 4814. Дмитрий Выполнено за 1 день 22 час. 31 мин. [Показать отчёт]
Научился: Очень интересует платформа WebGL, особенно, для продвижения игры. 
Сложности: 1. Проблемы возникли сначала из-за того, что путь содержал русские буквы. Переименовал директорию. 2. При построении Unity WebGL по умолчанию выводится Board в окне "Scenes In Build". Если поставить галочку, то проект построится, но не запустится в браузере. Галочку ставить нельзя! 
11 FREE Классы. Архитектура проекта 00:19:24
1 тест
64 чел. ★ 5 Done
  На этом уроке мы познакомимся с архитектурой проекта,
посмотрим на предстоящее путешествие с высоты птичьего полёта.
Задание: написать, что для вас в этом плане самое простое, а что - самое сложное.

Отчёт отправил: 4814. Дмитрий Выполнено за 18 час. 7 мин. [Показать отчёт]
Научился: Для меня практически все новое, так что делить на простое/сложное не буду. Что касается МЖП, то для меня это аналог создания прототипа игры, где достаточно реализовать минимальный функционал, чтобы заинтересовать и убедить напарников, отвечающих за графику/музыку/дизайн, а также тестеров. Для моих целей именно сейчас необходимо изучение клиент-серверных технологий, а также javascript/html/css для клиента, так что Микрошахматы - это то, что нужно прямо здесь и сейчас. Ну и остальные технологии и курсы не помешают. 
12 Классы. Шахматная библиотека 00:15:22
2 теста
53 чел. ★ 4.9 Done
  На данном уроке мы начинаем создание шахматных классов на языке C#, которые позволят проверять правила игры.
Для этого мы напишем библиотеку, которая сможет для любой шахматной позиции определить возможность любого хода.
Отчёт отправил: 4814. Дмитрий Выполнено за 37 мин. [Показать отчёт]
Научился: Узнал про Class Library и возможности подключения классов к загружаемым проектам. Видимо, нам потребуется класс фигур figures, класс canMove с проверкой возможности ходить для каждой фигур, enum со статусом состояний - (none, check, stalemate, checkmate).  
Сложности: Все понятно и очень интересно как это будет реализовано на C#. На javascript "Микрошахматы" разбиение на классы не использовалось. 
13 Классы. Цветная фигура 00:10:21
53 чел. ★ 4.9 Done
  Мы продолжаем создание шахматных классов на языке C#,
которые позволят проверять правила игры.
На этом уроке мы рассмотри схему библиотеки dll,
которая поможет нам сориентироваться в дальнейших действиях.
Отчёт отправил: 4814. Дмитрий Выполнено за 3 час. 31 мин. [Показать отчёт]
Научился: Создали перечисления Figure со всеми возможными фигурами белого и черного цвета и Color, а также класс ColorMethods и функцию для реализации в будущем передачи хода. 
Сложности: Все понятно. 
14 Классы. Квадратная площадь 00:14:59
52 чел. ★ 5 Done
  Мы продолжаем создание шахматных классов на языке C#,
которые позволят проверять правила игры.
На этом уроке мы создадим структуру классов
с минимально необходимым кодом.

Отчёт отправил: 4814. Дмитрий Выполнено за 4 час. 21 мин. [Показать отчёт]
Научился: Создали структуру Square, добавили проверку нахождения клеток внутри доски, реализовали возможность перевода координат клеток из цифрового значения [1, 1] в строчное ("b2") и обратно, протестировали работу программы. 
Сложности: Сложно запомнить и структурировать все в голове. 
15 Классы. Фигурой марш! 00:11:52
51 чел. ★ 5 Done
  Мы продолжаем создание шахматных классов на языке C#,
которые позволят проверять правила игры.
На этом уроке мы создадим классы для
хранения и перемещения фигур по клеткам.
Отчёт отправил: 4814. Дмитрий Выполнено за 24 мин. [Показать отчёт]
Научился: Подготовили классы для реализации определения фигур на клетках и их перемещения. 
Сложности: Все знакомо по курсу "Микрошахматы" на javascript, но реализуется по-другому, в отдельных классах. 
16 Классы. Квадратная матрица 00:09:56
51 чел. ★ 5 Done
  Мы продолжаем создание шахматных классов на языке C#,
которые позволят проверять правила игры.
На этом уроке мы создадим класс Board(),
который будет заниматься доской и работать с FEN.
Отчёт отправил: 4814. Дмитрий Выполнено за 18 мин. [Показать отчёт]
Научился: Создали класс Board, провели подготовительную работу для реализации функций определения фигур на клетках и их перемещения. 
Сложности: Хорошо, что все функции знакомы и понятны по "Микрошахматам", плохо, что это не помогает сообразить что делать-то дальше и как все это построить и связать в целом. 
17 Классы. Стой, кто идёт! 00:10:04
51 чел. ★ 5 Done
  Мы продолжаем создание шахматных классов на языке C#,
которые позволят проверять правила игры.
На этом уроке мы создадим класс Moves(),
который будет заниматься проверкой возможности хода.

Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 7 мин. [Показать отчёт]
Научился: Создали новый класс Moves, добавили булевую функцию CanMove (может ли ходить эта фигура) с 2 подфункциями (CanMoveFrom - "с клетки" и CanMoveTo - "на клетку"), а также добавили статический класс FigureMethods, определяющий цвет фигуры. 
Сложности: Не удалось найти ошибку в классе Moves, но не очень нравится строка fm.figure.GetColor() != board.moveColor. Возможно, недостаточно определить то, что цвет фигуры на клетке, с которой ходим, должен не совпадать с цветом клетки, на которую ходим. Возможно, нужно отдельно проверять на клетке, куда идем, пустую клетку и чужую фигуру. Побродил между классами Board, Color, FigureMethods и Moves и их функциями определения цвета фигуры и заблудился.  Открыл функцию "Can_move_to" на "Микрошахматах", но там проверка реализована иначе. Но в них идут отдельные проверки на пустую клетку и на различие значений функций get_color и move_color.  
18 Классы. Шахматная бюрократия 00:07:58
50 чел. ★ 5 Done
  Мы продолжаем создание шахматных классов на языке C#,
которые позволят проверять правила игры.
На этом уроке мы допишем класс Chess().
Отчёт отправил: 4814. Дмитрий Выполнено за 17 мин. [Показать отчёт]
Научился: Дополнили класс Chess, создали конструктор Chess, модифицировали функции Move и GetFigureAt. 
Сложности: Сложно не запутаться во всех классах и их методах. 
19 Классы. Консольная доска 00:14:05
1 тест
49 чел. ★ 5 Done
  Мы приступаем к написанию тестов для нашей библиотеки.
На этом уроке мы создадим функционал для отображения доски
и исправим старую ошибку копипаста.

Отчёт отправил: 4814. Дмитрий Выполнено за 15 час. 11 мин. [Показать отчёт]
Научился: Дополнили пространство ChessDemo, создали и доработали функцию ChessToAscii перевода фигур в Ascii-кодировку, раскрасили доску с помощью функции Print. 
Сложности: Программа уже объемная и сложная, поэтому все понятно в отдельных деталях, но в целом ориентироваться сложно, т.к. используется много всего. Самая простая фигура для реализации - конь, самая сложная - пешка.  
20 Классы. ВТОРОЙ ФИНАЛЬНЫЙ УРОК 00:00:00
49 чел. ★ 4.8 Done
  Мы создали все основные классы нашего проекта.
Твоя задача - нарисовать UML схему созданных классов.
Нарисовать схему значительно проще, когда проект уже готов.
Поэтому задание не сложное, но очень, очень полезное и нужное.
Используй иерархическую структуру Solution Explorer в VisualStudio.
Нарисовать можно от руки, либо в сервисе draw.io.
Можно использовать любой другой *не автоматический* инструмент рисования.
Важно сделать это самостоятельно, а не сгенерить программой! Поэтому рисуй сам.

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

Отчёт отправил: 4814. Дмитрий Выполнено за 3 час. 33 мин. [Показать отчёт]
Научился: Познакомился с UML схемами. Построил схему классов/функций. 
Сложности: Draw.io не понравился, т.к. сами по себе формы рисует хорошо, а вот с текстом выглядит не очень. Excel лучше. 
21 Алгоритмы. Волшебные шахматы 00:22:30
1 тест
47 чел. ★ 5 Done
  Мы приступаем к написанию шахматных алгоритмов.
На этом уроке мы добавил в класс Board() необходимые
свойства и реализуем парсинг передаваемого FEN.

Отчёт отправил: 4814. Дмитрий Выполнено за 1 день 6 мин. [Показать отчёт]
Научился: Посмотрели фильму, отсплитили и отпарсили строку fen и наполнили класс Board вспомогательными функциями, инициализирующими различные свойства. 
Сложности: По отдельности все понятно. 
22 Алгоритмы. Сборка фена 00:16:34
1 тест
46 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы реализуем формирование
текущей позиции в формате FEN.

Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 11 мин. [Показать отчёт]
Научился: Реализовали функцию GenerateFEN, обновляющую FEN-строку и доску после каждого хода. Реализовали вспомогательные функции, обеспечивающие "сборку" обновленной строки FEN. 
Сложности: По отдельности все понятно. И красиво. 
23 Алгоритмы. Генератор ходов 00:19:11
1 тест
43 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы начинаем реализацию проверок
можно ли пойти с одной клетки на другую.
Отчёт отправил: 4814. Дмитрий Выполнено за 19 час. 6 мин. [Показать отчёт]
Научился: Знакомство с Yield.  Написание функций YieldValidMoves (класс Chess), YieldMyFigureOnSquares (класс Board), YieldBoardSquares (класс Square), ссылающихся друг на друга и обеспечивающих выборку всех возможных ходов для игрока, который сейчас ходит. Переопределение под свои задачи стандартной функции ToString.  
Сложности: Ново, сложно и интересно. 
24 Алгоритмы. Куда идёт Король 00:10:43
1 тест
42 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы реализуем проверку
может ли King пойти с одной клетки на другую.
Отчёт отправил: 4814. Дмитрий Выполнено за 36 мин. [Показать отчёт]
Научился: Доработали функцию CanMove, добавив к проверке клетки, с которой ходит фигура, (CanMoveFrom) и клетки, на которую хочет пойти,  (CanMoveTo) проверку допустимости возможных ходов для фигуры (CanFigureMove). Вынесли из класса Moves в класс FigureMoving переменные DeltaX/Y и AbsDeltaX/Y. Сделали проверку корректности ходов для королей и коней. 
Сложности: Все просто, в т.ч. и потому, что эти алгоритмы использовались в "Микрошахматах". При этом  использование классов позволяет сделать код более читабельным и наглядным. 
25 Алгоритмы. Ночью с Конём 00:05:05
1 тест
42 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы реализуем проверку
может ли Knight пойти с одной клетки на другую.
Отчёт отправил: 4814. Дмитрий Выполнено за 7 мин. [Показать отчёт]
Научился: Реализовали функцию перемещения коней CanKnightMove. Все отлично. 
Сложности: Все понятно. 
26 Алгоритмы. Дальнобойщики 00:17:19
1 тест
42 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы переходим к дальнобойным фигурам.
Отчёт отправил: 4814. Дмитрий Выполнено за 3 час. 56 мин. [Показать отчёт]
Научился: Реализовали функцию перемещения для ферзей, тур и офицеров. Интересно сравнивать реализацию с "Микрошахматами". Во-первых, используются классы, во-вторых, более изящные решения, уже, по сути,  1 функцией задаются правила для 3 разных фигур. 
Сложности: Все понятно и интересно. 
27 Алгоритмы. Храбрая пешка 00:19:03
41 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы приступаем к реализации
алгоритмов самой сложной фигуры: Pawn.
Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 14 мин. [Показать отчёт]
Научился: Реализовали основную часть передвижения пешек. Интересно сравнивать с реализацией в "Микрошахматах". 
Сложности: Все понятно. 
28 Алгоритмы. Четвёртое превращение 00:12:27
1 тест
41 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы реализуем превращение Pawn
в одну из четырёх фигур: Queen, Knight, Bishop и Rook.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 13 мин. [Показать отчёт]
Научился: Доработали функции и реализовали возможность превращения пешек в 1 из 4 фигур по достижении последней линии. 
Сложности: Очень интересное ключевое слово yield для итератора. 
29 Алгоритмы. Рефакторинг на доске 00:17:03
1 тест
41 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы займёмся рефакторингом.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 57 мин. [Показать отчёт]
Научился: Создали производный класс NextBoard, чтобы избавить Board от методов, меняющих содержимое. Провели рефакторинг. 
Сложности: Рефакторинг, с одной стороны, это хорошо и интересно. С другой стороны, есть риск ошибки при переносе, а также нарушается уже привычная последовательность и взаимосвязь функций, что вызывает легкую панику. 
30 Алгоритмы. Допрыгалась! 00:21:20
41 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы займёмся взятием пешкой на проходе.
Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 29 мин. [Показать отчёт]
Научился: Добавили функции определения наличия состояния битого поля SetEnpassant и взятие пешкой пешки другого цвета на проходе и удаление битой пешки DropEnpassant. Провели рефакторинг. 
Сложности: Все понятно. 
31 Алгоритмы. Королевский паркур 00:25:05
41 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы реализуем рокировку.
Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 23 мин. [Показать отчёт]
Научился: Реализовали функцию рокировки. Интересно было сравнивать с реализацией в "Микрошахматах". 
Сложности: Все понятно. 
32 Алгоритмы. Защита короля 00:20:26
41 чел. ★ 5 Done
  Мы продолжаем написание шахматных алгоритмов.
На этом уроке мы будем защищать короля от ШАХа.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 28 мин. [Показать отчёт]
Научился: Реализовали функции проверки на шах IsCheck и проверки возможных корректных ходов после шаха. 
Сложности: Концепция "пустой фигуры", которой не существует, ходит ниоткуда в никуда и ни во что не превращается.  
33 Алгоритмы. Шах и Мат! 00:09:55
41 чел. ★ 5 Done
  Мы заканчиваем написание шахматных алгоритмов.
На этом уроке мы реализуем возврат ситуации на доске.
Отчёт отправил: 4814. Дмитрий Выполнено за 28 мин. [Показать отчёт]
Научился: Реализовали функции шаха, мата, пата, добавили флаги. 
Сложности: Интересный способ проверки наличия ходов с использованием YieldValidMove. 
34 Алгоритмы. ТРЕТИЙ ФИНАЛЬНЫЙ УРОК 00:03:57
41 чел. ★ 5 Done
  На этом уроке мы исправим одну ошибку и добавим ещё один вариант метода GetFigureAt(string xy).
Ваше задание - записать подробный отзыв об алгоритмической части проекта.
Отчёт отправил: 4814. Дмитрий Выполнено за 44 мин. [Показать отчёт]
Научился: Дополнили функцию Chess Move запретом хода под шах, а также сделали перегрузку метода GetFigureAt, позволив задавать координаты клетки не только в виде [x][y], но и строковой переменной в виде "g2". 
Сложности: Реализацию алгоритмов постоянно сравнивал с реализацией в курсе "Микрошахматы". На джаваскрипт все функции были реализованы последовательно, без применения классов, в основном, через связку условного оператора "if-else" c булевыми переменными. "Рулонный" вариант реализации кода, т.е., весь код идет непрерывно и последовательно, т.е. процедурное программирование. В случае "Клиент-серверных шахмат" мы уже задействовали десяток классов, где весь код разделили на логические блоки, в каждом из которых реализуем только определенную часть - параметры самой доски, цвет, все возможные фигуры, правила передвижения каждой из фигур и т.п. В данном случае это уже пример полноценного применения объектно-ориентированного программирования, при котором весь код разбивается на удобные логические блоки, имеет четкую иерархию классов и понятную структуру. При этом код становится более читабельным, и мы имеем возможность в любой момент дорабатывать и дополнять любой из блоков, без необходимости просмотра всего объема кода. Планирую использовать существующую модель структурирования и иерархии классов в качестве образца при создании своей игры. 
35 Алгоритмы. VIP. Шахматное супертестирование 00:11:34
41 чел. ★ 5 Done
  На этом уроке мы проверим корректность ваших алгоритмов.
Для этого мы прогоним супер-тест по генерации всех вариантов.

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

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

Отчёт отправил: 4814. Дмитрий Выполнено за 29 мин. [Показать отчёт]
Научился: Очень интересный сайт, благодаря которому можно убедиться в полноте и правильности написанных "Шахмат". 
Сложности: Все понятно. Но требуется слишком много времени на полноценное тестирование. 
36 Алгоритмы. VIP. Можно пройти? 00:02:13
41 чел. ★ 5 Done
  На этом уроке мы немного порефакторим и
добавим очень полезную функцию.
Отчёт отправил: 4814. Дмитрий Выполнено за 16 мин. [Показать отчёт]
Научился: Провели рефакторинг функции Chess Move, разделив ее на 2 части - проверку корректности и возможности хода и сам ход с созданием нового состояния доски и фигур. 
Сложности: Все понятно. 
37 Алгоритмы. VIP. Как пройти в библиотеку 00:10:35
40 чел. ★ 5 Done
  На этом уроке мы подготовим библиотеку ChessRules.
Для этого мы скомпилируем её в необходимой версии .NET
и проверим работоспособность в Unity проекте.

Отчёт отправил: 4814. Дмитрий Выполнено за 3 час. 57 мин. [Показать отчёт]
Научился: Научился подключать библиотеку C# к Unity проекту. 
Сложности: При смене версии на .NET Framework 3.5 вылетело множество ошибок, которые напугали. Но это всего лишь неиспользуемые using. 
38 Интерфейс. План действий 00:10:23
40 чел. ★ 5 Done
  На этом уроке мы обсудим дальнейший план действий.
Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 20 мин. [Показать отчёт]
Научился: Все лишнее удалено, фигуры подготовлены.  
Сложности: В базовом архиве текстур для белых и черных клеток нет, и пока что непонятны их  исходные параметры, поэтому сходу сделать не получится. Разберемся по ходу. 
39 Интерфейс. Генерация объектов 00:16:45
40 чел. ★ 5 Done
  На этом уроке мы сгенерируем шахматную доску
с базовыми объектами на ней.
Отчёт отправил: 4814. Дмитрий Выполнено за 7 час. 45 мин. [Показать отчёт]
Научился: Продолжили знакомство с Unity. Создали доску 8х8, раскрасили ее в черно-белый цвет, добавили фигуры. 
Сложности: Сложность в том, что незнаком со многими понятиями - ассоциативный массив Dictionary, GameObject и т.п. Учимся на ходу. 
40 Интерфейс. Начальная позиция 00:11:23
39 чел. ★ 5 Done
  На этом уроке мы добавим ранее созданную
библиотеку ChessRules.dll в проект на Unity.

Отчёт отправил: 4814. Дмитрий Выполнено за 36 мин. [Показать отчёт]
Научился: Добавили библиотеку ChessRules.dll, связали функциональность фигур, созданную в VS, со спрайтами Unity. 
Сложности: Сложность только в недостатке базовых знаний. А по уроку - все понятно. 
41 Интерфейс. Ход делегата 00:10:28
39 чел. ★ 5 Done
  На этом уроке мы активируем проверку ходов,
которую реализовали в ChessRules.dll.

Отчёт отправил: 4814. Дмитрий Выполнено за 53 мин. [Показать отчёт]
Научился: Переработали функции, связанные с операцией "Тащи и бросай". Создали делегат для вызова функции из другого класса. Добавили переменные, фиксирующие стартовую и финишную позиции фигуры при переносе. 
Сложности: Все отлично. 
42 Интерфейс. Проверка хода 00:09:44
37 чел. ★ 5 Done
  Мы продолжаем реализацию необходимого функционала для
активации проверки ходов на основе ChessRules.dll.
Отчёт отправил: 4814. Дмитрий Выполнено за 30 мин. [Показать отчёт]
Научился: Реализовали функцию VectorToSquare, чтобы привести координаты клеток к целым числам. А также преобразовали представление координат клеток из вида [0][0] в строковое значение вида "a1". Реализовали функцию передвижения фигур. 
Сложности: Все удивительно, но замечательно. 
43 Интерфейс. VIP. Клетки отправления 00:09:17
37 чел. ★ 4.9 Done
  Это бонусный урок, выполнять его не обязательно.
На данном уроке мы реализуем подсветку тех клеток,
с которых можно ходить.
Отчёт отправил: 4814. Дмитрий Выполнено за 45 мин. [Показать отчёт]
Научился: Реализовали подсветку клеток с фигурами, которыми можно ходить. Написали функции MarkSquareFrom/UnmarkSquare, ShowSquare. 
Сложности: Все понятно. 
44 Интерфейс. VIP. Клетки прибытия 00:09:17
1 тест
37 чел. ★ 4.9 Done
  Это бонусный урок, выполнять его не обязательно.
На данном уроке мы реализуем подсветку тех клеток,
на которые можно ходить.
Отчёт отправил: 4814. Дмитрий Выполнено за 26 мин. [Показать отчёт]
Научился: Реализовали подсветку клеток, на которые может идти схваченная нами фигура. Написали функции MarkSquareTo, PickObject c делегатом. 
Сложности: Все отлично 
45 Интерфейс. Щепотка рефакторинга 00:07:18
1 тест
37 чел. ★ 4.9 Done
  На этом уроке мы начинаем подготовку к
превращению пешки в одну из четырёх фигур.
Для начала проведём небольшой рефакторинг.
Отчёт отправил: 4814. Дмитрий Выполнено за 54 мин. [Показать отчёт]
Научился: Провели рефакторинг кода, упростили функции ShowFigures и ShowSquare, написали функцию SetSprite. 
Сложности: Рефакторинг в данном случае сложно воспринимать просто потому, что незнакомы классы и методы Unity - GameObject, SpriteRenderer, transform.position, GetComponent, Instantiate и т.п.  
46 Интерфейс. Выставка фигур 00:09:01
37 чел. ★ 4.9 Done
  На этом уроке мы продолжаем подготовку к
превращению пешки в одну из четырёх фигур.
Теперь нам надо подготовить фигуры, в которые будем превращать.
Отчёт отправил: 4814. Дмитрий Выполнено за 59 мин. [Показать отчёт]
Научился: Дополнили функцию InitGameObjects, реализовали функцию ShowPromotionFigures для отображения доступных фигур, на которые может быть обменена пешка при достижении последней горизонтали. Подготовились к реализации полноценного преобразования пешки. 
Сложности: Все отлично. 
47 Интерфейс. Долгожданное превращение 00:17:16
36 чел. ★ 5 Done
  На этом уроке мы наконец превратим
нашу пешку в одну из четырёх фигур.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 32 мин. [Показать отчёт]
Научился: Закончили реализацию преобразования пешки в одну из фигур при достижении последней горизонтали, а заодно и реализацию всего раздела правил перемещения фигур. 
Сложности: Все отлично. 
48 Интерфейс. ЧЕТВЁРТЫЙ ФИНАЛЬНЫЙ УРОК 00:00:00
37 чел. ★ 4.9 Done
  Напишите отзыв о четвёртой части курса:
что получилось, что было сложным,
что ещё вы добавите в программу.
Отчёт отправил: 4814. Дмитрий Выполнено за 7 мин. [Показать отчёт]
Научился: Реализовали всю алгоритмическую часть корректного передвижения фигур по доске. Все отлично. 
Сложности: Основная сложность связана с незнанием Unity и его элементов. Учимся! 
49 База данных. Management в студию! 00:02:39
35 чел. ★ 4.9 Done
  На этом уроке мы приступаем к созданию БД
для нашего сервера шахматы онлайн.

Отчёт отправил: 4814. Дмитрий Выполнено за 16 мин. [Показать отчёт]
Научился: Скачал и установил SQL SMS. 
Сложности: Все просто. 
50 База данных. Планирование 00:17:52
37 чел. ★ 4.9 Done
  Мы продолжаем создание БД для
нашего сервера шахматы онлайн.
На данном уроке мы спроектируем схему нашей БД.
Отчёт отправил: 4814. Дмитрий Выполнено за 50 мин. [Показать отчёт]
Научился: Подготовка структуры будущей базы данных. 
Сложности: Очень интересная и важная тема для создания игры.  
51 База данных. Упрощение 00:08:09
36 чел. ★ 4.8 Done
  Мы продолжаем создание БД для
нашего сервера шахматы онлайн.
На данном уроке мы упростим схему нашей БД.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 33 мин. [Показать отчёт]
Научился: Упростили схему, оставили только то, без чего вообще обойтись нельзя. 
Сложности: Жалко блок "Players". Самому будет тяжело разбираться с идентификацией игроков и т.п. 
52 База данных. Созидание 00:06:52
35 чел. ★ 4.9 Done
  Мы продолжаем создание БД для
нашего сервера шахматы онлайн.
На данном уроке мы наконец создадим
нашу базу данных для онлайн шахмат.
Отчёт отправил: 4814. Дмитрий Выполнено за 34 мин. [Показать отчёт]
Научился: Первое знакомство с MS SQL. Создали первую базу данных. 
Сложности: Все отлично. 
53 База данных. VIP. Таблицы на вырост 00:12:53
34 чел. ★ 4.9 Done
  Мы продолжаем создание БД для
нашего сервера шахматы онлайн.
На данном уроке мы создадим дополнительные таблицы,
которые понадобятся для реализации полноценной онлайн игры.
Отчёт отправил: 4814. Дмитрий Выполнено за 24 мин. [Показать отчёт]
Научился: Добавили таблицы, необходимые для создания полнофункционального приложения. 
Сложности: Пока все понятно.  
54 База данных. VIP. Красивая диаграма 00:04:41
34 чел. ★ 4.9 Done
  На данном уроке мы нарисуем диаграмму нашей БД.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 47 мин. [Показать отчёт]
Научился: Создали диаграмму зависимостей БД. 
Сложности: Все отлично. 
55 База данных. ПЯТЫЙ ФИНАЛЬНЫЙ УРОК 00:00:00
34 чел. ★ 4.8 Done
  Напишите отзыв о пятой части курса:
что получилось, что было сложным,
что ещё вы добавите в программу.
Отчёт отправил: 4814. Дмитрий Выполнено за 11 мин. [Показать отчёт]
Научился: Скачали и установили SQL SMS. Провели подготовительные работы для создания базы данных, создали структуру БД, внесли начальные данные. 
Сложности: Все понятно, но это еще только подготовительная работа. Непосредственная работа с БД - впереди. 
56 Сервер. Последняя версия 00:12:29
33 чел. ★ 5 Done
  На данном уроке мы приступаем к созданию
серверной части нашего онлайн проекта по шахматам.
Отчёт отправил: 4814. Дмитрий Выполнено за 19 мин. [Показать отчёт]
Научился: Приступили к созданию сервера, запустили WebAPI, создали класс с конструктором Version 
Сложности: Все отлично. 
57 Сервер. Райский Эдем - EDM 00:13:23
32 чел. ★ 5 Done
  На этом уроке мы создадим EDM - Entity Data Model.
Отчёт отправил: 4814. Дмитрий Выполнено за 28 мин. [Показать отчёт]
Научился: Добавили к нашему проекту ADO.NET EDM, подключились к базе данных, создали и модифицировали ChessController. 
Сложности: Все новое и интересное. 
58 Сервер. Новая игра на JSON 00:11:40
32 чел. ★ 5 Done
  На этом уроке мы изменим формат вывода с XML на JSON.
Отчёт отправил: 4814. Дмитрий Выполнено за 49 мин. [Показать отчёт]
Научился: Модифицировали файл Gliobal.asax, удалив xml-формат и добавив JSON. Модифицировали контроллер и написали функцию запуска новой игры. 
Сложности: Все в новинку. 
59 Сервер. Официант без логики 00:10:07
32 чел. ★ 5 Done
  На этом уроке мы будем упрощать наш ChessController.
Отчёт отправил: 4814. Дмитрий Выполнено за 8 час. 44 мин. [Показать отчёт]
Научился: Создали и наполнили класс Logic в моделях, провели рефакторинг, освободили контроллер от лишнего кода. Подключили библиотеку ChessRules. 
Сложности: По отдельности понятно, но вот собрать все это в голове и усвоить - сложно. 
60 Сервер. Ваш ход! 00:19:29
32 чел. ★ 5 Done
  Мы продолжаем создание серверной части для
нашего проекта Шахматы по сети.
На этом уроке мы реализуем выполнение ходов.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 29 мин. [Показать отчёт]
Научился: Написали функции GetMoves и MakeMove для реализации хода. Внесли изменения в WebApiConfig. 
Сложности: Сложно помнить обо всех ранее реализованных функциях и взаимосвязях между ними. 
61 Сервер. Шахматная Идемпотентность 00:09:34
32 чел. ★ 5 Done
  Мы продолжаем создание серверной части для
нашего проекта Шахматы по сети.
На этом уроке мы обсудим Шахматную Идемпотентность.
Напишите своими словами, что такое Идемпотентность.
Отчёт отправил: 4814. Дмитрий Выполнено за 3 час. 25 мин. [Показать отчёт]
Научился: Реализовали функции GetGameById и GetGame. Все отлично. 
Сложности: Все понятно. 
62 Сервер. Китайская ничья 00:06:28
31 чел. ★ 5 Done
  Мы продолжаем создание серверной части для
нашего проекта Шахматы по сети.
На этом уроке мы реализуем завершение игры при сдаче.
Отчёт отправил: 4814. Дмитрий Выполнено за 53 мин. [Показать отчёт]
Научился: Реализовали возможность сдаться/прекратить партию. 
Сложности: Все отлично. 
63 Сервер. ШЕСТОЙ ФИНАЛЬНЫЙ УРОК 00:00:00
31 чел. ★ 4.8 Done
  Напишите отзыв о шестой части курса:
что получилось, что было сложным,
что ещё вы добавите в программу.
Отчёт отправил: 4814. Дмитрий Выполнено за 9 мин. [Показать отчёт]
Научился: Реализовали серверную часть. Создали базу данных для игры, подключив ADO.net. Создали и наполнили новый класс Logic с различными состояниями игры. Реализовали класс ChessController.  
Сложности: Сложность в обычном недостатке знаний, в связи с чем много новых понятий.  
64 Хостинг. Регистрация аккаунта 00:05:13
31 чел. ★ 4.9 Done
  Приступаем к размещению нашего сервера в интернете.
Для этого нам потребуется Windows-хостинг с поддержкой ASP.NET

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

Ссылка для регистрации на хостинге: https://www.reg.ru/?rlink=reflink-30461

Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 10 мин. [Показать отчёт]
Научился: Знакомство с хостингом. 
Сложности: Все понятно. 
65 Хостинг. Лучше заплатить 00:11:12
31 чел. ★ 4.8 Done
  На этом уроке мы выберем план, доменное имя, укажем контактную информацию.

Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 25 мин. [Показать отчёт]
Научился: Познакомился с хостингом и основными понятиями. Прошел регистрацию, оплатил и получил домен. Все замечательно. 
Сложности: Совершить оплату. Традиционные способы оплаты в Крыму не действуют, напрямую заплатить нельзя, пришлось создать яндекс-кошелек. 
66 Хостинг. Доступ по FTP 00:10:08
31 чел. ★ 5 Done
  На этом уроке мы установим пароль для подключения к хостингу по FTP.

Напишите, какой FTP-клиент вы используете и приложите
скриншот вашей FTP программы с подключением к хостингу.
Отчёт отправил: 4814. Дмитрий Выполнено за 13 час. 30 мин. [Показать отчёт]
Научился: Загрузили Total Commander, подключились к сайту по FTP. Все прошло успешно. 
Сложности: Все ново и увлекательно. 
67 Хостинг. Публикация проекта 00:12:13
31 чел. ★ 5 Done
  На этом уроке мы настроим публикацию проекта из Visual Studio.
Выполните все шаги и опубликуйте проект.

Приложите скриншот Visual Studio с логами публикации
и содержимое FTP каталога после публикации.
Отчёт отправил: 4814. Дмитрий Выполнено за 8 час. 3 мин. [Показать отчёт]
Научился: Настроили ftp-подключение в Visual Studio, провели сборку и публикацию в VS. Возникли ошибки с web.config на сайте. 
Сложности: Все ново. 
68 Хостинг. Перенос базы данных 00:11:56
30 чел. ★ 5 Done
  На этом уроке мы перенесём базу данных на сервер и подключимся к ней из скрипта.

Отчёт отправил: 4814. Дмитрий Выполнено за 13 час. 5 мин. [Показать отчёт]
Научился: Перенесли Базу данных на сервер, провели настройку подключения.  
Сложности: Проблемы с Web.config. 
69 Хостинг. VIP. Двойные стандарты 00:07:32
30 чел. ★ 5 Done
  На этом уроке мы обсудим нюансы с публикацией
очередной версии серверной части на хостинге.
Отчёт отправил: 4814. Дмитрий Выполнено за 58 мин. [Показать отчёт]
Научился: Модифицировали файл web.config, защитив его от "перезаписи" со стиранием настроек при повторных публикациях. 
Сложности: Все ново. Придется разбираться с web.config. 
70 Хостинг. СЕДЬМОЙ ФИНАЛЬНЫЙ УРОК 00:00:00
30 чел. ★ 5 Done
  В этой части мы разместили сервер не хостинге.
Шахматная серверная программа нашла пристанище в интернете.
Наконец-таки можно будет переходить к игре по сети.

Напишите в отчёте, всё ли получилось
и по какому адресу можно найти ваш серверный API.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 день 17 час. 23 мин. [Показать отчёт]
Научился: http://wartalent.ru/api/Chess УРА!!! Зарегистрировал хостинг, оплатил, настроил, прописал доступ по FTP и опубликовал. Теперь можно делать ходы непосредственно на сайте. Все отлично!!! 
Сложности: Огромная, а главное - неизвестная, проблема возникла из-за того, что в web.config в 13-й строке была прописана последняя версия .Net Framework ... targetFramework="4.7.1" В результате VS успешно строила и публиковала проект, а на сайте он не публиковался. При этом выскакивало сообщение о том, что проблема именно на сайте, но какая - не скажем из соображений безопасности. Пришлось пересмотреть последние 8 видео, удалить все настройки подключения ftp, хостинга, публикации и заново пройти всю процедуру настройки хостинга в поисках ошибки или пропущенного действия и перепрописать все настройки. Не помогло. Все успешно строилось, но на сайт не пускали. Ошибок и пропусков не было, просто при публикации в VS нужно понизить версию .Net Framework. Мелочь, но на это ушло 2-3 дня и масса усилий. Сложно искать неизвестную ошибку, о которой не знаешь, причем в технологиях, в которых не разбираешься. 
71 Клиент. Достучаться до облака 00:05:06
29 чел. ★ 5 Done
  На этом уроке мы приступаем к завершающему этапу
по созданию клиент-серверной игры "Онлайн шахматы".
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 36 мин. [Показать отчёт]
Научился: Создали новый класс Client, подключились к сайту и получили строку Fen. Все отлично. 
Сложности: Чтобы получить именно FEN из полученной строки, нужно: 1. Разбить строку на части по пробелу (первый пробел сразу после FEN). Поможет Split(). 2. С помощью IndexOf(' ') можем определить позицию первого пробела, отнимаем 1 и находим позицию последнего знака FEN. 3. Затем с помощью того же IndexOf("FEN") находим путем прибавления к значению  индекса 6 позиций индекс первого знака FEN. 5. С помощью Substring выводим весь FEN, зная индексы первого и последнего знака. 5. Затем можем провести разбиение FEN на 8 горизонталей путем разбиения по /слешу. Какое-то примитивное и долгое решение. :-)  
72 Клиент. Дедовские методы 00:05:19
29 чел. ★ 5 Done
  На этом уроке мы выделим FEN из полученной json строки.
Отчёт отправил: 4814. Дмитрий Выполнено за 46 мин. [Показать отчёт]
Научился: Вычленили FEN из строки, полученной с сервера, обработали, сделали ход.  
Сложности: Все отлично. 
73 Клиент. Ход в мешке 00:15:23
29 чел. ★ 5 Done
  На этом уроке мы научимся отправлять на сервер наш ход.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 35 мин. [Показать отчёт]
Научился: Реализовали функции получения данных с сервера, обработки, преобразования и отправки данных на сервер. Протестировали работу программы в 2 консолях. Все супер! 
Сложности: Все великолепно. 
74 Клиент. Серверные пешки 00:05:25
29 чел. ★ 5 Done
  На этом уроке мы используем ранее созданный класс Client()
в наш проект на Unity, чтобы можно было поиграть с GUI.
Отчёт отправил: 4814. Дмитрий Выполнено за 33 мин. [Показать отчёт]
Научился: Импортировали класс Client на Unity, подключили к классу Board, получили данные с сервера. Все отлично. 
Сложности: По отдельности - все понятно. 
75 Клиент. Следы невиданных ходов 00:07:25
29 чел. ★ 5 Done
  На этом уроке мы реализуем отправку хода через GUI.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 12 мин. [Показать отчёт]
Научился: Реализовали функцию MakeMove, позволяющую отправлять ход на сервер. Теперь мы не только получаем позицию fen с сервера, но и возвращаем после сделанного хода. 
Сложности: Все отлично.  
76 Клиент. Фоновое обновление 00:11:50
29 чел. ★ 5 Done
  На этом уроке мы реализуем функцию
обновления текущего состояния на доске.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 0 мин. [Показать отчёт]
Научился: Реализовали функцию обновления Refresh, теперь клиент видит ситуацию в режиме "on line". Все отлично. 
Сложности: По отдельности - все понятно, сложно осознать все в целом. 
77 FREE Клиент. ВОСЬМОЙ ФИНАЛЬНЫЙ УРОК 00:03:01
27 чел. ★ 5 Done
  Поздравляю вас с завершением нашего эпического курса
по созданию клиент-серверной игры в шахматы по сети!

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

Расскажите на видео о своём подвиге.
Чем курс понравился, что было сложно,
что было интересно, что можно будет добавить.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 15 мин. [Показать отчёт]
Научился: Чем дальше я прохожу курс и чем больше мысленно "примеряю" его на предмет "расчленения" на блоки и сниппеты с целью использования для создания собственной игры, тем, с одной стороны, все более четко представляется структура и последовательность ее разработки, а с другой - охватывает ужас, когда осознаю, насколько много еще нужно узнать и изучить, чтобы написать "простенькую пошаговую многопользовательскую игру". 
Сложности: Из всех уроков сложнее всего писать видеообзоры. С 6 раза удалось записать более-менее. И только в тот момент, когда я собрался загружать на youtube, я вспомнил, что он не поддерживает разрешение 2560 х 1080. Пришлось писать 7-й обзор. Для записи обзора также пришлось достать и подключить старый компьютер. И бегать между 2 компами. Был у меня недавно смартфон, но пришлось подарить алчным страждущим. 
Видеообзор: FljlPQO8Ko8
78 Рефакторинг. С чего начать? 00:05:39
24 чел. ★ 5 Done
  На этом уроке мы начинаем рефакторинг
кода клиентской части на Unity.
Отчёт отправил: 4814. Дмитрий Выполнено за 26 мин. [Показать отчёт]
Научился: Приступаем к рефакторингу. Пока что просто выделили DragAndDrop в отдельный класс. Можно отрефакторить повторяющийся вызов функций и записать их в отдельную функцию: ShowFigures(), MarkSquareFrom(), ShowPromotioFigures() в функциях Start и Refresh. Но это как-то "мелко". 
Сложности: Все понятно. 
79 Рефакторинг. Координатные трансформации 00:14:04
24 чел. ★ 5 Done
  На этом уроке мы продолжаем рефакторинг
и сейчас мы выделим статические элементы.

Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 17 мин. [Показать отчёт]
Научился: В рамках рефакторинга создали класс Coords для преобразования клеток из текстового вида "a1" в числовой [0][0] и наоборот. 
Сложности: Рефакторинг - это классно. Но опасно и сложно для восприятия. В следующем месяце мне еще повторно идти "по своим следам", а весь последовательный и понятный код будет растащен в разные специализированные классы. 
80 Рефакторинг. Чёрный ящик 00:07:38
24 чел. ★ 5 Done
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы займёмся словарями.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 23 мин. [Показать отчёт]
Научился: Создали класс Box для целей рефакторинга, куда со временем перетащим все ассоциативные массивы и действия над клетками и фигурами. 
Сложности: Все понятно. 
81 Рефакторинг. Интерфейсная прослойка 00:10:35
24 чел. ★ 5 Done
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы создадим интерфейс ICreatable.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 12 мин. [Показать отчёт]
Научился: Добавили интерфейс, преобразовали класс Board. 
Сложности: Тяжко. Не хватает элементарных базовых знаний по интерфейсам, словарям и т.п. Понимание действий есть, но с большим трудом. 
82 Рефакторинг. Ящик с фигурами 00:04:16
1 тест
24 чел. ★ 5 Done
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы сделаем класс Box() абстрактным.
Отчёт отправил: 4814. Дмитрий Выполнено за 40 мин. [Показать отчёт]
Научился: Создали класс BoxFigures, который отвечает за инициализацию фигур. Освобождаем класс Board. 
Сложности: Сочетание жгучего интереса и легкой паники.  
83 Рефакторинг. Многоклеточная сущность 00:06:48
24 чел. ★ 5 Done
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы создадим класс BoxSquares().
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 2 мин. [Показать отчёт]
Научился: Создали класс BoxFigures, вынесли в него весь код, связанный с инициализацией фигур. 
Сложности: Все понятно. 
84 Рефакторинг. Вынос переноса 00:02:34
24 чел. ★ 4.9 Done
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы создадим класс Box().SetPosition().
Отчёт отправил: 4814. Дмитрий Выполнено за 15 мин. [Показать отчёт]
Научился: Перенесли определение каждой фигуры на соответствующей клетке из класса Board в класс Box. 
Сложности: Все понятно. 
85 Рефакторинг. Спрайт, не дай себя заинтерфейсить 00:07:18
24 чел. ★ 5 Done
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы создадим класс Box().SetSpriteAt().
Отчёт отправил: 4814. Дмитрий Выполнено за 25 мин. [Показать отчёт]
Научился: Вынесли в класс Box функцию привязки выбранной в коде VS фигуры к соответствующему спрайту в Unity. 
Сложности: Все понятно. Ну или почти все. 
86 Рефакторинг. Клетка в клетке 00:04:46
24 чел. ★ 5 Done
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы перенесём и разделим класс ShowSquare().
Отчёт отправил: 4814. Дмитрий Выполнено за 31 мин. [Показать отчёт]
Научился: Переносим из класса Board в класс BoxSquares всю информацию, связанную с характеристиками клеток и работой с ними. В этом классе происходит создание клеток, раскраска клеток шахматной доски, привязка фигур с логикой из библиотеки ChessRules к соответствующим спрайтам в Unity, а также определение подсветки клеток, с которых и на которые фигуры могут ходить. 
Сложности: Все понятно. 
87 Рефакторинг. Шахматная независимость 00:07:23
24 чел. ★ 5 Done
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы перенесём некоторые функции в класс BoxSquares().
Отчёт отправил: 4814. Дмитрий Выполнено за 35 мин. [Показать отчёт]
Научился: Разгружаем класс Board. Перенесли в класс BoxSquares, который отвечает за работу с клетками, функции, помечающие клетки, с которых и на которые фигуры могут ходить, а также функцию снятия этих меток. 
Сложности: Шаманство какое-то. Нужно изучить коллекции в целом и оператор Yield в частности. 
88 Рефакторинг. Хоровод из четырёх фигур 00:14:37
24 чел. ★ 4.9 Done
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы порефакторим функционал превращения пешки.
Отчёт отправил: 4814. Дмитрий Выполнено за 3 час. 18 мин. [Показать отчёт]
Научился: Модифицировали функцию преобразования пешки, дошедшей до последней линии, в возможные фигуры. 
Сложности: Все понятно. Но уж больно диковинными становятся ранее простые функции. 
89 Рефакторинг. Волшебник изумрудного ящика 00:18:39
24 чел. ★ 4.9 Done
  Мы продолжаем рефакторинг нашего кода.
На данном уроке мы создадим класс BoxPromots().
Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 1 мин. [Показать отчёт]
Научился: Реализовали функцию превращения пешки по достижению последней линии в фигуры, разгрузили класс Board. То, что пешка может превратиться в саму себя, будет реализовано чуть позже. Но в настоящий момент не вполне корректно работает сама функция преобразования, т.к. она не запрещает выбирать что-либо, кроме указанных фигур. Когда пешка достигает последней линии - высвечиваются фигуры. Если клацкнуть на них - произойдет замена. Но если клацкнуть в любое место на самой доске или просто мимо фигур замены, то останется сама пешка, преобразования не будет.  
Сложности: Все отлично. Начинаю привыкать к мудреным преобразованиям кода. 
90 Рефакторинг. Потерянная пешка 00:36:59
24 чел. ★ 4.9 Done
  На этом уроке мы вернёмся к нашей библиотеке
для исправления старой ошибки: пешка может
превратиться в чужую фигуру ил остаться пешкой.

Отчёт отправил: 4814. Дмитрий Выполнено за 8 час. 47 мин. [Показать отчёт]
Научился: Написали функцию проверки допустимости преобразования пешки в другие фигуры на последней горизонтали, модифицировали класс FigureMoving 
Сложности: Постоянно обнаруживались какие-то ошибки, пришлось повозиться, чтобы отловить их. 
91 Рефакторинг. Класс шахматной игры 00:13:15
23 чел. ★ 4.8 Done
  ЭТОТ УРОК НУЖНО ПЕРЕЗАПИСАТЬ. ДЛЯ ЭТОГО МНЕ НУЖЕН ПРОЕКТ ДО ЕГО ВЫПОЛНЕНИЯ.
ПОЖАЛУЙСТА ПЕРЕД ВЫПОЛНЕНИЕМ ЭТОГО УРОКА СОЗДАЙТЕ АРХИВ ПРОЕКТА И ПРИШЛИТЕ ЕГО МНЕ.

Мы на финишной прямой нашего рефакторинга.
На данном уроке мы вынесем логику игры в отдельный класс Game().

Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 1 мин. [Показать отчёт]
Научился: Создали новый класс Game, чтобы разгрузить Board и перебросить в новый класс игровую логику. 
Сложности: Сложность в том, что запись рефакторинга была раньше реализации подключения клиента и обновления сервера. И fen мы уже получаем с сервера. Пришлось временно реализовать перегрузку метода game.Init (string fen). Некорректно, зато работает. Наверно, правильнее назвать game.Refresh (string fen). 
92 Рефакторинг. Двухэтажное превращение 00:16:50
22 чел. ★ 5 Done
  Мы всё ближе и ближе к финишу нашего рефакторинга.
На данном уроке мы вынесем оставшуюся логику игры в класс Game().

Отчёт отправил: 4814. Дмитрий Выполнено за 1 день 15 час. 31 мин. [Показать отчёт]
Научился: Продолжаем освобождать класс Board и переносим игровую логику в класс Game.  Реализовали перенос функции преобразования пешки в выбранную фигуру при достижении ею последней горизонтали. 
Сложности: Все нормально.   
93 Рефакторинг. Финальное причёсывание 00:06:58
22 чел. ★ 5 Done
  Мы поздравляем тебя с завершением рефакторинга.
На данном уроке мы причешем наши скрипты.
Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 5 мин. [Показать отчёт]
Научился: Прошлись по всем классам, убрали лишнее. Все отлично. 
Сложности: Все понятно. 
94 Рефакторинг. Последний аккорд 00:14:10
23 чел. ★ 4.9 Done
  На этом уроке мы заканчиваем наш эпический курс.
Получилось здорово.
Я доволен результатом.
Надеюсь, вы тоже.
Мы проделали огромную работу.
Каждый стал чуточку умнее и опытнее.
Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 22 мин. [Показать отчёт]
Научился: Большое спасибо Евгению Витольдовичу за этот прекрасный курс и за знакомство с новыми технологиями и понятиями - Unity, ASP.net, MS-SQL, EF, хостинг. Теперь есть четкая инструкция для создания собственной игры от момента написания Концепции и реализации ее правил на C# до создания полноценного клиент-серверного с размещением на сервере. В ближайшее время прохожу курсы Entity Framework, ASP.net. Затем возвращаюсь к курсу "Шахматы онлайн" и, используя в качестве прототипа и руководства к действию, приступаю к написанию своей игры, повторно проходя большинство уроков. Параллельно прохожу "Наношахматы", "Мат конем и слоном", "Tinkvalimas", "VK API". 
Сложности: Все ново. Все интересно. Многое сложно. Но главное - курс дает четкий пошаговый план создания своей многопользовательской игры и знакомит с необходимыми для этого технологиями. 
95 VIP. Меню DimanDOSа 00:27:50
20 чел. ★ 5 Done
  1. Создание и размещение кнопки вызова меню и панели с кнопками.
2. Программирование действий по нажатиям кнопок -
создание функций и привязка их к событиям нажатия.

Отчёт отправил: 4814. Дмитрий Выполнено за 6 час. 38 мин. [Показать отчёт]
Научился: Углубили знакомство с Unity, познакомились с созданием кнопок Меню и интерактивностью. 
Сложности: DimanDOS - лучший!  
  Итого:   95 видеоуроков 17 час. 04 мин.
18 тестов
19 чел. ★ 4.96  
  Финалисты:   Дмитрий,   Yefim,   Tekashnik,   Иван Воронин,   ser2018,   Алексей,   Дмитрий Б,   alklokov,   FireWolf,   Andrew,   Max,   Новопашин Владимир,   Красимир Зорбов,   Антон,   Евгений,   Anatoli,   Freud,   Алена,   MaxB .

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





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

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

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

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


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



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