# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
3 теста |
|||
Мы начинаем создание клиент-серверной программы для игры в Шахматы по сети. Это комплекс программных решений с исользованием: C#, ASP.NET, MS-SQL, EF, Unity В результате мы создадим сервер, через который клиенты смогут играть друг с другом в шахматы со смартфона. Записаться на курс Отчёт отправил: 18783. Andrew Выполнено за 18 час. 4 мин. [Показать отчёт] Научился: Отличному маркетингу от Евгения Витольдовича. Имею минимальные знания по C# и MS-SQL. В шахматах мастер фиде, аут - класс игры невысокий. Сложности: Все сложно. Unity, ASP.NET и EF вообще не знакомы. |
|||||
2 | Доска. Установка Unity 3D |
|
|||
Цель этого урока - установить Unity и набрать несколько строчек шахматных терминов. Скачать Unity3D: unity3d.com/ru Набрать шахматные термины: videosharp.info/console/task/level=1766 Скачать архив с картинками: https://yadi.sk/d/irBRduLp3SseXY Отчёт отправил: 18783. Andrew Выполнено за 8 час. 0 мин. [Показать отчёт] Научился: Установил Unity, узнал как будет взятие на проходе на англ/французском. Сложности: Ничего. 4 ошибки, скорость 170, 1 подход. |
|||||
3 | Доска. Фигуры |
|
|||
На этом уроке мы разместим доску с фигурами. Отчёт отправил: 18783. Andrew Выполнено за 7 дней 57 мин. [Показать отчёт] Научился: Научился создавать проект в Unity. Создал доску, разместил фигуры, переименовал объекты. Сложности: Не было сложного. Доска почему-то без координат, хотя в видео они есть. |
|||||
4 | Доска. Состояния переноса |
|
|||
На этом уроке мы начнём процесс Drag-n-Drop и обсудим все состояния, через которые проходит объект в процессе переноса. Создадим скрипт, класс, перечисление, конструктор и метод Action. Отчёт отправил: 18783. Andrew Выполнено за 38 мин. [Показать отчёт] Научился: Рассмотрел состояния переноса. Создал скрипт, класс, перечисление конструктор и метод Action. Перенес скрипт в Board, запустил, проверил консоль Сложности: Ничего |
|||||
5 | Доска. Подцеп фигуры |
|
|||
На этом уроке мы найдём фигуру, по которой кликнул пользователь. Отчёт отправил: 18783. Andrew Выполнено за 37 мин. [Показать отчёт] Научился: Cоздан коллайдер для всех фигур. Написаны вспомогательные функции: bool IsMouseButtonPressed(); void PickUp (); Vector2 GetClickPosition (); Transform GetItemAt (Vector2 position). В консоли названия фигур выводятся. Сложности: Все начинает постепенно усложняться. |
|||||
6 | Доска. Смещение |
|
|||
На этом уроке мы допишем перенос фигуры и учтём смещение при клике. Теперь вы сможете разыграть любую партию - сделайте скриншот интересной позиции! Отчёт отправил: 18783. Andrew Выполнено за 1 час. 13 мин. [Показать отчёт] Научился: Метод PickUp() был закончен. Методы Drag() и Drop() закончены. Учтено смещение offset. Сложности: Успевать за мыслью преподавателя. |
|||||
7 | Доска. Запуск на Windows |
|
|||
На этом уроке мы создадим независимый билд (рабочая версия) нашей игры для платформы Windows. Отчёт отправил: 18783. Andrew Выполнено за 6 час. 43 мин. [Показать отчёт] Научился: Выбрал Windows, настроил player setting, создал место для хранения билдов, запустил билд, скопировал на флешку и попробовал на другом компьютере. Сложности: Не сразу задвигались фигурки. Пришлось при настройках выбрать добавку сцены и там выбрать Board |
|||||
8 | Доска. ПЕРВЫЙ ФИНАЛЬНЫЙ УРОК |
|
|||
Мы закончили первую часть курса, создали шахматную доску, запустили её на Windows. Напишите отзыв о первой части курса: что получилось, что было сложным, что ещё вы добавите в программу. Отчёт отправил: 18783. Andrew Выполнено за 13 мин. [Показать отчёт] Научился: Курс великолепен. Впрочем, это мой первый крупный курс на проекте. Пока все отлично. Сложности: Билд для Windows не получался. Пришлось снести все и выполнить курс повторно) Думал, что причина в обновлении Unity. Оказалось в том, что надо добавить Board при выборе сцен в Build. И кстати, в последней версии Unity имя экзешника не задать, только папку |
|||||
9 | Доска. VIP. Запуск на Android |
|
|||
На этом уроке мы запустим нашу доску на операционной системе Android. Приготовьте свой планшет/телефон и приступайте к эскпорту и запуску! * Выполнять этот урок не обязательно. Отчёт отправил: 18783. Andrew Выполнено за 23 час. 18 мин. [Показать отчёт] Научился: Урок выполнить удалось Сложности: Unity заставил установить Java SDK и Android SDK |
|||||
10 | Доска. VIP. Запуск в Интернете |
|
|||
На этом уроке мы отправим наш проект в Интернет. Для этого мы воспользуемся технологией WebGL. Генерация страницы занимает продолжительное время. Засеки момент начала и напиши в отчете сколько времени это заняло. * Выполнять этот урок необязательно. Отчёт отправил: 18783. Andrew Выполнено за 11 час. 52 мин. [Показать отчёт] Научился: Переключил проект на WebGL после Android. Настроил, скомпилировал и протестил. Генерация, после часа не была завершена, за ночь доработала. Сложности: Первая компиляция привела к зависанию Unity |
|||||
11 |
![]() |
1 тест |
|||
На этом уроке мы познакомимся с архитектурой проекта, посмотрим на предстоящее путешествие с высоты птичьего полёта. Задание: написать, что для вас в этом плане самое простое, а что - самое сложное. Отчёт отправил: 18783. Andrew Выполнено за 40 мин. [Показать отчёт] Научился: Ознакомился со стратегией MVP. Все три прочих шахматных курса прохожу параллельно. Оттуда и получил знания про FEN. Самое простое в курсе для меня, конечно, все, что относится непосредственно к шахматам - правила игры, проверка ходов, и т.п. Самое интересное - программирование шахматных алгоритмов. Самое сложное - ASP.NET и EF |
|||||
12 | Классы. Шахматная библиотека |
2 теста |
|||
На данном уроке мы начинаем создание шахматных классов на языке C#, которые позволят проверять правила игры. Для этого мы напишем библиотеку, которая сможет для любой шахматной позиции определить возможность любого хода. Отчёт отправил: 18783. Andrew Выполнено за 5 дней 3 час. 28 мин. [Показать отчёт] Научился: Создал новый проект Class Library на C# Переименовал класс Class1 в Chess Реализовал конструктор Chess(stirng fen) Реализовал функцию Move(string move) Реализовал функцию GetFigureAt(int x, int y) Создал новый проект ChessDemo для тестирования Установил ChessDemo как запускаемый проект по умолчанию Добавил референс и юзинг на ChessRules в ChessDemo Добавил в конструктор Chess() аргумент по-умолчанию Реализовал основной цикл для тестирования Еще потребуются классы проверки валидности хода для каждой фигуры. Сложности: Вывести доску в консоль, используя метод GetFigureAt() Поэтому дописал функцию вывода доски в консоль из fen. |
|||||
13 | Классы. Цветная фигура |
|
|||
Мы продолжаем создание шахматных классов на языке C#, которые позволят проверять правила игры. На этом уроке мы рассмотри схему библиотеки dll, которая поможет нам сориентироваться в дальнейших действиях. Отчёт отправил: 18783. Andrew Выполнено за 4 дня 3 час. 27 мин. [Показать отчёт] Научился: Создал перечисления Figure и Color Создал статичный класс ColorMethods() Реализовал функцию FlipColor() Сложности: Пока все просто |
|||||
14 | Классы. Квадратная площадь |
|
|||
Мы продолжаем создание шахматных классов на языке C#, которые позволят проверять правила игры. На этом уроке мы создадим структуру классов с минимально необходимым кодом. Отчёт отправил: 18783. Andrew Выполнено за 1 день 54 мин. [Показать отчёт] Научился: Создал структуру Square() Реализовал конструктор Square() Реализовал вспомогательную функцию OnBoard() Реализовал конструктор Square(string name) Реализовал геттер Name() Протестировал работу нововведений Протестировал выход координат за пределы доски Сложности: Протестировать выход координат за пределы доски |
|||||
15 | Классы. Фигурой марш! |
|
|||
Мы продолжаем создание шахматных классов на языке C#, которые позволят проверять правила игры. На этом уроке мы создадим классы для хранения и перемещения фигур по клеткам. Отчёт отправил: 18783. Andrew Выполнено за 1 час. 48 мин. [Показать отчёт] Научился: Создал класс FigureOnSquare() Создал конструктор FigureOnSquare() Создал класс FigureMoving() Создал конструктор FigureMoving() Создал конструктор FigureMoving(string move) Сложности: Ничего |
|||||
16 | Классы. Квадратная матрица |
|
|||
Мы продолжаем создание шахматных классов на языке C#, которые позволят проверять правила игры. На этом уроке мы создадим класс Board(), который будет заниматься доской и работать с FEN. Отчёт отправил: 18783. Andrew Выполнено за 19 час. 9 мин. [Показать отчёт] Научился: Создал класс Board() Создал конструктор Board(string fen) Создал геттер GetFigureAt(Square square) Создал сеттер SetFigureAt(Square square, Figure figure) В классе Board() реализовал функцию Init() В классе Board() реализовал функцию Move(FigureMoving fm) Сложности: Ничего. |
|||||
17 | Классы. Стой, кто идёт! |
|
|||
Мы продолжаем создание шахматных классов на языке C#, которые позволят проверять правила игры. На этом уроке мы создадим класс Moves(), который будет заниматься проверкой возможности хода. Отчёт отправил: 18783. Andrew Выполнено за 1 день 2 час. 15 мин. [Показать отчёт] Научился: Создал класс Moves() Создал функцию CanMove(FigureMoving fm) Создал вспомогательные функции CanMoveFrom/To() Создал расширяющий класс FigureMethods Создал расширяющий метод GetColor() Сложности: Действительно, сейчас CanMove всегда будет возвращать ложь. В CanMoveTo() необходимо проверять цвет фигуры, стоящей на fm.to, а не идущей туда И возвращать ложь, если там стоит фигура цвета board.moveColor И истину, если цвет стоящей там фигуры равен none или противоположный ходу. |
|||||
18 | Классы. Шахматная бюрократия |
|
|||
Мы продолжаем создание шахматных классов на языке C#, которые позволят проверять правила игры. На этом уроке мы допишем класс Chess(). Отчёт отправил: 18783. Andrew Выполнено за 35 мин. [Показать отчёт] Научился: Модифицировал конструктор Chess(string fen) Модифицировал метод Move(stirng move) Создал вспомогательный конструктор Chess(Board board) Модифицировал метод GetFigureAt(int x, int y) Сложности: Всё понятно |
|||||
19 | Классы. Консольная доска |
1 тест |
|||
Мы приступаем к написанию тестов для нашей библиотеки. На этом уроке мы создадим функционал для отображения доски и исправим старую ошибку копипаста. Отчёт отправил: 18783. Andrew Выполнено за 1 час. 2 мин. [Показать отчёт] Научился: Реализовал вспомогательную функцию ChessToAscii(Chess chess) Воспользовался функцией ChessToAscii() для отображения доски Исправил ошибку Доработал функцию ChessToAscii(Chess chess) Реализовал вспомогательную функцию Print(string text) Воспользовался функцией Print() для отображения цветной доски Сложности: Самая сложная фигурка - это пешка Затем по убыванию сложности: ферзь, ладья. слон, король, конь. |
|||||
20 | Классы. ВТОРОЙ ФИНАЛЬНЫЙ УРОК |
|
|||
Мы создали все основные классы нашего проекта. Твоя задача - нарисовать UML схему созданных классов. Нарисовать схему значительно проще, когда проект уже готов. Поэтому задание не сложное, но очень, очень полезное и нужное. Используй иерархическую структуру Solution Explorer в VisualStudio. Нарисовать можно от руки, либо в сервисе draw.io. Можно использовать любой другой *не автоматический* инструмент рисования. Важно сделать это самостоятельно, а не сгенерить программой! Поэтому рисуй сам. * Не забывайте потом дорисовывать схему в процессе добавления новых методов в классах. Отчёт отправил: 18783. Andrew Выполнено за 1 день 23 час. 12 мин. [Показать отчёт] Научился: Разбирался в правилах создания UML схем. Рисовал структуру проекта Сложности: Очень сложное задание для меня, потратил сутки. Visual Studio 2017 более толком не строит диаграммы. Пришлось поставить Enterprise Architect и в нем пробовать, вышло кривовато. Самостоятельно руками даже и не пытался. |
|||||
21 | Алгоритмы. Волшебные шахматы |
1 тест |
|||
Мы приступаем к написанию шахматных алгоритмов. На этом уроке мы добавил в класс Board() необходимые свойства и реализуем парсинг передаваемого FEN. Отчёт отправил: 18783. Andrew Выполнено за 3 дня 17 час. 14 мин. [Показать отчёт] Научился: Исправил UML-схему Посмотрел отрывок про волшебные шахматы из фильма о Гарри Поттере Добавил свойства возможности рокировки в класс Board() Добавил свойство взятия на проходе в класс Board() Добавил свойство правила 50-ти ходов в класс Board() Добавил свойство текущего хода в класс Board() Доработал функцию Init() в классе Board() Реализовал вспомогательные функции для парсинга FEN Сложности: Всё понятно |
|||||
22 | Алгоритмы. Сборка фена |
1 тест |
|||
Мы продолжаем написание шахматных алгоритмов. На этом уроке мы реализуем формирование текущей позиции в формате FEN. Отчёт отправил: 18783. Andrew Выполнено за 4 час. 23 мин. [Показать отчёт] Научился: Реализовал вспомогательную функцию GenerateFEN() Реализовал вспомогательные функции для формирования FEN Доработал функцию Move(FigureMoving fm) в классе Board() Сложности: Пока не очень сложно |
|||||
23 | Алгоритмы. Генератор ходов |
1 тест |
|||
Мы продолжаем написание шахматных алгоритмов. На этом уроке мы начинаем реализацию проверок можно ли пойти с одной клетки на другую. Отчёт отправил: 18783. Andrew Выполнено за 1 час. 36 мин. [Показать отчёт] Научился: Реализовал функцию Chess().YieldValidMoves() Добавил вывод результата функции в Program().Main() Реализовал статичную функцию Square().YieldBoardSquares() Реализовал статичную функцию Board().YieldMyFigureOnSquares() Переопределил функцию FigureMoving().ToString() Протестировал работу текущего функционала Сложности: Пока нет особо сложного |
|||||
24 | Алгоритмы. Куда идёт Король |
1 тест |
|||
Мы продолжаем написание шахматных алгоритмов. На этом уроке мы реализуем проверку может ли King пойти с одной клетки на другую. Отчёт отправил: 18783. Andrew Выполнено за 1 день 23 час. 48 мин. [Показать отчёт] Научился: В классе Moves() доработал функцию CanMoves() Реализовал функцию Moves().CanFigureMove() Добавил атрибуты deltaX/Y и absDeltaX/Y в классе FigureMoving() Протестировал работу текущего функционала Добавил проверку для фигуры Knight Сложности: Всё ОК |
|||||
25 | Алгоритмы. Ночью с Конём |
1 тест |
|||
Мы продолжаем написание шахматных алгоритмов. На этом уроке мы реализуем проверку может ли Knight пойти с одной клетки на другую. Отчёт отправил: 18783. Andrew Выполнено за 21 час. 57 мин. [Показать отчёт] Научился: Добавил на доску белого и чёрного коней Реализовал функцию Moves().CanKnightMove() Доработал функцию CanFigureMove() Протестировал работу текущего функционала Сложности: Всё нормально |
|||||
26 | Алгоритмы. Дальнобойщики |
1 тест |
|||
Мы продолжаем написание шахматных алгоритмов. На этом уроке мы переходим к дальнобойным фигурам. Отчёт отправил: 18783. Andrew Выполнено за 9 час. 53 мин. [Показать отчёт] Научился: Вернул на доску начальную позицию. Реализовал функцию Moves().CanStraightMove() Добавил атрибуты signX/Y в классе FigureMoving() Реализовал операторы сравнения в Square() Реализовал проверку движения Ферзя, Ладьи и Слона Протестировал работу текущего функционала Сложности: Всё получилось |
|||||
27 | Алгоритмы. Храбрая пешка |
|
|||
Мы продолжаем написание шахматных алгоритмов. На этом уроке мы приступаем к реализации алгоритмов самой сложной фигуры: Pawn. Отчёт отправил: 18783. Andrew Выполнено за 1 день 14 мин. [Показать отчёт] Научился: Добавил на доску белые и чёрные пешки Реализовал функцию Moves().CanPawnMove() Реализовал функции Moves().CanPawnGo/Jump/Eat() Протестировал работу текущего функционала Сложности: В функции CanPawnJump() не планировалось добавлять проверку на знак переменной stepY, но во время лекции возникла заминка (10:23) и проверку добавили, а причина заминки в том, что перепутали координату 6 шахматной доски и координату 6 программы. В программе с 6 на 8 прыжок не прошел бы, так как 8-й горизонтали не существует, потому проверка - лишняя. |
|||||
28 | Алгоритмы. Четвёртое превращение |
1 тест |
|||
Мы продолжаем написание шахматных алгоритмов. На этом уроке мы реализуем превращение Pawn в одну из четырёх фигур: Queen, Knight, Bishop и Rook. Отчёт отправил: 18783. Andrew Выполнено за 32 мин. [Показать отчёт] Научился: Доработал функцию Chess().YieldValidMoves() Реализовал статичную функцию FigureMethods().YieldPromotions() Доработал функцию FigureMoving().ToString() Доработал функцию Board().Move() Протестировал работу текущего функционала Сложности: Всё понятно |
|||||
29 | Алгоритмы. Рефакторинг на доске |
1 тест |
|||
Мы продолжаем написание шахматных алгоритмов. На этом уроке мы займёмся рефакторингом. Отчёт отправил: 18783. Andrew Выполнено за 1 день 21 час. 35 мин. [Показать отчёт] Научился: Создал класс NextBoard() Модифицировал функцию Board().Move() Перенес функцию Board().SetFigureAt() в класс NextBoard().SetFigureAt() Перенес функцию Board().GenerateFEN() в класс NextBoard().GenerateFEN() Перенес функцию Board().GetFigures() в класс NextBoard().GetFigures() Перенес функцию Board().GetMoveColor() в класс NextBoard().GetMoveColor() Перенес функцию Board().GetCastleFlags() в класс NextBoard().GetCastleFlags() Перенес функцию Board().GetEnPassant() в класс NextBoard().GetEnPassant() Перенес функцию Board().GetDrawNumber() в класс NextBoard().GetDrawNumber() Перенес функцию Board().GetMoveNumber() в класс NextBoard().GetMoveNumber() Отрефакторил конструктор NextBoard() Протестировал работу текущего функционала Сложности: Всё понятно |
|||||
30 | Алгоритмы. Допрыгалась! |
|
|||
Мы продолжаем написание шахматных алгоритмов. На этом уроке мы займёмся взятием пешкой на проходе. Отчёт отправил: 18783. Andrew Выполнено за 11 час. 8 мин. [Показать отчёт] Научился: Дописал конструктор NextBoard() Реализовал функцию NextBoard().SetEnpassant() Дописал функцию Moves().CanPawnMove() Реализовал функцию Moves().CanPawnEnPassant() Реализовал функцию NextBoard().DropEnpassant() Реализовал метод FigureMoving().PlacedFigure Протестировал работу текущего функционала Сложности: Всё ОК |
|||||
31 | Алгоритмы. Королевский паркур |
|
|||
Мы продолжаем написание шахматных алгоритмов. На этом уроке мы реализуем рокировку. Отчёт отправил: 18783. Andrew Выполнено за 12 час. 50 мин. [Показать отчёт] Научился: Дописал конструктор NextBoard() Реализовал функцию NextBoard().UpdateCastleFlags() Дописал функцию Moves().CanFigureMove() Реализовал функцию Moves().CanKingCastle() Реализовал функцию NextBoard().MoveCastlingRook() Протестировал работу текущего функционала Сложности: Всё ОК. Теперь понял, что за бомба была на том уроке :-O |
|||||
32 | Алгоритмы. Защита короля |
|
|||
Мы продолжаем написание шахматных алгоритмов. На этом уроке мы будем защищать короля от ШАХа. Отчёт отправил: 18783. Andrew Выполнено за 16 час. 12 мин. [Показать отчёт] Научился: Дописал функцию Chess().YieldValidMoves() Реализовал функцию Board().IsCheckAfterMove() Реализовал вспомогательную функцию Board().CanEatKing() Реализовал вспомогательную функцию Board().FindBadKing() Доработал функцию Moves().CanKingCastle() Реализовал конструктор FigureMoving() для пустого хода Реализовал функцию Board().IsCheck() Протестировал работу текущего функционала Сложности: Всё норм |
|||||
33 | Алгоритмы. Шах и Мат! |
|
|||
Мы заканчиваем написание шахматных алгоритмов. На этом уроке мы реализуем возврат ситуации на доске. Отчёт отправил: 18783. Andrew Выполнено за 14 час. 10 мин. [Показать отчёт] Научился: Дописал класс Chess() Реализовал вспомогательную функцию Chess().SetCheckFlags() Протестировал работу текущего функционала Сложности: Доп. условия постараюсь дописать обязательно, пока нет. Убрал надпись IS CHECK при мате, чтоб не дублировалась |
|||||
34 | Алгоритмы. ТРЕТИЙ ФИНАЛЬНЫЙ УРОК |
|
|||
На этом уроке мы исправим одну ошибку и добавим ещё один вариант метода GetFigureAt(string xy). Ваше задание - записать подробный отзыв об алгоритмической части проекта. Отчёт отправил: 18783. Andrew Выполнено за 19 дней 11 час. 31 мин. [Показать отчёт] Научился: Реализовал дополнительные условия ничьи Часть 1 https://youtu.be/A_n83xtzQCA Часть 2 https://youtu.be/QbGeWbR2bDg Сложности: Решиться затеять для себя все это задание Видеообзор: A_n83xtzQCA |
|||||
35 | Алгоритмы. VIP. Шахматное супертестирование |
|
|||
На этом уроке мы проверим корректность ваших алгоритмов. Для этого мы прогоним супер-тест по генерации всех вариантов. * Выполнять этот урок необязательно. Ссылка: Сайт с результатами тестирования Отчёт отправил: 18783. Andrew Выполнено за 2 дня 5 час. 39 мин. [Показать отчёт] Научился: Реализовал вспомогательную функцию Program().NextMoves() Протестировал несколько позиций Сложности: Тестировать различные позиции более глубже. Жаль, что закрылся сайт chessprogramming. |
|||||
36 | Алгоритмы. VIP. Можно пройти? |
|
|||
На этом уроке мы немного порефакторим и добавим очень полезную функцию. Отчёт отправил: 18783. Andrew Выполнено за 3 час. 28 мин. [Показать отчёт] Научился: Реализовал функцию Chess().IsValidMove() Модифицировал функцию Chess().Move() Протестировал компиляцию и запуск Сложности: Всё понятно |
|||||
37 | Алгоритмы. VIP. Как пройти в библиотеку |
|
|||
На этом уроке мы подготовим библиотеку ChessRules. Для этого мы скомпилируем её в необходимой версии .NET и проверим работоспособность в Unity проекте. Отчёт отправил: 18783. Andrew Выполнено за 1 день 11 час. 51 мин. [Показать отчёт] Научился: Сменил версию .NET у проекта ChessRules на 4.7.1 Создал новый проект на Unity Добавил только белые фигуры, переименовал их Скопировал библиотеку ChessRules.dll в папку Assets Создал новый скрипт ChessTest и открыл его в Visual Studio Добавил строчку using ChessRules; Реализовал функцию Start() Добавил скрипт ChessTest в MainCamera Протестировал работу скрипта Сложности: Обновил Unity до версии 2018.2.11f1 Она позволяет .Net до 4.7.1 (на 4.7.2 уже выводит предупреждение) Соответственно сделал ребилд библиотеки на 4.7.1 Пока работает. |
|||||
38 | Интерфейс. План действий |
|
|||
На этом уроке мы обсудим дальнейший план действий.
Отчёт отправил: 18783. Andrew Выполнено за 22 час. 37 мин. [Показать отчёт] Научился: Открыл проект созданный ранее в Unity Удалил игровую доску и все фигуры Добавил текстуры клеток доски обычные и помеченные Разместил за пределами видимой области необходимые объекты Переименовал объекты по стандарту FEN Удалил все лишние объекты сцены Сложности: Прозрачного пикселя не было в комплекте. Создал Zero.png размером 68 байт. |
|||||
39 | Интерфейс. Генерация объектов |
|
|||
На этом уроке мы сгенерируем шахматную доску с базовыми объектами на ней. Отчёт отправил: 18783. Andrew Выполнено за 2 час. 33 мин. [Показать отчёт] Научился: Добавил для всех фигур Box Collider 2D Добавил скрипт Board к объекту Main Camera Установил Order in Layer равное -1 для шахматных клеток Реализовал конструктор Board() Реализовал вспомогательную функцию InitGameObjects() Протестировал работу скрипта Сложности: Пока всё норм |
|||||
40 | Интерфейс. Начальная позиция |
|
|||
На этом уроке мы добавим ранее созданную библиотеку ChessRules.dll в проект на Unity. Отчёт отправил: 18783. Andrew Выполнено за 10 час. 13 мин. [Показать отчёт] Научился: Скопировал библиотеку ChessRules.dll в папку Assets Дописал в Board.cs необходимый юзинг Реализовал функцию ShowFigures() Протестировал работу скрипта Сложности: Всё ОК |
|||||
41 | Интерфейс. Ход делегата |
|
|||
На этом уроке мы активируем проверку ходов, которую реализовали в ChessRules.dll. Отчёт отправил: 18783. Andrew Выполнено за 8 час. 32 мин. [Показать отчёт] Научился: Доработал вспомогательные функции DragAndDrop().PickUp/Drop() Создал вспомогательную функцию Board().DropObject() Реализовал вызов функции через делегат Протестировал работу скрипта Сложности: Всё в порядке |
|||||
42 | Интерфейс. Проверка хода |
|
|||
Мы продолжаем реализацию необходимого функционала для активации проверки ходов на основе ChessRules.dll. Отчёт отправил: 18783. Andrew Выполнено за 11 час. 49 мин. [Показать отчёт] Научился: Реализовал вспомогательную функцию Board().VectorToSquare() Реализовал вспомогательную функцию Board().DropObject() Протестировал работу скрипта Сложности: Предложить простой вариант реализации превращения пешки |
|||||
43 | Интерфейс. VIP. Клетки отправления |
|
|||
Это бонусный урок, выполнять его не обязательно. На данном уроке мы реализуем подсветку тех клеток, с которых можно ходить. Отчёт отправил: 18783. Andrew Выполнено за 12 час. 25 мин. [Показать отчёт] Научился: Реализовал вспомогательную функцию Board().ShowSquare() Реализовал вспомогательную функцию Board().MarkSquaresFrom() Доработал функции DropObject() и Start() Реализовал вспомогательную функцию Board().UnmarkSquares() Протестировал работу скрипта Сложности: Всё ОК |
|||||
44 | Интерфейс. VIP. Клетки прибытия |
1 тест |
|||
Это бонусный урок, выполнять его не обязательно. На данном уроке мы реализуем подсветку тех клеток, на которые можно ходить. Отчёт отправил: 18783. Andrew Выполнено за 1 день 2 час. 18 мин. [Показать отчёт] Научился: Реализовал вспомогательную функцию Board().PickObject() Реализовал вызов функции через делегат Реализовал вспомогательную функцию Board().MarkSquaresTo() Доработал вспомогательную функцию DragAndDropю().PickUp() Протестировал работу скрипта Сложности: Всё норм |
|||||
45 | Интерфейс. Щепотка рефакторинга |
1 тест |
|||
На этом уроке мы начинаем подготовку к превращению пешки в одну из четырёх фигур. Для начала проведём небольшой рефакторинг. Отчёт отправил: 18783. Andrew Выполнено за 27 мин. [Показать отчёт] Научился: Реализовал вспомогательную функцию Board().CreateGameObject() Реализовал вспомогательную функцию Board().SetSprite() Доработал вспомогательную функцию Board().ShowSquare() Протестировал работу скрипта Сложности: Всё в порядке |
|||||
46 | Интерфейс. Выставка фигур |
|
|||
На этом уроке мы продолжаем подготовку к превращению пешки в одну из четырёх фигур. Теперь нам надо подготовить фигуры, в которые будем превращать. Отчёт отправил: 18783. Andrew Выполнено за 1 день 8 час. 29 мин. [Показать отчёт] Научился: Доработал вспомогательную функцию Board().InitGameObjects() Реализовал вспомогательную функцию Board().ShowPromotionFigures() Протестировал работу скрипта Сложности: Всё ОК. |
|||||
47 | Интерфейс. Долгожданное превращение |
|
|||
На этом уроке мы наконец превратим нашу пешку в одну из четырёх фигур. Отчёт отправил: 18783. Andrew Выполнено за 15 час. 35 мин. [Показать отчёт] Научился: Доработал вспомогательную функцию Board().DropObject() Доработал вспомогательную функцию Board().PickObject() Протестировал работу скрипта Сложности: Придумывать свой способ проверки валидности хода пешкой. Придумывать вариант рестарта игры. |
|||||
48 | Интерфейс. ЧЕТВЁРТЫЙ ФИНАЛЬНЫЙ УРОК |
|
|||
Напишите отзыв о четвёртой части курса: что получилось, что было сложным, что ещё вы добавите в программу. Отчёт отправил: 18783. Andrew Выполнено за 1 час. 16 мин. [Показать отчёт] Научился: Сложная для меня часть курса, продолжаю знакомство с Unity. Интересная идея выставки фигур, но эта модель приведет к расходу места вверху и внизу доски. Посмотрим, как оно будет выглядеть на телефоне. Может, стоило отдать под выставку вертикаль справа? Очень много элегантных решений, которые кажутся очевидными, но представляю, какое время потребовалось на их задумку и реализацию. Сложности: Движемся далее. |
|||||
49 | База данных. Management в студию! |
|
|||
На этом уроке мы приступаем к созданию БД для нашего сервера шахматы онлайн. Отчёт отправил: 18783. Andrew Выполнено за 14 час. 2 мин. [Показать отчёт] Научился: Установил MS SQL Server Management Studio Сложности: Всё ОК |
|||||
50 | База данных. Планирование |
|
|||
Мы продолжаем создание БД для нашего сервера шахматы онлайн. На данном уроке мы спроектируем схему нашей БД. Отчёт отправил: 18783. Andrew Выполнено за 11 час. 14 мин. [Показать отчёт] Научился: Создал структуру БД Сложности: Всё ОК |
|||||
51 | База данных. Упрощение |
|
|||
Мы продолжаем создание БД для нашего сервера шахматы онлайн. На данном уроке мы упростим схему нашей БД. Отчёт отправил: 18783. Andrew Выполнено за 20 мин. [Показать отчёт] Научился: Обкорнали БД. Вот это поворот. Но так надо. Посмотрим, чтой-то будет. Сложности: Всё в порядке. |
|||||
52 | База данных. Созидание |
|
|||
Мы продолжаем создание БД для нашего сервера шахматы онлайн. На данном уроке мы наконец создадим нашу базу данных для онлайн шахмат. Отчёт отправил: 18783. Andrew Выполнено за 4 час. 45 мин. [Показать отчёт] Научился: Создал базу данных Создал таблицу с необходимыми столбцами Сложности: Создал БД на SQLExpress - вот терзают сомнения, заработает ли. |
|||||
53 | База данных. VIP. Таблицы на вырост |
|
|||
Мы продолжаем создание БД для нашего сервера шахматы онлайн. На данном уроке мы создадим дополнительные таблицы, которые понадобятся для реализации полноценной онлайн игры. Отчёт отправил: 18783. Andrew Выполнено за 57 мин. [Показать отчёт] Научился: Создал дополнительные таблицы, добавил необходимые ключи и индексы Сложности: В табличке sides вместо сдачи (resign) употреблена перепевка - resing. |
|||||
54 | База данных. VIP. Красивая диаграма |
|
|||
На данном уроке мы нарисуем диаграмму нашей БД.
Отчёт отправил: 18783. Andrew Выполнено за 1 час. 53 мин. [Показать отчёт] Научился: Создал диаграмму созданной базы данных, внес несколько записей Сложности: Всё ОК |
|||||
55 | База данных. ПЯТЫЙ ФИНАЛЬНЫЙ УРОК |
|
|||
Напишите отзыв о пятой части курса: что получилось, что было сложным, что ещё вы добавите в программу. Отчёт отправил: 18783. Andrew Выполнено за 1 час. 10 мин. [Показать отчёт] Научился: Пятый раунд пролетел очень быстро. Пока всё крутится. Урезание базы - отличная идея, лишь бы заработало, остальное потом. В дальнейшем к базе надо прикрутить рейтинг шахматистов, это просто . А вот что делать с контролем времени не знаю, где ему место и как реализовывать. Сложности: Всё нормально. |
|||||
56 | Сервер. Последняя версия |
|
|||
На данном уроке мы приступаем к созданию серверной части нашего онлайн проекта по шахматам. Отчёт отправил: 18783. Andrew Выполнено за 33 мин. [Показать отчёт] Научился: Создал новый проект ChessAPI Выбрал Empty + Web API Создал контроллер, отображающий версию Настроил проект, чтобы при запуске открывалась api/Versions Создал класс Version() Вернул версию через конструктор класса Version Сложности: Всё ОК. |
|||||
57 | Сервер. Райский Эдем - EDM |
|
|||
На этом уроке мы создадим EDM - Entity Data Model.
Отчёт отправил: 18783. Andrew Выполнено за 14 час. 42 мин. [Показать отчёт] Научился: Добавил ADO.NET EDM, подключился к созданной ранее БД Создал контроллер ChessController, модифицировал ChessController под наши нужды. Настроил проект, чтобы при запуске открывалась api/Chess Сложности: Всё ОК. |
|||||
58 | Сервер. Новая игра на JSON |
|
|||
На этом уроке мы изменим формат вывода с XML на JSON.
Отчёт отправил: 18783. Andrew Выполнено за 8 час. 24 мин. [Показать отчёт] Научился: Модифицировал файл Global.asax, модифицировал ChessController. Реализовал вспомогательную функцию NewGame(), протестировал создание новой игры Сложности: Всё ОК. |
|||||
59 | Сервер. Официант без логики |
|
|||
На этом уроке мы будем упрощать наш ChessController.
Отчёт отправил: 18783. Andrew Выполнено за 2 час. 2 мин. [Показать отчёт] Научился: Создал класс Logic(), реализовал конструктор класса Logic(), создал функцию Logic().GetCurrentGame(). Модифицировал ChessController, подключил и использовал ChessRules.dll. Протестировал создание новой игры. Сложности: Всё в порядке |
|||||
60 | Сервер. Ваш ход! |
|
|||
Мы продолжаем создание серверной части для нашего проекта Шахматы по сети. На этом уроке мы реализуем выполнение ходов. Отчёт отправил: 18783. Andrew Выполнено за 2 дня 23 час. 31 мин. [Показать отчёт] Научился: Реализовал функцию ChessController().GetMoves() Реализовал функцию Logic().MakeMove() Модифицировал WebApiConfig().Register() Поиграл через адресную строку Сложности: Возвращать идемпотентность |
|||||
61 | Сервер. Шахматная Идемпотентность |
|
|||
Мы продолжаем создание серверной части для нашего проекта Шахматы по сети. На этом уроке мы обсудим Шахматную Идемпотентность. Напишите своими словами, что такое Идемпотентность. Отчёт отправил: 18783. Andrew Выполнено за 10 час. 38 мин. [Показать отчёт] Научился: Реализовал функцию ChessController().GetGameById(), модифицировал WebApiConfig().Register() Реализовал функцию Logic().GetGame(), модифицировал Logic().MakeMove() Протестировал корректность отработки адресной строки Сложности: Закон идемпотентности (пример): пришла осень, пришла осень можно заменить на пришла осень . |
|||||
62 | Сервер. Китайская ничья |
|
|||
Мы продолжаем создание серверной части для нашего проекта Шахматы по сети. На этом уроке мы реализуем завершение игры при сдаче. Отчёт отправил: 18783. Andrew Выполнено за 1 час. 34 мин. [Показать отчёт] Научился: Модифицировал ChessController().GetMoves() Реализовал функцию Logic().ResignGame() Протестировал корректность через адресную строку Сложности: Всё в порядке. |
|||||
63 | Сервер. ШЕСТОЙ ФИНАЛЬНЫЙ УРОК |
|
|||
Напишите отзыв о шестой части курса: что получилось, что было сложным, что ещё вы добавите в программу. Отчёт отправил: 18783. Andrew Выполнено за 12 мин. [Показать отчёт] Научился: Отлично продвигается курс. Создали сервер и он функционирует. Не весь материал закрепился в сознании, потребуется и не раз переосмыслить. Для меня это действительно магия, что все так гениально и просто работает. Сложности: ОК. |
|||||
64 | Хостинг. Регистрация аккаунта |
|
|||
Приступаем к размещению нашего сервера в интернете. Для этого нам потребуется Windows-хостинг с поддержкой ASP.NET Чтобы мы были на одной волне и смогли проработать всё вместе, пожалуйста зарегистрируйтесь на этом хостинг-сервисе: Ссылка для регистрации на хостинге: https://www.reg.ru/?rlink=reflink-30461 Отчёт отправил: 18783. Andrew Выполнено за 10 час. 45 мин. [Показать отчёт] Научился: Открыл страницу хостинга по реферальной ссылке, зарегистрировался и подтвердил адрес электронной почты. Сложности: Всё норм. |
|||||
65 | Хостинг. Лучше заплатить |
|
|||
На этом уроке мы выберем план, доменное имя, укажем контактную информацию. Отчёт отправил: 18783. Andrew Выполнено за 39 мин. [Показать отчёт] Научился: Выбрал подходящий план, выбрал доменное имя, выбрал срок подписки. Заполнил контактную информацию. Использовал DNS-серверы хостинга REG.RU. Заплатил за хостинг. Сложности: Всё ОК. |
|||||
66 | Хостинг. Доступ по FTP |
|
|||
На этом уроке мы установим пароль для подключения к хостингу по FTP. Напишите, какой FTP-клиент вы используете и приложите скриншот вашей FTP программы с подключением к хостингу. Отчёт отправил: 18783. Andrew Выполнено за 2 дня 14 час. 5 мин. [Показать отчёт] Научился: Установил пароль для подключения к FTP. Установил FTP клиент Total Commander. Подключился к FTP хостингу. Сложности: Всё ОК |
|||||
67 | Хостинг. Публикация проекта |
|
|||
На этом уроке мы настроим публикацию проекта из Visual Studio. Выполните все шаги и опубликуйте проект. Приложите скриншот Visual Studio с логами публикации и содержимое FTP каталога после публикации. Отчёт отправил: 18783. Andrew Выполнено за 22 час. 9 мин. [Показать отчёт] Научился: Настроил публикацию проекта из Visual Studio и опубликовал. Сложности: И снова не заработало на версии net 4.7.2 - была ошибка сервера. Откатил ChessAPI на 4.7.1 - все в порядке. |
|||||
68 | Хостинг. Перенос базы данных |
|
|||
На этом уроке мы перенесём базу данных на сервер и подключимся к ней из скрипта. Отчёт отправил: 18783. Andrew Выполнено за 1 день 1 час. 1 мин. [Показать отчёт] Научился: Создал резервную копию БД Добавил MSSQL БД на хостинге Придумал название БД, имя и пароль пользователя Импортировал резервную копию в БД на хостинге Прописал строку подключения к БД на хостинге Протестировал api/Chess через адресную строку Сложности: Сложный урок. Пришлось установить сервер 2016. Не парился с квери для даунгрейда базы, создал базу заново. |
|||||
69 | Хостинг. VIP. Двойные стандарты |
|
|||
На этом уроке мы обсудим нюансы с публикацией очередной версии серверной части на хостинге. Отчёт отправил: 18783. Andrew Выполнено за 39 мин. [Показать отчёт] Научился: Опубликовал проект ещё раз и убедился, что api/Chess не работает Модифицировал Web.Release.config Опубликовал еще раз и протестировал api/Chess через адресную строку Сложности: Всё очень понятно, отличный урок. |
|||||
70 | Хостинг. СЕДЬМОЙ ФИНАЛЬНЫЙ УРОК |
|
|||
В этой части мы разместили сервер не хостинге. Шахматная серверная программа нашла пристанище в интернете. Наконец-таки можно будет переходить к игре по сети. Напишите в отчёте, всё ли получилось и по какому адресу можно найти ваш серверный API. Отчёт отправил: 18783. Andrew Выполнено за 27 мин. [Показать отчёт] Научился: Познакомился с отдельными нюансами хостинга. То, что reg.ru не тянет 14-ю версию сервера даже хорошо, пересоздал базу на 13-й, повторил некоторые действия, лучше запомнил. Спасибо за отличные уроки. Сложности: Всё решаемо. |
|||||
71 | Клиент. Достучаться до облака |
|
|||
На этом уроке мы приступаем к завершающему этапу по созданию клиент-серверной игры "Онлайн шахматы". Отчёт отправил: 18783. Andrew Выполнено за 21 час. 4 мин. [Показать отчёт] Научился: Создал класс ChessDemo.Client Реализовал конструктор Client() Реализовал функцию Client().GetFenFromServer() Протестировал получение json строчки Сложности: Написал самодельную парсилку json, которая удаляет все, что было до и после запятых, прихватив кавычку. А вдруг оно будет быстрее работать в конкретном случае, чем Newtonsoft? string fenFrom = client.GetFenFromServer(); fenFrom = fenFrom.Substring(fenFrom.IndexOf(',') + 1); fenFrom = fenFrom.Replace("\"FEN\":\"", ""); fenFrom = fenFrom.Remove(fenFrom.IndexOf(',')-1,fenFrom.Length - fenFrom.IndexOf(',')+1); Console.WriteLine(fenFrom); |
|||||
72 | Клиент. Дедовские методы |
|
|||
На этом уроке мы выделим FEN из полученной json строки.
Отчёт отправил: 18783. Andrew Выполнено за 57 мин. [Показать отчёт] Научился: Реализовал вспомогательную функцию Client().GetFenFromJSON() Протестировал получение json строчки Сложности: Всё ОК |
|||||
73 | Клиент. Ход в мешке |
|
|||
На этом уроке мы научимся отправлять на сервер наш ход.
Отчёт отправил: 18783. Andrew Выполнено за 1 час. 14 мин. [Показать отчёт] Научился: Добавил геттер/сеттер Client().GameID Реализовал функцию Client().GetIdFromJSON() Реализовал функцию Client().SendMove() Использовал функцию SendMove() в цикле деморежима Реализовал загрузку текущей позиции с сервера Протестировал, поиграв в двух консолях за каждую сторону Сложности: Всё отлично |
|||||
74 | Клиент. Серверные пешки |
|
|||
На этом уроке мы используем ранее созданный класс Client() в наш проект на Unity, чтобы можно было поиграть с GUI. Отчёт отправил: 18783. Andrew Выполнено за 20 час. 7 мин. [Показать отчёт] Научился: Импортировал класс Client() в проект на Unity Использовал класс Client() в Board() Протестировал загрузку партии с сервера Сложности: Всё в порядке |
|||||
75 | Клиент. Следы невиданных ходов |
|
|||
На этом уроке мы реализуем отправку хода через GUI.
Отчёт отправил: 18783. Andrew Выполнено за 23 мин. [Показать отчёт] Научился: Реализовал вспомогательную функцию Board().MakeMove() Протестировал обмен данными между сервером и клиентом Сложности: Всё получается |
|||||
76 | Клиент. Фоновое обновление |
|
|||
На этом уроке мы реализуем функцию обновления текущего состояния на доске. Отчёт отправил: 18783. Andrew Выполнено за 1 час. 21 мин. [Показать отчёт] Научился: Модифицировал функцию Board().Start(), реализовал вспомогательную функцию Board().Refresh() Установил галку Run in Background*. Сложности: Из консольной версии всплыл баг с превращением пешки в фигуру другого цвета)) В юнити это не пройдет, а с консоли в юнити передалось на ура. На скрине этот вариант. Вроде исправляли его, или я что-то путаю? В каком уроке это было? Много доработок впереди. Думал, что самое сложное будет добавлять контроль времени, но оказывается до него еще надо ограничить игроков, чтобы ходили только своим цветом. Ну это, в любое случае, после рефакторинга. |
|||||
77 |
![]() |
|
|||
Поздравляю вас с завершением нашего эпического курса по созданию клиент-серверной игры в шахматы по сети! Запишите живое видео, где будет видно, что в игру можно поиграть с двух разных устройств/компьютеров. Расскажите на видео о своём подвиге. Чем курс понравился, что было сложно, что было интересно, что можно будет добавить. Отчёт отправил: 18783. Andrew Выполнено за 3 дня 1 час. 44 мин. [Показать отчёт] Научился: Проверил еще раз прогрузку на андроид-устройства. Всё работает. Записал кратчайшее видео. Сложности: Не осилил сразу загрузку на айфон. Надеюсь получится. А вот насколько реально получить лицензию сони на прогрузку на playstation? Там надо заполнить длиннющую заявку. Есть ли смысл заморачиваться? Видеообзор: 0l3C-v5Rh5c |
|||||
78 | Рефакторинг. С чего начать? |
|
|||
На этом уроке мы начинаем рефакторинг кода клиентской части на Unity. Отчёт отправил: 18783. Andrew Выполнено за 22 час. 10 мин. [Показать отчёт] Научился: Вынес класс DragAndDrop() в отдельный файл, добавил необходимый using в файл Board.cs. Протестировал работу после проведённого рефакторинга. Сложности: Откатывать не стал, получается, что рефакторится не тот код, который в уроках. Как ходьба по минному полю) |
|||||
79 | Рефакторинг. Координатные трансформации |
|
|||
На этом уроке мы продолжаем рефакторинг и сейчас мы выделим статические элементы. Отчёт отправил: 18783. Andrew Выполнено за 22 час. 18 мин. [Показать отчёт] Научился: Создал класс Coords(), перенес функцию VectorToSquare() в класс Coords(). Реализовал функции Coords().GetX/Y/Vector(), переименовал функцию VectorToSquare() в GetSquare(). Протестировал работу после проведённого рефакторинга. Сложности: Всё хорошо. |
|||||
80 | Рефакторинг. Чёрный ящик |
|
|||
Мы продолжаем рефакторинг нашего кода. На данном уроке мы займёмся словарями. Отчёт отправил: 18783. Andrew Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Создал абстрактный класс Box(), реализовал конструктор Box(), модифицироваль работу с фигурами через Box(). Протестировал работу после проведённого рефакторинга. Сложности: Всё работает |
|||||
81 | Рефакторинг. Интерфейсная прослойка |
|
|||
Мы продолжаем рефакторинг нашего кода. На данном уроке мы создадим интерфейс ICreatable. Отчёт отправил: 18783. Andrew Выполнено за 1 день 22 час. 36 мин. [Показать отчёт] Научился: Просмотрел видео два раза. Создал интрфейс ICreatable, реализовал его в классе Box(). Модифицировал класс Board(). Сложности: Пока всё норм. |
|||||
82 | Рефакторинг. Ящик с фигурами |
1 тест |
|||
Мы продолжаем рефакторинг нашего кода. На данном уроке мы сделаем класс Box() абстрактным. Отчёт отправил: 18783. Andrew Выполнено за 48 мин. [Показать отчёт] Научился: Создал класс BoxFigures() : Box Реализовал конструктор BoxFigures() Реализовал функцию BoxFigures().Init() Сделал класс Box() абстрактным Модифицировал класс Board(), используя новый функционал Протестировал работу после проведённого рефакторинга Сложности: Всё ОК. |
|||||
83 | Рефакторинг. Многоклеточная сущность |
|
|||
Мы продолжаем рефакторинг нашего кода. На данном уроке мы создадим класс BoxSquares(). Отчёт отправил: 18783. Andrew Выполнено за 31 мин. [Показать отчёт] Научился: Создал класс BoxSquares() : Box, реализовал конструктор BoxSquares() Реализовал функцию BoxSquares().Init(), реализовал функцию BoxSquares().GetColor() Модифицировал класс Board(), протестировал работу. Сложности: Не рискнул проделать то же самое с классом BoxPromots(). |
|||||
84 | Рефакторинг. Вынос переноса |
|
|||
Мы продолжаем рефакторинг нашего кода. На данном уроке мы создадим класс Box().SetPosition(). Отчёт отправил: 18783. Andrew Выполнено за 22 мин. [Показать отчёт] Научился: Реализовал функцию Box().SetPosition(), модифицировал класс Board(). Протестировал работу после проведённого рефакторинга. Сложности: Всё ОК. |
|||||
85 | Рефакторинг. Спрайт, не дай себя заинтерфейсить |
|
|||
Мы продолжаем рефакторинг нашего кода. На данном уроке мы создадим класс Box().SetSpriteAt(). Отчёт отправил: 18783. Andrew Выполнено за 1 день 21 час. 36 мин. [Показать отчёт] Научился: Реализовал методы Box().SetSpriteAt(), дописал интерфейс ICreatable(). Модифицировал класс Board(), протестировал работу после проведённого рефакторинга Сложности: Всё ОК |
|||||
86 | Рефакторинг. Клетка в клетке |
|
|||
Мы продолжаем рефакторинг нашего кода. На данном уроке мы перенесём и разделим класс ShowSquare(). Отчёт отправил: 18783. Andrew Выполнено за 2 час. 45 мин. [Показать отчёт] Научился: Перенёс функцию ShowSquare() из Board() в BoxSquares(). Реализовал функции Box().MarkSquare(). Модифицировал класс Board(). Протестировать работу после проведённого рефакторинга. Сложности: Всё красиво |
|||||
87 | Рефакторинг. Шахматная независимость |
|
|||
Мы продолжаем рефакторинг нашего кода. На данном уроке мы перенесём некоторые функции в класс BoxSquares(). Отчёт отправил: 18783. Andrew Выполнено за 1 час. 51 мин. [Показать отчёт] Научился: Перенёс функцию UnmarkSquares() из Board() в BoxSquares(). Перенёс функцию MarkSquaresFrom/To() из Board() в BoxSquares(). Модифицировать класс Board(). Протестировал работу после проведённого рефакторинга. Сложности: Всё ОК |
|||||
88 | Рефакторинг. Хоровод из четырёх фигур |
|
|||
Мы продолжаем рефакторинг нашего кода. На данном уроке мы порефакторим функционал превращения пешки. Отчёт отправил: 18783. Andrew Выполнено за 1 день 7 час. 13 мин. [Показать отчёт] Научился: Создал константы proFigures, minx, whitey и blacky Реализовал функцию GetWhite/BlackProFigure() Модифицировал функции InitGameObjects() и ShowPromotionFigures() Сложности: Всё ОК |
|||||
89 | Рефакторинг. Волшебник изумрудного ящика |
|
|||
Мы продолжаем рефакторинг нашего кода. На данном уроке мы создадим класс BoxPromots(). Отчёт отправил: 18783. Andrew Выполнено за 16 час. 26 мин. [Показать отчёт] Научился: Оптимизировал код пасхалки прошлого урока. Создал класс BoxPromots() : Box Реализованы: конструктор, Init(), константы, ShowPromotionFigures, HidePromotionFigures, SetSpriteFor, GetPromotionFigure. Board модифицирован, работа протестирована. Сложности: Да, самый сложный урок. Пока обходим мины в виде написанных после этого видео методах, но уже внедренных. |
|||||
90 | Рефакторинг. Потерянная пешка |
|
|||
На этом уроке мы вернёмся к нашей библиотеке для исправления старой ошибки: пешка может превратиться в чужую фигуру ил остаться пешкой. Отчёт отправил: 18783. Andrew Выполнено за 1 день 19 мин. [Показать отчёт] Научился: Добавил в начало метода IsValidMove() строчку. Реализовал функцию Moves().CanPawnPromote() Доработал функцию Moves().CanPawnMove() Реализовал функцию FigureMoving().CheckPromotion() Заменил библиотеку ChessRгles.dll везде где используется (на сервере и в юнити) Протестировал работу. Сложности: Отличный урок! И Ленский пешкою ладью Берет в рассеянье свою. |
|||||
91 | Рефакторинг. Класс шахматной игры |
|
|||
ЭТОТ УРОК НУЖНО ПЕРЕЗАПИСАТЬ. ДЛЯ ЭТОГО МНЕ НУЖЕН ПРОЕКТ ДО ЕГО ВЫПОЛНЕНИЯ. ПОЖАЛУЙСТА ПЕРЕД ВЫПОЛНЕНИЕМ ЭТОГО УРОКА СОЗДАЙТЕ АРХИВ ПРОЕКТА И ПРИШЛИТЕ ЕГО МНЕ. Мы на финишной прямой нашего рефакторинга. На данном уроке мы вынесем логику игры в отдельный класс Game(). Отчёт отправил: 18783. Andrew Выполнено за 22 час. 12 мин. [Показать отчёт] Научился: Создал архив проекта до выполнения. Создал класс game. Реализовал init, GetMoves, GetFigureAt, Move с учетом замечаний. Запустилось на Unity. Сложности: Пока работает, даже не верится) |
|||||
92 | Рефакторинг. Двухэтажное превращение |
|
|||
Мы всё ближе и ближе к финишу нашего рефакторинга. На данном уроке мы вынесем оставшуюся логику игры в класс Game(). Отчёт отправил: 18783. Andrew Выполнено за 23 час. 23 мин. [Показать отчёт] Научился: Реализовал Game.NextMove и Game.NextPromotionMove Сложности: Перенес в Game MakeMove() и инициализацию клиента. Разбил Refresh() на два метода: RefreshGame() и RefreshBoard() Перенес RefreshGame() в Game, сделав метод булевым. Чтобы если fen не изменился, был выход из всего Refresh(). Иначе при превращении через 2 секунды фигуры превращения исчезали, как и сама пешка на восьмой горизонтали. Пришлось смотреть урок два раза, но пока все работает. |
|||||
93 | Рефакторинг. Финальное причёсывание |
|
|||
Мы поздравляем тебя с завершением рефакторинга. На данном уроке мы причешем наши скрипты. Отчёт отправил: 18783. Andrew Выполнено за 26 мин. [Показать отчёт] Научился: Переместил вызов MarkSquaresFrom() и HidePromotionFigures() в ShowFigures() Оптимизировал инициализацию. Сложности: Соотвественно, и мой Refresh скуксился до одной строчки void Refresh() { if (game.Refreshgame()) ShowFigures(); } Неплохо. |
|||||
94 | Рефакторинг. Последний аккорд |
|
|||
На этом уроке мы заканчиваем наш эпический курс. Получилось здорово. Я доволен результатом. Надеюсь, вы тоже. Мы проделали огромную работу. Каждый стал чуточку умнее и опытнее. Отчёт отправил: 18783. Andrew Выполнено за 1 час. 46 мин. [Показать отчёт] Научился: Важный урок, хотя делать почти ничего не пришлось, многое удалось предугадать самостоятельно во время рефакторинга. Что касается всего курса, ради него и пришел на этот сайт и не пожалел) Купив курс, два месяца не приступал к нему, но потом за три месяца прошел и выработал привычку. Идем дальше, работы, точнее учебы - непочатый край. Сложности: Радует, что паззл с рассинхроном рефакторинга и клиента сложился. Удалось самому (ну правда с учетом комментариев тех, кто прошел курс ранее) сделать вынос клиента в Game, реализовать концепцию Refresh. |
|||||
95 | VIP. Меню DimanDOSа |
|
|||
1. Создание и размещение кнопки вызова меню и панели с кнопками. 2. Программирование действий по нажатиям кнопок - создание функций и привязка их к событиям нажатия. Отчёт отправил: 18783. Andrew Выполнено за 1 день 23 час. 13 мин. [Показать отчёт] Научился: Спасибо за отличный урок по Unity Сложности: Всё работает |
|||||
Итого: 95 видеоуроков |
17 час. 04 мин. 18 тестов |
19 чел. | |||
Финалисты: Дмитрий, Yefim, Tekashnik, Иван Воронин, ser2018, Алексей, Дмитрий Б, alklokov, FireWolf, Andrew, Max, Новопашин Владимир, Красимир Зорбов, Антон, Евгений, Anatoli, Freud, Алена, MaxB . |