# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
3 теста |
|||
Дорога длиной в тысячу миль начинается с первого шага. На этом уроке мы поговорим о предстоящем путешествии и сделаем наш первый шаг - создадим консольное приложение. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: РидКи одинаково успешно отрабатывает как в дочернем методе, так и в родительском. |
|||||
2 | Марионетка |
|
|||
На этом слайде мы сделаем управление символом с клавиатуры.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 6 мин. [Показать отчёт] Научился: Перечисление ConsoleKey знает все клавиши на клавиатуре, сопоставляет возвращаемое клавой с прописанными в коде вариантами и исполняет то, что написано после двоеточия. Бряк прерывает дальнейшее исполнение инструкций выбранного по нажатой клавише кейса. |
|||||
3 | Представление выделяется |
2 теста |
|||
Show must go on! На этом слайде мы вынесем команды для работы с экранам в отдельный класс View. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 23 мин. [Показать отчёт] Научился: это как туман с рассветом рассеивается. View view = new View (); Класса View экземпляр назовём view = сделай новый экземпляр класса View (без приходящих в него параметров); Сложности: Может кейсы можно неким образом сократить? |
|||||
4 | Модель игры |
|
|||
На этом слайде мы выделим логику, модель в отдельный класс Game.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 6 мин. [Показать отчёт] Научился: Мухи отдельно, котлеты отдельно. Все параметры по умолчанию передаются в методы по значению, то есть, проще говоря, копируются. При передаче по значению метод получает не саму переменную, а ее копию. При передаче параметра по ссылке метод получает адрес переменной в памяти. |
|||||
5 | Контроллер не спешит |
1 тест |
|||
На этом слайде мы сформулируем задачи контроллера и выделим его в отдельный класс.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 48 мин. [Показать отчёт] Научился: В случае отсутствия возможности интерактивной связи между Моделью и Представлением используется MVC с промежуточным Controllerом. Если же ПО крутится на локальной рабочей станции MVC зациклена. |
|||||
6 | Цветной телевизор |
1 тест |
|||
На этом слайде мы создадим ещё одно представление и задействуем его в программе.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 25 мин. [Показать отчёт] Научился: Выделение функционала == разделение труда. Гибче конструкция на выходе, легче изменения и адаптации. Переименование класса не привело к ошибкам, но и не сменило названия в прочих классах, как это в видео видно. Программа между тем компилировалась и гудела как надо. Заморочки версии, что ли. Так, микронепонятки реализации интерфейса IDE. Названия представлений давать по алфавиту - облегчить себе переключения, так думаю. |
|||||
7 | Видный интерфейс |
2 теста |
|||
На этом слайде мы создадим интерфейс IView и задействуем его в классе Game. Класс Game теперь не зависит от конкретной реализации его представления. Попробуйте сделать то же самое через абстрактный класс. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 27 мин. [Показать отчёт] Научился: Представление == каталог, оглавление, нити марионеток, но не сами элементы, книги или марионетки. Удобный способ обращения к инкапсулированным методам со схожими предназначениями. Сложности: Создать доп. представление. Не пришло в голову что можно использовать. |
|||||
8 | Игра в библиотеке |
|
|||
На этом слайде мы выделим логику игру в отдельную библиотеку.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 47 мин. [Показать отчёт] Научился: Устроил себе минибурю в стакане при создании библиотеки. Увидал у Игромистра версию фреймворка 4.7, дай думаю, также подниму из имеющейся версии проекта 4.6.1 до 4.7.1 (такая была в выпадающем меню в наличии). Всё создалось отлично, только при запуске игры ошибка выскочила. Почитал, благо в английском не как свинья в апельсинах )), понял что сам себе умножил проблемы. Диагноз стал понятен. Теперь, думаю, классы удалены, эта библиотека в верхней версии, как же мне добиться 4.6.1, чтоб работало? Думал придётся пересоздавать классы, снова чинить из них LibraryGame уже в версии 4.6.1, снова в ресурсы, и так далее со всеми остановками вплоть до Голутвина))) Оказалось всё гораздо проще. Контекстное меню Properties у библиотеки, в окне фреймворка выпадающее меню - ткни в нужную версию, контрол+Эс, унд в бой! VisualStudio - сила! |
|||||
9 | 2. Рефакторинг. Перечисление субъектов |
|
|||
Приступаем к рефакторингу. На этом слайде мы составим список "главных героев", которые могут быть отображены на экране. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 24 мин. [Показать отчёт] Научился: В пространство имен LibraryGame добавили класс Subject для добавления в программу перечисления enum. nulls - ничего не передано space - пустое пространство block - стенка, куда ходить никак нельзя user1 - юзверь money - золотое руно. Цель - ограничить варианты передачи в метод указанной маской. |
|||||
10 | Показ героя на экране |
|
|||
На этом слайде мы задействуем перечисление субъектов в интерфейсе представления и во всех его реализациях. | |||||
11 | Координатная структура |
|
|||
На этом слайде мы создадим структуру Coord для хранения координат объекта на карте. | |||||
12 | Карта сокровищ |
|
|||
На этом слайде мы создадим класс Level, в котором будет храниться карта уровня. Благодаря этому классы мы сможем узнать, что в какой клетке поля находится. |
|||||
13 | Шаги по карте |
1 тест |
|||
На этом слайде мы задействуем класс Level в классе логики Game | |||||
14 | Генерация лабиринта |
1 тест |
|||
На этом слайде мы сгенерируем лабиринт и отобразим его на экране. | |||||
15 | Координатный перебор |
1 тест |
|||
На этом слайде мы создадим в структуре Coord метод для перебора всех координат, ограниченных указанным размером | |||||
16 | Подходящий размер! |
|
|||
На этом слайде мы добавим проверки размеров нашего уровня. Для этого мы добавим в структуру Coord ещё один метод Coord.InSize(). |
|||||
17 | Правила игры |
1 тест |
|||
На этом слайде мы добавим проверку правил игры, чтобы главный герой не мог забираться на стенки. | |||||
18 | Дорога из жёлтого кирпича |
1 тест |
|||
На этом слайде мы разукрасим уровень - установим разные цвета для разных субъектов | |||||
19 | Ищи ветра в поле |
1 тест |
|||
На этом слайде мы напишем метод, который найдёт месторасположение субъекта на карте. Воспользуемся этим методом для инициализации первоначальных координат игрока. |
|||||
20 | Координатный рефакторинг |
1 тест |
|||
На этом слайде мы добавим в структуру Coord операторы == и !=, а также добавим метод проверки нахождения координат на краю поля. |
|||||
21 | Собери монетки |
1 тест |
|||
На этом слайде мы добавим в игру монетки, научимся их собирать и при этом добавлять новые. |
|||||
22 | 3. Тестирование. Тестовый прогон |
|
|||
Мы приступаем к очередному этапу созданию программы - написание unit-тестов. На этом слайде мы создадим класс тестирования для структуры Coord. |
|||||
23 | Тест обратной стороны Луны |
|
|||
На этом слайде мы напишем тесты для методов InSize() и OnSide(). | |||||
24 | Случайное тестирование |
|
|||
На этом слайде мы напишем тест для методов Coord.YieldCoords() и Coord.GetRandom() | |||||
25 | Лабиринты тестирования |
1 тест |
|||
На этом слайде мы создадим тест для класса Level | |||||
26 | Поиск монеток на поле Дураков |
|
|||
На этом слайде мы закончим создание тестов для класса Level | |||||
27 | Внутренний мир Субъекта |
|
|||
На этом слайде мы изменим модификатор доступа для метода Level.SetSubject() | |||||
28 | Прогулка за ручку |
|
|||
На этом слайде мы протестируем самый главнный класс Game в нашей библиотеке. | |||||
Итого: 28 видеоуроков |
3 час. 23 мин. 18 тестов |
22 чел. | |||
Финалисты: Trira, Александр, Слава, Дмитрий Че, Иван Воронин, Andrew, Дмитрий, DimanDOS, Chip, Tekashnik, Александр, vip, Алексей В., Максим Лапшинов, Александр Балбашов, Никита, Yefim, Max, Николай Денисов, Дмитрий, MaxB, Alina . |