# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
3 теста |
|||
Дорога длиной в тысячу миль начинается с первого шага. На этом уроке мы поговорим о предстоящем путешествии и сделаем наш первый шаг - создадим консольное приложение. Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 14 мин. [Показать отчёт] Научился: Создал пустое решение. Создал в нем консольный проект. Избавился от static. Вывел на экран (консоль) приветствие. Сложности: Пока очень легко. |
|||||
2 | Марионетка |
|
|||
На этом слайде мы сделаем управление символом с клавиатуры.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 17 мин. [Показать отчёт] Научился: Вывести символ в указанные координаты; Считывать с клавиатуры нажатую клавишу; Изменить координаты в зависимости от клавиши + клавиша ESC - выход; Организовать бесконечный цикл; Сделать затирание символа при перемещение. Сложности: Все знакомо. |
|||||
3 | Представление выделяется |
2 теста |
|||
Show must go on! На этом слайде мы вынесем команды для работы с экранам в отдельный класс View. Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 11 мин. [Показать отчёт] Научился: Перенес в новый класс View созданный метод приветствия и показа. Внес изменения в метод Start() и проверил работу. Сложности: ничего |
|||||
4 | Модель игры |
|
|||
На этом слайде мы выделим логику, модель в отдельный класс Game.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 40 мин. [Показать отчёт] Научился: Вынес методы в класс Game(); Изменил метод Move(int sx, int sy), для перемещения объекта; Изменил код в операторе switch() на использование метода Move(); Проверил работу. Сложности: ничего |
|||||
5 | Контроллер не спешит |
1 тест |
|||
На этом слайде мы сформулируем задачи контроллера и выделим его в отдельный класс.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 23 мин. [Показать отчёт] Научился: Создал класс Controller; Создал метод Run() на основе содержимого метода Start(); Вызвал контроллер из метода Main() и проверил работу игры. |
|||||
6 | Цветной телевизор |
1 тест |
|||
На этом слайде мы создадим ещё одно представление и задействуем его в программе.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 16 мин. [Показать отчёт] Научился: Создал новый класс ViewColor() на основе класса View(); Переименовал класс View() в класс ViewBasic() |
|||||
7 | Видный интерфейс |
2 теста |
|||
На этом слайде мы создадим интерфейс IView и задействуем его в классе Game. Класс Game теперь не зависит от конкретной реализации его представления. Попробуйте сделать то же самое через абстрактный класс. Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 2 час. 53 мин. [Показать отчёт] Научился: Создал интерфейс IView с заголовками двух методов Унаследовал ViewBasic и ViewColor от IView |
|||||
8 | Игра в библиотеке |
|
|||
На этом слайде мы выделим логику игру в отдельную библиотеку.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 20 мин. [Показать отчёт] Научился: Создал проект библиотеку LibraryGame; Перенес туда класс Game и интерфейс IView; Откомпилировал библиотеку и найти DLL файл; Добавил директиву using LibraryGame в нужных классах |
|||||
9 | 2. Рефакторинг. Перечисление субъектов |
|
|||
Приступаем к рефакторингу. На этом слайде мы составим список "главных героев", которые могут быть отображены на экране. Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 час. 6 мин. [Показать отчёт] Научился: Создал enum Subject; Приписал символы к каждому значению |
|||||
10 | Показ героя на экране |
|
|||
На этом слайде мы задействуем перечисление субъектов в интерфейсе представления и во всех его реализациях.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 13 мин. [Показать отчёт] Научился: Изменил описание метода в интерфейсе IView; Внес изменения в класс ViewBasic(); Проверил работу (с классом ViewBasic и ViewColor) |
|||||
11 | Координатная структура |
|
|||
На этом слайде мы создадим структуру Coord для хранения координат объекта на карте.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 54 мин. [Показать отчёт] Научился: Создал публичную структуру Coord Изменил сигнатуру метода Show в интерфейсе IView. |
|||||
12 | Карта сокровищ |
|
|||
На этом слайде мы создадим класс Level, в котором будет храниться карта уровня. Благодаря этому классы мы сможем узнать, что в какой клетке поля находится. Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 14 мин. [Показать отчёт] Научился: Создал новый класс Level. Описал поля size и двумерный массив map; Создал конструктор Добавил методы GetSubject() и SetSubject() |
|||||
13 | Шаги по карте |
1 тест |
|||
На этом слайде мы задействуем класс Level в классе логики Game
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 23 час. 37 мин. [Показать отчёт] Научился: Описал поле Level в классе Game; Добивал в метод Game.Move() информирование о действиях в класс Level; В методе Controller.Run() определил size и level, передать их в Game; В методе Game.Start() сохранил полученный level; |
|||||
14 | Генерация лабиринта |
1 тест |
|||
На этом слайде мы сгенерируем лабиринт и отобразим его на экране.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 14 мин. [Показать отчёт] Научился: Создал метод Level.Init() и вызвать его из конструктораCjplfk Сгенерировал стенки по краям уровня В методе Game.Start() разместил отображение всего уровня Проверил работу программы |
|||||
15 | Координатный перебор |
1 тест |
|||
На этом слайде мы создадим в структуре Coord метод для перебора всех координат, ограниченных указанным размером
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 13 мин. [Показать отчёт] Научился: Создал метод YieldCoords() в структуре Coord Сделал в нем перебор всех координат до указанной позиции Использовал этот метод для генерации стен в методе Game.Start() Проверил корректную работу программы |
|||||
16 | Подходящий размер! |
|
|||
На этом слайде мы добавим проверки размеров нашего уровня. Для этого мы добавим в структуру Coord ещё один метод Coord.InSize(). Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 11 мин. [Показать отчёт] Научился: Добавил метод Coord.InSize(Coord size) Добавил проверку на правильность координат в методах GetSubject() / SetSubject() и в методе Game.Move() Проверил правильную работу программы |
|||||
17 | Правила игры |
1 тест |
|||
На этом слайде мы добавим проверку правил игры, чтобы главный герой не мог забираться на стенки.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 25 мин. [Показать отчёт] Научился: Добавил проверки и спрятал курсор с консоли. Убрал отображение символов при вызове ReadKey() |
|||||
18 | Дорога из жёлтого кирпича |
1 тест |
|||
На этом слайде мы разукрасим уровень - установим разные цвета для разных субъектов
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 12 мин. [Показать отчёт] Научился: Установил цвет для блока и user1 Проверил работу программы |
|||||
19 | Ищи ветра в поле |
1 тест |
|||
На этом слайде мы напишем метод, который найдёт месторасположение субъекта на карте. Воспользуемся этим методом для инициализации первоначальных координат игрока. Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 12 мин. [Показать отчёт] Научился: Создал метод Level.FindFirst() для поиска Subject Задал в структуре Coord статическое поле для несуществующей координаты Вызвал метод для определения начальных координат user1 |
|||||
20 | Координатный рефакторинг |
1 тест |
|||
На этом слайде мы добавим в структуру Coord операторы == и !=, а также добавим метод проверки нахождения координат на краю поля. Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 21 мин. [Показать отчёт] Научился: Добавил операторы "==" и "!=" в структуру Coord; Проверил при не нахождение игрока на карте; Добавил OnSide() в структуру Coord; Добавил метод Equals() и GetHashCode() и завернуть их в регион Equality; Всегда за тесты - это экономит время... |
|||||
21 | Собери монетки |
1 тест |
|||
На этом слайде мы добавим в игру монетки, научимся их собирать и при этом добавлять новые. Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 32 мин. [Показать отчёт] Научился: Добавил 1 монетку и выбрал цвет для ее отображения; Добавил обработку монетки в методе Game.Move(); Создал метод Coord.GetRandom() и метод Level.FindRandom() поиска случайного субъекта на поле; Прорефакторил и выделил 2 метода MoveUser() и EatMoney(). |
|||||
22 | 3. Тестирование. Тестовый прогон |
|
|||
Мы приступаем к очередному этапу созданию программы - написание unit-тестов. На этом слайде мы создадим класс тестирования для структуры Coord. Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 18 мин. [Показать отчёт] Научился: Создал проект для Unit test; Создал метод CreateGoordTest(); Сделал тестирование создания координаты |
|||||
23 | Тест обратной стороны Луны |
|
|||
На этом слайде мы напишем тесты для методов InSize() и OnSide().
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 23 мин. [Показать отчёт] Научился: Создал два метода (теста) InSizeTest() и OnSideTest() Исправил ошибку в методе Coord.OnSide() |
|||||
24 | Случайное тестирование |
|
|||
На этом слайде мы напишем тест для методов Coord.YieldCoords() и Coord.GetRandom()
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 17 мин. [Показать отчёт] Научился: Создал метод YieldCoordsTest() Написал цикл для проверки Написал метод GetRandomTest() Проверил тесты |
|||||
25 | Лабиринты тестирования |
1 тест |
|||
На этом слайде мы создадим тест для класса Level
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 16 мин. [Показать отчёт] Научился: Создал новый класс для тестирования через генератор тестов. Написал проверки в методе LevelTest() |
|||||
26 | Поиск монеток на поле Дураков |
|
|||
На этом слайде мы закончим создание тестов для класса Level
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 19 мин. [Показать отчёт] Научился: Создал методы тестирования FindFirstTest() и FindRandomTest() Проверил работу теста Добавил метод тестирования SetSubjectTest() |
|||||
27 | Внутренний мир Субъекта |
|
|||
На этом слайде мы изменим модификатор доступа для метода Level.SetSubject()
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 16 мин. [Показать отчёт] Научился: Изменил модификатор доступа Level.SetSubject() на internal Удалил тест для SetSubject() |
|||||
28 | Прогулка за ручку |
|
|||
На этом слайде мы протестируем самый главнный класс Game в нашей библиотеке. | |||||
Итого: 28 видеоуроков |
3 час. 23 мин. 18 тестов |
22 чел. | |||
Финалисты: Trira, Александр, Слава, Дмитрий Че, Иван Воронин, Andrew, Дмитрий, DimanDOS, Chip, Tekashnik, Александр, vip, Алексей В., Максим Лапшинов, Александр Балбашов, Никита, Yefim, Max, Николай Денисов, Дмитрий, MaxB, Alina . |