# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 | Инкапсуляция мечты |
2 теста |
|||
Курс по теории Объектно-ориентированного программирования. С нуля создаётся проект по рисованию различных геометрических фигур, которые потом объединяются в спрайты, взаимодействуют друг с другом. Во время создания проекта постоянно применяется рефакторинг кода, при этом демонстрируются приёмы Объектно-ориентированного программирования. Во второй части курса мы проработаем понятие Интерфейса. Выдержка из отчёта Ларисы по завершению курса. 1) Получила представление о методах ООП - инкапсуляции, полиморфизме и наследовании. Эти три "кита" позволяют изменять и усложнять программы, добавляя в них новые возможности; 2) Научилась рисовать простые геометрические фигуры; 3) Создавать базовые и производные классы; 4) Создавать структуры и работать с пикселями; 5) Создавать фигуры из массива простых фигур в том числе и в цвете; 6) Передвигать простую фигуру; 7) Создавать класс объектов Sprite, являющийся производным от базового абстрактого класса Shape, а в нем список List, который содержит произвольное число фигур и функцию, которая добавляет фигуру, а также метод Move, который двигает её; 8) Освоила BreakPoint, который дает возможность проследить переходы в классе и связи между классами; 9) Познакомилась с абстрактыми и виртуальными методами в абстрактном базовом классе и методами override в производных классах. Совокупность этмх методов позволяет передвигать сложные фигуры как целое. Отчёт отправил: 11353. AlliZzeN Выполнено за 17 час. 52 мин. [Показать отчёт] Научился: Инкапсуляция - как "черный ящик". Мы знаем, как с ним взаимодействовать, но не знаем как внутри он работает. Инкапсуляция - это скрытая внутренняя реализация чего-то, но открыта для взаимодействия. Например думаю, к этому примеру подходит механизм управления автомобилем. Мы знаем что если руль крутить влево, то машина поедет налево, если вправо - направо. Нам неважно знать какие процессы, неведомые силы и прочие функции происходят внутри машины для поворотов. Сложности: Пока вроде бы все понятно, если я правильно понял определение инкапсуляции. |
|||||
2 | Урок рисования |
2 теста |
|||
На этом уроке мы нарисуем домик из двух линий и прямоугольника.
Отчёт отправил: 11353. AlliZzeN Выполнено за 1 час. 27 мин. [Показать отчёт] Научился: Научился рисовать прямоугольник и линии. Сложности: Ничего сложным не было. |
|||||
3 | Первый класс |
2 теста |
|||
На этом уроке мы создадим первый класс - Line. И перепишем программу, чтобы она работала точно так же. Отчёт отправил: 11353. AlliZzeN Выполнено за 20 час. 4 мин. [Показать отчёт] Научился: Создавать класс, перегружать методы. Программа начинает выглядеть красиво. Только у меня одно замечание. Может я тороплюсь и это будет далее, а может и вовсе не прав, но может нужно было бы поля класса Line делать приватными, а доступ к ним сделать через свойства. Я бы так сделал, но у меня мало опыта, так что утверждать не буду, просто мои догадки. Сложности: Сложного ничего не было и это радует. |
|||||
4 | Второй класс |
|
|||
На этом уроке мы создадим второй вспомогательный класс - Box. Порассуждаем на тему "наследования" и переделаем программу. Отчёт отправил: 11353. AlliZzeN Выполнено за 1 час. 4 мин. [Показать отчёт] Научился: Все никак не могу привыкнуть в системе координат. Примечание: В данном случае не нужно ставить this в конструкторе перед widthи heigth. Сложности: Сложности были с координатами, немного запутался в них. |
|||||
5 | Круглый класс |
|
|||
Создадим класс для задания окружности - Circle. Дополним окружность в центре домика. Отчёт отправил: 11353. AlliZzeN Выполнено за 13 час. 41 мин. [Показать отчёт] Научился: Создавать класс Эллипс и рисовать окружность. Сложности: Сложностей пока не было. Данный урок повторяет предыдущий. |
|||||
6 | Структура пикселя |
|
|||
Создадим структуру для задания координат пикселя и перепишем классы и программу с её использованием. Почитать об отличии класса от структуры: http://www.cyberforum.ru/csharp-beginners/thread442631.html Отчёт отправил: 11353. AlliZzeN Выполнено за 31 мин. [Показать отчёт] Научился: Хорошо что использовали struct. Прочитал про них, попрактиковался с ними. Сложности: - |
|||||
7 | Структура vs Класс |
1 тест |
|||
На этом дополнительном уроке наглядно демонстрируются главные отличия между struct и class в языке C#.
Отчёт отправил: 11353. AlliZzeN Выполнено за 10 час. 7 мин. [Показать отчёт] Научился: Хороший урок, понял некоторые моменты, которые не знал. Структура это тип значения. Располагается в стеке. При передачи в метод передается копия структуры. Но значения структуры изменить можно, использовать модификаторы ref или out, или возвратить структуру. При инициализации структуры значения устанавливаются по умолчанию. Нельзя наследовать структуру. Класс это ссылочный тип. Располагается в куче. При передачи в метод передается указатель(ссылка на класс), поэтому при изменениях значений мы сразу их меняем "там", куда ведет нас указатель. При создании класса значения устанавливаются по умолчанию. Класс поддерживает наследование. Сложности: Ничего сложного. |
|||||
8 | Пиксели для классов |
2 теста |
|||
На этом уроке мы продолжим внедрение структуры Pixel в наши классы. Будем её использовать для хранения координат внутри класса. Также избавимся от повторяемого кода внутри конструкторов. Отчёт отправил: 11353. AlliZzeN Выполнено за 45 мин. [Показать отчёт] Научился: Научился использовать структуру в классе. Правда сразу не все понял как 2*2. Пришлось второй раз пересматривать с паузами и понять. ЛОгично и удобнее стало на мой взгляд. Кажется ничего сложного, но это на примере. Как будет при создании нового своего приложения пока сильно не углублялся. Сложности: Ничего) |
|||||
9 | Расстояние между пикселями |
2 теста |
|||
Как вычислить расстояние между двумя пикселями? Есть специальная формула, которую можно разместить в структуру Pixel. Теперь мы сможем создать ещё один конструктор окружности по центру и любой точке на окружности. Отчёт отправил: 11353. AlliZzeN Выполнено за 11 час. 50 мин. [Показать отчёт] Научился: public Circle(Pixel centr, Pixel point): this(centr, centr.Distance(point)) this в конструкторе говорит нам о том, что сначала вызывается конструктор подходящий по параметрам (centr, centr.Distance(point), а после уже вызывается первая часть конструктора Pixel centr, Pixel point). Со структурой все понятно. Сложности: Проблем не было. |
|||||
10 | Цветные карандаши |
1 тест |
|||
Возьмём цветные карандаши и будем раскрашивать наш домик. Создаём новые классы для цветны линий, окружностей и прямоугольников. Отчёт отправил: 11353. AlliZzeN Выполнено за 46 мин. [Показать отчёт] Научился: По началу при создании ColorLine были некоторые непонятно, после уже разобрался. Думал, а зачем мы копировали из классов весь код, могли бы сделать наследование. Вроде подходит такой вариант, не разбирался после того как Евгений озвучил, что специально так сделал, далее будет оптимизировать код. Посмотрим, что будет дальше. Сложности: Ничего сложного. |
|||||
11 | Рисуем Снеговика |
|
|||
На этом уроке мы создадим ... Снеговика (спрайт) — более сложную фигуру, которая состоит из других фигур. В дальнейшем мы будем работать с такими спрайтами, перемещать их, поворачивать, масштабировать, а пока ... мы просто нарисуем Снеговика. Отчёт отправил: 11353. AlliZzeN Выполнено за 13 час. 5 мин. [Показать отчёт] Научился: Так как я еще не совсем хорошо разбираюсь с координатами в WinForm, нашел подсказку в Pain. При наведении в углу показываются координаты точки. Теперь всё стало понятно. Не знаю как дальше буду курс проходить, но думаю что-нибудь придумаю. Всё равно кажется рисунок не идеален. Как говорится, - И так сойдёт! Сложности: Придумать что-то своё не сложное, но и не простое. Видеообзор: XYQzrSDatJ0 |
|||||
12 | Второй Снеговик |
1 тест |
|||
На этом уроке мы создадим второй спрайт - ещё одного снеговика, но разноцветного. Вопрос для перехода к следующему уроку: Что нужно изменить в этой программе, чтобы мы могли а) перемещать снеговика; б) поворачивать снеговика; в) изменять размер снеговика. Отчёт отправил: 11353. AlliZzeN Выполнено за 43 мин. [Показать отчёт] Научился: Что нужно изменить в этой программе, чтобы мы могли Сделать класс Снеговик и через конструктор все это менять + интерфейс наверное. а) перемещать снеговика; б) поворачивать снеговика; в) изменять размер снеговика. Сложности: В этом уроке ничего сложного. |
|||||
13 | Богатое наследство |
2 теста |
|||
Наконец-таки мы возьмёмся за наследование. Убираем повторяющийся код из цветных классов. Осмысливаем значение термина «наследование». Отчёт отправил: 11353. AlliZzeN Выполнено за 2 дня 18 час. 31 мин. [Показать отчёт] Научился: Наследование - это копирование состояния родителя с возможностью добавления новых функций и т.д. Например, есть класс Транспортное средство с параметрами -скорость, - количество мест, - количество колес. Есть классы Автомобиль, Мотоцикл, Велосипед. Так вот, Все эти классы наследуются от класса Транспортное средство с учетом своих значений (скорость, количество колес и количества мест). Класс от которого наследуется, называется базовый, родительский. Класс который наследуется называется наследник, дочерний. Если в наследнике указано ключевое слово base, то сначала вызывается конструктор из родительского класса, после уже конструктор дочернего класса. Сложности: Ничего сложного. |
|||||
14 | Фигуральный базовый класс |
|
|||
Очень хочется все элементы снеговика поместить в один массив. Сейчас это сделать нельзя - придётся делать три массива - для кругов, для линий, для боксиков... Решение гениальное - создаём базовый класс фигуры - Shape, создаём массив фигур, и все фигуры помещаем в этот массив! После размещения фигур в массив можно видеть, что каждая фигура в нём хранится не как фигура, а под своим типом. А все под одной крышей они могут находится потому что все они - фигуры, так как унаследованы от Shape. Отчёт отправил: 11353. AlliZzeN Выполнено за 12 час. 14 мин. [Показать отчёт] Научился: Первый способ реализации функции Draw(); (в лоб) думаю такой: void Draw(Shape sh) { if (sh is Line) Draw((Line)sh); if (sh is Box) Draw((Box)sh); if (sh is Circle) Draw((Circle)sh); if (sh is ColorLine) Draw((ColorLine)sh); if (sh is ColorBox) Draw((ColorBox)sh); if (sh is ColorCircle) Draw((ColorCircle)sh); } Работает, но не элегантно. Думал на счет делегатов, в делегат записать все методы Draw))) Кажется плохое решение) Пока не знаю. Может быть на за счет интерфейсов. Сложности: Придумать реализацию. |
|||||
15 | Приведение с мотором |
1 тест |
|||
На этом уроке мы реализуем метод Draw (Shape shape) через серию условных операторов. А также создадим функцию для рисования целевого спрайта (снеговика) - Draw (Shape [] shapes). Результат работы программы не изменяется, а вот содержимое кода всё более и более облагораживается. Отчёт отправил: 11353. AlliZzeN Выполнено за 5 час. 46 мин. [Показать отчёт] Научился: Функцию Draw(Shape shape) реализовал еще на прошлом уроки в домашнем задании через if. Переменная Shape.position понадобится для указания начала координат каждой отдельной фигуры. Если я правильно понял. Сложности: Ничего сложного не было. |
|||||
16 | Переезд метода Draw |
|
|||
На этом уроке мы начнём переносить функции для рисования фигур из основной программы в классы.
Отчёт отправил: 11353. AlliZzeN Выполнено за 1 час. 14 мин. [Показать отчёт] Научился: Сначала программа выбивала ошибку на рисовании цветной фигуры при моем старом коде: if (sh is Line) Draw((Line)sh); if (sh is Box) Draw((Box)sh); if (sh is Circle) Draw((Circle)sh); if (sh is ColorLine) Draw((ColorLine)sh); if (sh is ColorBox) Draw((ColorBox)sh); if (sh is ColorCircle) Draw((ColorCircle)sh); Понял ошибку. Так как цветной Circle является так же и обычным Circle поэтому вызывало ошибку что graph и pen имеют ссылку null. Так что лучше использовать typeof. Он выдает тип класса точнее. Учту. Если я не так сформулировал и понял, поправьте пожалуйста. Сложности: Ничего сложного. |
|||||
17 | Переезд graph в базовый класс |
1 тест |
|||
На этом уроке мы напишем функции для рисования фигур во всех остальных классах.
Отчёт отправил: 11353. AlliZzeN Выполнено за 2 час. 16 мин. [Показать отчёт] Научился: Использовать базовый класс в режиме Наследование. Не сразу понял как присваивается необходимый цвет фигуре, пошел по шагам и все стало ясно. Сложности: Ничего сложного) |
|||||
18 | Мощь полиморфизма |
2 теста |
|||
На этом уроке мы создадим в базовом классе функцию Draw(), и при её вызове через механизм полиморфизма будет запускаться созвучный метод нужного класса. Отчёт отправил: 11353. AlliZzeN Выполнено за 19 мин. [Показать отчёт] Научился: Вот вроде знаком с перегрузкой методов, абстрактными классами/методами. Но не мог додумать в прошлых уроках как организовать функцию рисования, чтобы работала для всех классов. А оказалось все логично, легко и просто. Сложности: Было легко и просто. |
|||||
19 | Спрайт для Снеговика |
1 тест |
|||
На этом уроке мы создадим новый класс - Sprite, в котором будет хранится список всех фигур, из которых строится графический объект, чтобы в основной программе мы могли оперировать сразу спрайтами, а не их составными элементами.
Отчёт отправил: 11353. AlliZzeN Выполнено за 1 час. 10 мин. [Показать отчёт] Научился: List<T> динамический список однотипных элементов(конечно можно хранить в нем переменные разного типа, но это влияет на производительность, да и запутаешься в конце концов, а программа тем более). Так вот. Хорош данный список тем, что при инициализации нам не нужно указывать какого объема он будет(как, например массив int[] arr = new int[2];), хотя в List есть возможность указать начальную емкость коллекции, что увеличит время выполнения и производительность. Так же в List можем добавлять массивы, удалять определенные значения, значения по индексу, сортировать коллекцию List. C уроком разобрался, пока все понятно. И наконец понял, как компилятор понимает из какого класса вызывать функцию Draw(). Сложности: Проблем не было. Все решил самостоятельно после просмотра без подсказок. |
|||||
20 | Перемещение круга |
1 тест |
|||
На этом уроке мы начнём реализовывать идею перемещения спрайтов. Начнём, как обычно, с простого. Научимся перемещать один кружок. Отчёт отправил: 11353. AlliZzeN Выполнено за 1 день 23 час. 3 мин. [Показать отчёт] Научился: Два раза пересматривать пришлось для понимания. Сложности: Вроде всё понятно. |
|||||
21 | Перемещение других фигур |
2 теста |
|||
На этом уроке мы переделаем метод Draw() для остальных фигур - Line и Box(). Наша программа теперь по нажатию кнопочки будет перемещать сразу три фигурки. Отчёт отправил: 11353. AlliZzeN Выполнено за 1 час. 33 мин. [Показать отчёт] Научился: Пришлось немного подумать и осмыслить, а еще сообразить с этими не координатами) Вроде бы получилось задуманное. Сложности: В принципе ничего сложного. Главное серое вещество заставить шевелиться. |
|||||
22 | Перемещение Снеговиков |
1 тест |
|||
На этом уроке мы научим перемещаться целых снеговиков. Для этого нам не нужно будет менять метод Draw(), мы воспользуемся полиморфизмом! Отчёт отправил: 11353. AlliZzeN Выполнено за 2 час. 46 мин. [Показать отчёт] Научился: Повторил базовый полиморфизм. Сложности: Сложного пока ничего |
|||||
23 | ПОЛУФИНАЛЬНЫЙ УРОК. |
без видео |
|||
На этом первая часть видеокурса "Теория ООП" закончилась. Пожалуйста, напиши отзыв об этом курсе, что тебе понравилось, что узнал нового, что можно было бы сделать лучше, оправдал ли курс твои ожидания. Приложи своё фото и напиши своё имя-фамилию. (видео в этом уроке нет) Отчёт отправил: 11353. AlliZzeN Выполнено за 10 мин. [Показать отчёт] Научился: Урок понравился) по ходу курса параллельно изучал темы. Такие как наследование, перегрузка методов, структуры, коллекция List, абстрактные классы. В данном курсе были рассмотрены основы концепции ООП. Надеялся, что еще будет рассмотрены интерфейсы и что-то еще в этом духе. Сложности: Сложного ничего не было. |
|||||
24 | Интерфейс. Зачем он нужен. |
1 тест |
|||
На этом уроке я объясню своими словами, что такое интерфейс. Мы поговорим об игре "Голя" или "Сифа" или "Вода", о том, кто в неё может играть, и что делать тем, кто не знает правила игры. В конце урока мы создадим наш интерфейс. Правила игры, для тех, кто не знает: Выбирается ведущий. Его цель - догнать и дотронуться до кого-либо из участников. Цель остальных - не допустить этого. Когда ведущий дотронется до кого-либо (заголит) - ведущим становится новый участник. Отчёт отправил: 11353. AlliZzeN Выполнено за 1 день 2 час. 24 мин. [Показать отчёт] Научился: Интерфейс - это ссылочный тип данных, набор свойств и методов без реализации. Интерфейсы реализуют в классах и структурах. Принято обозначение интерфейсов с заглавной буквы I (IPlayer). В С# поддерживается множественное наследование public class Person : IPlayer, ITrainer. При реализации интерфейсов необходимо реализовать все методы и свойства. Вообще интерфейсы похожи на абстрактные классы. По умолчанию идентификаторы доступа в интерфейсах значатся как public. Оно и понятно:) Ведь нужно реализовать в классах. При реализации и классов и интерфейсов одновременно если, то необходимо указывать интерфейсы после классов. Можно реализовать множественное наследование интерфейсов. Сложности: Ничего сложного. Интересная тема. |
|||||
25 | Интерфейс. Правила игры. |
1 тест |
|||
На этом уроке мы поговорим о правилах игры в догоняшки. На прошлом уроке мы выясняли, что должны уметь делать игроки. На этом уроке мы начнём писать класс, в котором опишем конкретные правила нашей игры. Отчёт отправил: 11353. AlliZzeN Выполнено за 1 час. 35 мин. [Показать отчёт] Научился: Ничему нового. Сделал как на первый взгляд сделал реализацию функций FindNewLeader( ) и SetNewLeader( ), но кажется что-то не так. Посмотрим в следующем уроке. |
|||||
26 | Интерфейс. Алгоритм игры. |
|
|||
На этом уроке мы допишем класс GameCatch. Напишем реализацию методов FindNewLeader() и SetNewLeader(). Ваша задача - подумать и написать, что нужно ещё сделать, чтобы можно было начать играть в эту игру. Отчёт отправил: 11353. AlliZzeN Выполнено за 3 час. 16 мин. [Показать отчёт] Научился: Научился работать с интерфейсом. Наверное нужно добавить textbox и label на форму, ну еще пару кнопочек для прокрутки колеса. Сложности: Пока ничего. Но нужно еще пройтись по данной теме с интерфейсами. |
|||||
27 | Интерфейс. Создаём кружок. |
|
|||
На этом уроке мы создадим объект для нашей игры - Кружок! У кружочка есть координаты центра, радиус и цвет. Цель урока - создать класс Circle.cs Отчёт отправил: 11353. AlliZzeN Выполнено за 20 мин. [Показать отчёт] Научился: Создали класс с конструктором. Только у меня замечание. Свойства же принято писать с большой буквы? Сложности: Easy |
|||||
28 | Интерфейс. Площадка для игры. |
1 тест |
|||
На этом уроке мы начнём создавать класс Arena, который создаст поле для игры и реализует методы для отображения объектов на экране. Отчёт отправил: 11353. AlliZzeN Выполнено за 58 мин. [Показать отчёт] Научился: Как я понял, класс Arena нужен для отображения наших красных кружков на форме. Сложности: - |
|||||
29 | Интерфейс. Кружок на площадке. |
1 тест |
|||
На этом уроке мы допишем класс Arena, реализуем методы Show(Circle), Refresh(), static NewCircle(). Всё готово к созданию кода для отображения кружка из класса Form1.cs! Отчёт отправил: 11353. AlliZzeN Выполнено за 10 час. 36 мин. [Показать отчёт] Научился: Реализовал все методы урока + попробовал запустить отображение кружков на форме. Сегодня повторял тему Делегаты, поэтому сделал метод Show через делегат. Думаю, что нет необходимости использование делегата в таком ключе. В комментарии работает метод и без делегата. Правда кружки не похожи на ровный круг. Сложности: Сложностей не было. |
|||||
30 | Интерфейс. Запускаем кружки на площадку! |
3 теста |
|||
На этом уроке мы настроим нашу форму, напишем несколько волшебных строчек, и ... программа заработает!!! У нас будет много-много кружков на экране 8-о Отчёт отправил: 11353. AlliZzeN Выполнено за 23 час. 12 мин. [Показать отчёт] Научился: Научился отображать рандомно окружности. Так же вспомнил в каком-то из уроков тест на заливку окружности, решил воплотить + сделал чуть толще толщину пера. С интерфейсов разобрался. Прочитал дополнительную литературу. Была ошибка, забыл указать в классе Circle значение у радиуса. Поэтому в методе graph.DrawEllipse(pen, circle.Centr.X - circle.Radius, circle.Centr.Y - circle.Radius, 2 * circle.Radius, 2 * circle.Radius); ничего не отображалось. Сложности: Ничего сложного |
|||||
31 | Интерфейс. Кружок хочет играть. |
2 теста |
|||
На этом уроке мы унаследуем кружок от интерфейса Игрок. Теперь для запуска программы нам придётся реализовать методы из его интерфейса. В этом уроке мы реализуем методы Голя() и НеГоля(). Отчёт отправил: 11353. AlliZzeN Выполнено за 3 дня 6 час. 47 мин. [Показать отчёт] Научился: Я понял, что Интерфейсы реализуются, оно и понятно, потому что в них хранятся методы, в отличие от классов. Поэтому не правильно говорить Интерфейсы наследуются. В методе Поймал необходимо определить пересекаются ли окружности, вроде бы несложно, знать необходимо центр окружности и радиус, вернуть значение true. Если истина- то передать Голя новой окружности, если ложь - двигаться далее. Вот как реализовать в коде пока не придумал, со школы не люблю геометрию:) Сложности: Вроде ничего сложного при работе с интерфейсов не возникло. |
|||||
32 | Интерфейс. Кружок готов к игре! |
1 тест |
|||
На этом уроке мы допишем методы Игрока в классе Circle. Реализуем метод Беги() и Поймал(), и даже исправим недочёты в описании интерфейса (!!). В конце урока я ответил на многочисленные вопросы участников. Отчёт отправил: 11353. AlliZzeN Выполнено за 46 мин. [Показать отчёт] Научился: Как в школе. Когда учитель объясняет ,вроде бы всё понятно. А как сам решаешь, так затупки небольшие) Правильно думал про реализацию методом на прошлом уроке. Всё стало понятно и логично. Сложности: Легко, не считая работу с координатами, пришлось посидеть порисовать на листочке для большего понимания. |
|||||
33 | Интерфейс. Кружочки гоняются друг за другом. |
1 тест |
|||
На этом уроке мы добавим в форму класс GameCatch, Разместим таймер и наконец-таки запустим нашу игру - Шарики начнут гоняться друг за другом! Отчёт отправил: 11353. AlliZzeN Выполнено за 3 час. 21 мин. [Показать отчёт] Научился: Были некоторые ошибки с методом Move(), ошибку устранил. ----------------Написать словами, как исправить недочет с переголением.---------------- Думаю, что алгоритм такой: 1. Запоминаем индекс игрока-лидера. 2. При установке нового лидера проверяем, совпадает ли индекс пойманного игрока с предыдущем игроком-лидером. 3. Если совпадаем - Ищем дальше лидера. Сложности: На первый взгляд ничего сложного. Нужно спокойно в выходной день посидеть всё пересмотреть. Видеообзор: rJqPtFsflJY |
|||||
34 | Интерфейс. Изменяем правила игры. |
1 тест |
|||
На этом уроке мы добавим в правила игры задержку после получения Голи. Ведущий будет считать до 10, и только потом сможет голить других. Твоя задача - придумать новую игру, в которую смогут играть Игроки, то есть объекты, которые умеют делать то, что описано в интерфейсе Игрок. Отчёт отправил: 11353. AlliZzeN Выполнено за 3 час. 22 мин. [Показать отчёт] Научился: Сделал из дополнительного функционала: Голя при поимке обычного кружка исчезает. В итоге остается один кружок. Хотел ещё сделать, чтобы кружки при соприкосновении отталкивались, но пока что не придумал как сделать. Сложности: Ничего сложного. Видеообзор: 9rVVur7giP0 |
|||||
35 | Интерфейс. Создаём новую игру. |
|
|||
На этом уроке мы начнём делать новую игру - Вирус. Смысл игры подробно рассказан на видео. Цель урока - создать класс GameVirus и реализовать методы GameViurs(), AddGamer(), Step(), RunAll(). Также придумать и написать словами алгоритм методов SetNewVirus(Игрок) и FindNewVirus(). Отчёт отправил: 11353. AlliZzeN Выполнено за 5 час. 7 мин. [Показать отчёт] Научился: Вроде правила понял, но кажется не до конца(один момент есть). Новый вступивший игрок является Вирусом, далее он ловит остальных и заражает вирусом. Когда остается один игрок, то все вирусы удаляются и он становится новым вирусом, и всё по новой. Получается Игра бесконечная будет? Сложности: Реализация двух методов. На словах понял, но на практике не уверен. |
|||||
36 | Интерфейс. ФИНАЛЬНЫЙ УРОК. |
|
|||
На этом уроке мы допишем последние две функции и надолго залипнем в экран, наблюдая за новой игрой для наших кружков, как вирусная эстафета может быстро передаваться, особенно, когда игроков очень много. В комментариях написать свой отзыв об этой серии уроков. Следующие уроки не обязательны для выполнения. Я предупредил. Какой курс ты будешь проходить следующим? Отчёт отправил: 11353. AlliZzeN Выполнено за 57 мин. [Показать отчёт] Научился: Хороший курс, постоянное использование интерфейсов. Так же хорошо суть интерфейса в уроках, когда пишем вторую игру - "Virused". Изменений мало, но уже совсем другая игра. Выбрал вариант без застывания "зараженных". Следующий курс еще не выбрал. Осталось несколько уроков пройти в курсе ООП. Сложности: Самостоятельная работа по реализации методов) Но думаю, было бы больше времени, то что-нибудь придумал бы. Направление было верное. Видеообзор: 7vbY-zGRplA |
|||||
37 | Интерфейс. VIP. Квадратики тоже хотят играть. |
|
|||
На этом уроке мы создадим новый класс Box. Квадратики тоже хотят играть в эту игру, и просят их научить. Пока они ещё не умеют ловить, но уже смогут отображаться и передвигаться. Полезные ссылки для написания функции Поймал: http://xdan.ru/how-to-check-intersect-two-rectangles.html http://stackoverflow.com/questions/306316/determine-if-two-rectangles-overlap-each-other Отчёт отправил: 11353. AlliZzeN Выполнено за 2 час. 57 мин. [Показать отчёт] Научился: Научился использовать интерфейс. То ли привык к окружностям, но мне кажется прямоугольники смотрятся более красивыми. Сложности: Ничего сложного. Только у меня Голя не двигался, пришлось смотреть/вспоминать где функция за это отвечает. Даже немного пришлось просмотреть прошлый урок и вспомнить. |
|||||
38 | Интерфейс. VIP. Пересечение прямоугольников. |
|
|||
На этом уроке мы допишем метод Box.Поймал() и запустим игру с квадратиками. Потом попробуем подружить квадратики с кружками, увидим, что это не так просто, да собственно и не нужно. Но возможно. Отчёт отправил: 11353. AlliZzeN Выполнено за 45 мин. [Показать отчёт] Научился: Хороший курс. Понравился очень. Есть возможность сделать, чтобы при передачи Голи, старый Голя удалялся. Сложности: Ничего сложного. Видеообзор: XA70rTNGrYw |
|||||
39 | Интерфейс. VIP. Тяжёлая дружба кругов и квадратов. |
|
|||
На этом уроке мы создалим "универсальный" класс Crosser, который сможет проверять на столкновение "любых" двух Игроков. Конечно не любых, а только двух наших Box и Circle. Это яркий способ, чего стоит избегать в программах. Потому что тут не добавляется универсальности, т.к. при добавлении новых объектов придётся дописывать кучу новых функций на сравнение. Самостоятельное задание - записать видеообзор своего проекта и рассказать, что такое Interface. Отчёт отправил: 11353. AlliZzeN Выполнено за 14 час. 16 мин. [Показать отчёт] Научился: Научился работать с двумя разными объектами, а именно определять их пересечение. Правда код класса Crosser на вид какой то "топорный" что-ли, не профессиональный, но работает. Для ознакомления как делать не надо пойдет. Кажется я понял суть интерфейса. Это обучить разные объекты каким-то одним действиям. Не одной функцией, а одной областью, скажем так. Например: - Можно обучить функцией Стрелять разные виды оружия(пистолет, автомат, винтовка, палка); - Настройка яркости(электронная свеча, лампочка, гирлянда); - Управление автомобилем(легковой автомобиль, грузовой автомобиль, автобус, электрокар); Сложности: - Видеообзор: wfZRbD7r9r8 |
|||||
Итого: 39 видеоуроков |
7 час. 40 мин. 36 тестов |
83 чел. | |||
Финалисты: lomik, Роман, Максим Базуев, Neverwinter 2, Владимир, Никита, Олюшка, Валера Луцевич, Anton Sozykin, Permitin Alexey, Артём, Максим Лапшинов, Frank, Archi, Александр Львович, Олег Михайлович, Дмитрий, Новопашин Владимир, Евгений, Сергей Соколов, Александр Б., Максим Саратов, Алексей В., Александр, Rita, Станислав, Алексей Хонин, Ludmila, Yefim, Сергей Зулкарнаев, Сергей Аникин, Константин, Tekashnik, Артем Посунько, Андрей Козлов, kalobyte, Sergio, Алексей Малышев, Александр, Сергей Стефаненко, Николай Денисов, Анатолий, Денис, Алексей|BrisK|Кривицкий, Скозложоп, chokayes, Иван Воронин, Андрей Шевченко, Chip, Rise, Слава, Саша Авербух, Александр, ser2018, Дмитрий, Виктор, Денис, Oleksandr, superGrover, Александр Балбашов, vip, Слава, Sergey Potapov, Den Andreevich, Dmitry Sinitsin, Никита, Айдар, Кирилл, Max, AlliZzeN, no name, Дмитрий, Владимир, ES35, Anatoli, Виталий, Татьяна, Vdonsk, MaxB, Булат, Tim, Tom, Антон . |