# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
3 теста |
|||
Дорога длиной в тысячу миль начинается с первого шага. На этом уроке мы поговорим о предстоящем путешествии и сделаем наш первый шаг - создадим консольное приложение. Отчёт отправил: 1295. Дмитрий Че Выполнено за 18 час. 15 мин. [Показать отчёт] Научился: Устанавливать англоязычный интерфейс для VStudio и создавать пустое решение из windowsForms) Сложности: У меня при выборе проекта нет такого варианта как BlankSolution)) Уж чего я только ни сделал, чтобы его найти - и английский интерфейс докачал и еще какое-то средство разработки VS, но увы. В итоге создал проект windowsForms и удалил его содержимое. Получилось так же и все работает - "кто бы мог подумать")) |
|||||
2 | Марионетка |
|
|||
На этом слайде мы сделаем управление символом с клавиатуры.
Отчёт отправил: 1295. Дмитрий Че Выполнено за 24 мин. [Показать отчёт] Научился: Считывать нажатие конкретных клавиш с помощью класса ConsoleKey.имя_клавиши. И выводить символы в консоли в указанную позицию с помощью метода Console.SetCursorPosition(x, y). Сложности: В этот раз ничего сложного не встретил) |
|||||
3 | Представление выделяется |
2 теста |
|||
Show must go on! На этом слайде мы вынесем команды для работы с экранам в отдельный класс View. Отчёт отправил: 1295. Дмитрий Че Выполнено за 18 мин. [Показать отчёт] Научился: Подучился рефакторить - выносить повторяющиеся действия в функции, а функции в классы для приведения проекта к модели MVC. При этом повторил модификаторы доступа: public, private, static, protected Как еще можно рефакторить не могу придумать - вроде уже ничего не осталось повторяющегося. Возможно нужно как раз двигаться в сторону MVC - что-то вынести из кода в отдельный класс. Но что? Нинаю) Сложности: придумать что бы порефакторить) |
|||||
4 | Модель игры |
|
|||
На этом слайде мы выделим логику, модель в отдельный класс Game.
Отчёт отправил: 1295. Дмитрий Че Выполнено за 1 час. 6 мин. [Показать отчёт] Научился: Выводить представление (вид) и логику игру (модель Game) в отдельные классы! Сложности: Нет, ничего сложного не повстречалось мне. Разве что VS вылетела в процессе 1 раз) |
|||||
5 | Контроллер не спешит |
1 тест |
|||
На этом слайде мы сформулируем задачи контроллера и выделим его в отдельный класс.
Отчёт отправил: 1295. Дмитрий Че Выполнено за 42 мин. [Показать отчёт] Научился: Выделать контроллер в отдельный класс! да и собственно приводить проект к модели MVC. Сложности: Сложного не было, а на картинке модели стрелочку нужно было бы по идее не от пользователя к View, а от View к пользователю - направление информационного потока. |
|||||
6 | Цветной телевизор |
1 тест |
|||
На этом слайде мы создадим ещё одно представление и задействуем его в программе.
Отчёт отправил: 1295. Дмитрий Че Выполнено за 20 мин. [Показать отчёт] Научился: Создавать и подключать новое кленовое цветное представление (view). Сложности: Не знаю как их можно переключать со старым :((( |
|||||
7 | Видный интерфейс |
2 теста |
|||
На этом слайде мы создадим интерфейс IView и задействуем его в классе Game. Класс Game теперь не зависит от конкретной реализации его представления. Попробуйте сделать то же самое через абстрактный класс. Отчёт отправил: 1295. Дмитрий Че Выполнено за 28 мин. [Показать отчёт] Научился: Отвязывать класс Game от конкретной реализации вида с помощью интерфейса - теперь класс Game сможет использовать любое представление через интерфейс. Сложности: пока не знаю как сделать через абстрактный |
|||||
8 | Игра в библиотеке |
|
|||
На этом слайде мы выделим логику игру в отдельную библиотеку.
Отчёт отправил: 1295. Дмитрий Че Выполнено за 14 мин. [Показать отчёт] Научился: Выделять модель в отдельную библиотеку. Сложности: Сложно понять, почему курс называется onlineGame. Онлайна все нет, а урок, вроде как последний. |
|||||
9 | 2. Рефакторинг. Перечисление субъектов |
|
|||
Приступаем к рефакторингу. На этом слайде мы составим список "главных героев", которые могут быть отображены на экране. Отчёт отправил: 1295. Дмитрий Че Выполнено за 17 мин. [Показать отчёт] Научился: Создавать перечисление отображаемых в игре объектов, которое будет передаваться в отображение View. Меняя содержимое enum будем менять отображение в игре. Сложности: Пока ничего сложного) |
|||||
10 | Показ героя на экране |
|
|||
На этом слайде мы задействуем перечисление субъектов в интерфейсе представления и во всех его реализациях.
Отчёт отправил: 1295. Дмитрий Че Выполнено за 17 мин. [Показать отчёт] Научился: Сделал небольшой рефакторинг - теперь к виду подключаем объект из созданного перечисления. Сложности: nothing) |
|||||
11 | Координатная структура |
|
|||
На этом слайде мы создадим структуру Coord для хранения координат объекта на карте.
Отчёт отправил: 1295. Дмитрий Че Выполнено за 29 мин. [Показать отчёт] Научился: Сделал рефакторинг: оформил координаты в структуру. Все работает. Сложности: все нормально |
|||||
12 | Карта сокровищ |
|
|||
На этом слайде мы создадим класс Level, в котором будет храниться карта уровня. Благодаря этому классы мы сможем узнать, что в какой клетке поля находится. Отчёт отправил: 1295. Дмитрий Че Выполнено за 16 мин. [Показать отчёт] Научился: Создал класс Level.cs, описывающий объекты уровня, их параметры (что и где находтися, какого размера игровое поле и т.д.). Потом все это будет храниться в базе, а пока в массиве map Сложности: Набирать, не глядя) |
|||||
13 | Шаги по карте |
1 тест |
|||
На этом слайде мы задействуем класс Level в классе логики Game
Отчёт отправил: 1295. Дмитрий Че Выполнено за 19 мин. [Показать отчёт] Научился: Создал объект level, который сам передается в метод запуска игры, а в него передаются размеры игрового поля - матрёшкой. Сложности: стала вылетать игра в процессе перемещения - из-за малых значений переданных размеров игрового поля. |
|||||
14 | Генерация лабиринта |
1 тест |
|||
На этом слайде мы сгенерируем лабиринт и отобразим его на экране.
Отчёт отправил: 1295. Дмитрий Че Выполнено за 7 час. 44 мин. [Показать отчёт] Научился: Создал метод для вывода в цикле объектов игры на экран. Сложности: пока все нормально) |
|||||
15 | Координатный перебор |
1 тест |
|||
На этом слайде мы создадим в структуре Coord метод для перебора всех координат, ограниченных указанным размером
Отчёт отправил: 1295. Дмитрий Че Выполнено за 25 мин. [Показать отчёт] Научился: Заменил двойной цикл для генерации стен лабиринта методом Yeld в структуре Coord и циклом foreach. Сложности: Надо смотреть мини-курс "инетаратор") |
|||||
16 | Подходящий размер! |
|
|||
На этом слайде мы добавим проверки размеров нашего уровня. Для этого мы добавим в структуру Coord ещё один метод Coord.InSize(). Отчёт отправил: 1295. Дмитрий Че Выполнено за 23 мин. [Показать отчёт] Научился: Создал метод для предотвращения выхода за пределы игрового поля. Сложности: Все понятно. |
|||||
17 | Правила игры |
1 тест |
|||
На этом слайде мы добавим проверку правил игры, чтобы главный герой не мог забираться на стенки.
Отчёт отправил: 1295. Дмитрий Че Выполнено за 28 мин. [Показать отчёт] Научился: Реализовал проверки на положение курсора (в поле, вне поля, на границе=стенке, в игровом поле). Убрал баг со стиранием стенки при приближении курсора. Сложности: Пока все понятно. |
|||||
18 | Дорога из жёлтого кирпича |
1 тест |
|||
На этом слайде мы разукрасим уровень - установим разные цвета для разных субъектов
Отчёт отправил: 1295. Дмитрий Че Выполнено за 7 мин. [Показать отчёт] Научился: Раскрасил элементы игры в разные цвета) Сложности: ничего сложного) |
|||||
19 | Ищи ветра в поле |
1 тест |
|||
На этом слайде мы напишем метод, который найдёт месторасположение субъекта на карте. Воспользуемся этим методом для инициализации первоначальных координат игрока. Отчёт отправил: 1295. Дмитрий Че Выполнено за 15 мин. [Показать отчёт] Научился: Создал метод для поиска координат первого игрока на карте и его отображения в этих координатах в начале игры. Сложности: Все норм. |
|||||
20 | Координатный рефакторинг |
1 тест |
|||
На этом слайде мы добавим в структуру Coord операторы == и !=, а также добавим метод проверки нахождения координат на краю поля. Отчёт отправил: 1295. Дмитрий Че Выполнено за 58 мин. [Показать отчёт] Научился: Добавлены методы сравнения двух координат и проверки нахождения на краю лабиринта. Сложности: Непонятно что там с хэшами) |
|||||
21 | Собери монетки |
1 тест |
|||
На этом слайде мы добавим в игру монетки, научимся их собирать и при этом добавлять новые. Отчёт отправил: 1295. Дмитрий Че Выполнено за 45 мин. [Показать отчёт] Научился: Создал методы генерации случайных координат для монетки, извлек методы перемещения пользователя и поедания монетки. Сложности: даже не знаю что и сказать) |
|||||
22 | 3. Тестирование. Тестовый прогон |
|
|||
Мы приступаем к очередному этапу созданию программы - написание unit-тестов. На этом слайде мы создадим класс тестирования для структуры Coord. Отчёт отправил: 1295. Дмитрий Че Выполнено за 16 мин. [Показать отчёт] Научился: Научился создавать тест для метода! Сложности: Новая тема, важная, необходимая, но нужно практиковаться! |
|||||
23 | Тест обратной стороны Луны |
|
|||
На этом слайде мы напишем тесты для методов InSize() и OnSide().
Отчёт отправил: 1295. Дмитрий Че Выполнено за 39 мин. [Показать отчёт] Научился: Создал тесты для методов InSize и OnSide. Отловил одну ошибку в методе и одну в самом тесте. Пришла мысль, что вызов тестов Ctrl+R,L означает Run Test. Сложности: Новая тема, но все нормально. |
|||||
24 | Случайное тестирование |
|
|||
На этом слайде мы напишем тест для методов Coord.YieldCoords() и Coord.GetRandom()
Отчёт отправил: 1295. Дмитрий Че Выполнено за 24 мин. [Показать отчёт] Научился: Создал еще два теста для проверки координат. Сложности: все довольно просто |
|||||
25 | Лабиринты тестирования |
1 тест |
|||
На этом слайде мы создадим тест для класса Level
Отчёт отправил: 1295. Дмитрий Че Выполнено за 1 час. 12 мин. [Показать отчёт] Научился: Создал еще один тест для метода Level. Тестируется положение объектов уровня: стен, пользователя, монетки, пустых клеток, внешнего пространства. Сложности: понять, почему 5х3 это ширина на высоту, а не как обычно в массиве СТРОКИхСТОЛБЦЫ )) |
|||||
26 | Поиск монеток на поле Дураков |
|
|||
На этом слайде мы закончим создание тестов для класса Level
Отчёт отправил: 1295. Дмитрий Че Выполнено за 1 день 6 час. 7 мин. [Показать отчёт] Научился: Создал еще три теста для методовFindFirst FindRandom и SetSubject. Сложности: Все нормально) падаем! |
|||||
27 | Внутренний мир Субъекта |
|
|||
На этом слайде мы изменим модификатор доступа для метода Level.SetSubject()
Отчёт отправил: 1295. Дмитрий Че Выполнено за 7 мин. [Показать отчёт] Научился: Защитил уязвимый публичный метод SetSymbol, поставив ему модификатор доступа internal Сложности: все отлично! |
|||||
28 | Прогулка за ручку |
|
|||
На этом слайде мы протестируем самый главнный класс Game в нашей библиотеке.
Отчёт отправил: 1295. Дмитрий Че Выполнено за 1 час. 27 мин. [Показать отчёт] Научился: Создал проверки для теста метода Start в Game. Сложности: Все очень интересно и здорово! |
|||||
Итого: 28 видеоуроков |
3 час. 23 мин. 18 тестов |
22 чел. | |||
Финалисты: Trira, Александр, Слава, Дмитрий Че, Иван Воронин, Andrew, Дмитрий, DimanDOS, Chip, Tekashnik, Александр, vip, Алексей В., Максим Лапшинов, Александр Балбашов, Никита, Yefim, Max, Николай Денисов, Дмитрий, MaxB, Alina . |