# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 | Инкапсуляция мечты |
2 теста |
|||
Курс по теории Объектно-ориентированного программирования. С нуля создаётся проект по рисованию различных геометрических фигур, которые потом объединяются в спрайты, взаимодействуют друг с другом. Во время создания проекта постоянно применяется рефакторинг кода, при этом демонстрируются приёмы Объектно-ориентированного программирования. Во второй части курса мы проработаем понятие Интерфейса. Выдержка из отчёта Ларисы по завершению курса. 1) Получила представление о методах ООП - инкапсуляции, полиморфизме и наследовании. Эти три "кита" позволяют изменять и усложнять программы, добавляя в них новые возможности; 2) Научилась рисовать простые геометрические фигуры; 3) Создавать базовые и производные классы; 4) Создавать структуры и работать с пикселями; 5) Создавать фигуры из массива простых фигур в том числе и в цвете; 6) Передвигать простую фигуру; 7) Создавать класс объектов Sprite, являющийся производным от базового абстрактого класса Shape, а в нем список List, который содержит произвольное число фигур и функцию, которая добавляет фигуру, а также метод Move, который двигает её; 8) Освоила BreakPoint, который дает возможность проследить переходы в классе и связи между классами; 9) Познакомилась с абстрактыми и виртуальными методами в абстрактном базовом классе и методами override в производных классах. Совокупность этмх методов позволяет передвигать сложные фигуры как целое. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Всё умел. Сложности: Ничего. Комментарии: Скриншот создан вручную, подход творческий ))) Согласен с Владимиром (6696), надо четко выделить главное в таких фундаментальных вопросах. |
|||||
2 | Урок рисования |
2 теста |
|||
На этом уроке мы нарисуем домик из двух линий и прямоугольника.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Познакомился с базовыми основами рисования. Сложности: Понять всё это. Комментарии: Мы создали picture, чтобы рисовать на ней, но затем еще создали bmp, чтобы рисовать на нем, для рисования у нас graph, но рисуем мы pen... Жесть! Как в банке, чтобы получить кредит, куууча промежуточных звеньев непонятного назначения. Неужели нельзя создать picture, а затем заюзать pen... |
|||||
3 | Первый класс |
2 теста |
|||
На этом уроке мы создадим первый класс - Line. И перепишем программу, чтобы она работала точно так же. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Познакомился с передачей аргументов объекту Сложности: Ответить на этот вопрос. Комментарии: Даже не знаю что и сказать. Правда. Наверно уроки следует слушать параллельно с чтением книги. |
|||||
4 | Второй класс |
|
|||
На этом уроке мы создадим второй вспомогательный класс - Box. Порассуждаем на тему "наследования" и переделаем программу. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Познакомился с понятием наследование. Сложности: Понять всё это. Комментарии: Пока вроде неплохо, продолжаем. |
|||||
5 | Круглый класс |
|
|||
Создадим класс для задания окружности - Circle. Дополним окружность в центре домика. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Узнал особенности рисования окружности. Сложности: Ну хоть где то я могу написать: ничего)) Комментарии: В моей реализации это похоже на ... конуру))) |
|||||
6 | Структура пикселя |
|
|||
Создадим структуру для задания координат пикселя и перепишем классы и программу с её использованием. Почитать об отличии класса от структуры: http://www.cyberforum.ru/csharp-beginners/thread442631.html Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Познакомился с кусочком ООП: использование универсальных данных - обозначили один раз, вызвали много раз по разному. Сложности: Понять, как всё это работает. Да!! Комментарии: Вот это обалденный урок! Я прям почувствовал, как начинаю достигать просветления. box1 = new Box(150, 220, 230, 180); заменили на box1 = new Box(C, B); - круто!! Кусочек мощи объектно-ориентированного подхода в "переводе на пощупать". Кстати вопрос: а что такое конструктор? Определение: штука которая создает экземпляр класса - теперь не прокатывает. Как говорит книга : класс - это чертеж, а объект - это готовый экземпляр... Но с одного чертежа нельзя заготовить два разных объекта. |
|||||
7 | Структура vs Класс |
1 тест |
|||
На этом дополнительном уроке наглядно демонстрируются главные отличия между struct и class в языке C#.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 45 мин. [Показать отчёт] Научился: Познакомился с ключевыми словами ref, out. Узнал интересные особенности структур. Сложности: Всё здорово объяснили, спасибо, количество понимаемого увеличилось! Комментарии: Были понятны пункты 1(из за пояснения в нем же), 4(немного), 6.. и всё. Структуре можно делать конструктор... АХТУНГ!!! Не может быть! (это еще надо было на прошлом уроке написать...) Евгений Витольдович... а что такое виртуальные члены? Хочется спросить, что такое наследование интерфейсов, но я не буду... от греха... голова всё же целая нужна :-)) |
|||||
8 | Пиксели для классов |
2 теста |
|||
На этом уроке мы продолжим внедрение структуры Pixel в наши классы. Будем её использовать для хранения координат внутри класса. Также избавимся от повторяемого кода внутри конструкторов. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 45 мин. [Показать отчёт] Научился: Познакомился с особенностями использования ключевого слова this в заголовке конструктора. Сложности: Понять, как всё это работает. Раньше мы передавали координаты, а теперь передаём структуру. Комментарии: Код становится более компактным, хотя и болеевысокоабстрактным. |
|||||
9 | Расстояние между пикселями |
2 теста |
|||
Как вычислить расстояние между двумя пикселями? Есть специальная формула, которую можно разместить в структуру Pixel. Теперь мы сможем создать ещё один конструктор окружности по центру и любой точке на окружности. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 45 мин. [Показать отчёт] Научился: Углубил познания о ключевом слове this. Сложности: "...идея инкапсуляции в том что, можно предоставлять различные способы вызова объекта..." На этом месте мозг чуть чуть загрустил. Слегонца. а когда появилось вот ЭТО : this (center, center.distance (point)) , то тут мозг загрустил посильнее..... И только лишь четырёхминутная "медитация" по этому вопросу помогла понять, почему убрали вообще всё. Комментарии: 1) double radius = Math.Sqrt( в конструкторе public Circle класса Circle. Почему нельзя float? внутри где то double есть? Такое ощущение, что в Math.Sqrt где то в описании дабл забит, но явно это не сказано... 2) при вызове Draw надо было изменить circle1 на circle. Но где то... то ли не сказали, то ли я пропустил. Хорошо хоть быстро до этого догадался... Самое жуткое, когда на вебинаре рисуется 2 окружности, а у тебя ОДНА.... ужааааас.... (потому что будешь искаааать, искааааааать, искааааааааааааааааааааааать...) 3) И раз уж мы возвращались к разнице класса и структуры.... Что такое виртуальные члены? |
|||||
10 | Цветные карандаши |
1 тест |
|||
Возьмём цветные карандаши и будем раскрашивать наш домик. Создаём новые классы для цветны линий, окружностей и прямоугольников. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Делать запутанные программы. Сложности: Подобрать цвет. Бывает он рисуется, а не видно. И думаешь, что не рисуется... Honeydew к примеру. Комментарии: Неожиданное продолжение. Я думал мы напишем типа суперкласс, при помощи которого будем управлять цветами. |
|||||
11 | Рисуем Снеговика |
|
|||
На этом уроке мы создадим ... Снеговика (спрайт) — более сложную фигуру, которая состоит из других фигур. В дальнейшем мы будем работать с такими спрайтами, перемещать их, поворачивать, масштабировать, а пока ... мы просто нарисуем Снеговика. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 45 мин. [Показать отчёт] Научился: Познакомился с рисованием "с нуля". Сложности: Самым сложным было неподдаться соблазну нарисовать что нибудь супер-пупер-какоенибдуь, и продолжить заниматься)))) Комментарии: Может есть более "четкий" способ рисования "с нуля"... я не знаю, надо будет как нибудь загуглить. |
|||||
12 | Второй Снеговик |
1 тест |
|||
На этом уроке мы создадим второй спрайт - ещё одного снеговика, но разноцветного. Вопрос для перехода к следующему уроку: Что нужно изменить в этой программе, чтобы мы могли а) перемещать снеговика; б) поворачивать снеговика; в) изменять размер снеговика. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 45 мин. [Показать отчёт] Научился: Всё уже знал Сложности: Ничего. Комментарии: Вы по сути ответили на вопрос, который задали. Действительно - вся фигура должна обсчитываться относительно одной точки. То есть функция рисования фигуры будет принимать 4 значения (точка отсчета, первая точка, вторая точка, цвет). Точка отсчета - это для всех фигур одного снеговика одинакова. первая и вторая точки это для квадрата углы к примеру. ну цвет - это цвет. Надо сдвинуть - сдвигаем одну точку - точку отсчета. Если хочется поворачивать - придется считать синусы. То есть у нас есть вектор с координатами. По известным координатам можно его "дополнить до треугольника", вычислить синус угла, вычислить синус необходимого угла, из него выразить координаты... Ну вобщем можно если заморочиться.. На счет поворачивать - не знаю как. У нас объект 2D, такие обычно не поворачивают. |
|||||
13 | Богатое наследство |
2 теста |
|||
Наконец-таки мы возьмёмся за наследование. Убираем повторяющийся код из цветных классов. Осмысливаем значение термина «наследование». Отчёт отправил: 1901. Neverwinter 2 Выполнено за 20 мин. [Показать отчёт] Научился: Познакомился с наследованием Сложности: Пока ничего. Комментарии: Непонятно про базовый конструктор без параметров. Надеюсь дальше рассмотрим. |
|||||
14 | Фигуральный базовый класс |
|
|||
Очень хочется все элементы снеговика поместить в один массив. Сейчас это сделать нельзя - придётся делать три массива - для кругов, для линий, для боксиков... Решение гениальное - создаём базовый класс фигуры - Shape, создаём массив фигур, и все фигуры помещаем в этот массив! После размещения фигур в массив можно видеть, что каждая фигура в нём хранится не как фигура, а под своим типом. А все под одной крышей они могут находится потому что все они - фигуры, так как унаследованы от Shape. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Всё знал. Сложности: Ничего. Комментарии: Реализовать функцию Draw элементарно - достаточно взять (каким-то хитрым образом) из массива информацию о том, какая конкретно фигура рисуется. Ну и добавить в Shape тип фигуры, чтобы с этим работать. Вот и всё - всего - то :-)))))) |
|||||
15 | Приведение с мотором |
1 тест |
|||
На этом уроке мы реализуем метод Draw (Shape shape) через серию условных операторов. А также создадим функцию для рисования целевого спрайта (снеговика) - Draw (Shape [] shapes). Результат работы программы не изменяется, а вот содержимое кода всё более и более облагораживается. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Углубил знания о наследовании. Сложности: ВСЁ!!! Всё было сложным! Понять как всё это работает!!! Комментарии: Это кошмар какой-то! Я даже не знаю, как это назвать. Мы организовываем класс Shape от которого наследуем всё, при этом в классе ничего нет. То есть сёркл, лайн и бокс это фигуры, а шэйп - это как бы профигура (по аналогии с прокариотами), никакая фигура. И затем мы делаем массив никаких фигур! snowman1 = new Shape[7]; Далее мы рисуем снеговика Draw(snowman1); С одной стороны всё хорошо, Рисуем (снеговик). все четко и понятно. НО с другой стороны мне надо держать в голове, что сноумэн1 это массив, и что будет вызвана функция Draw(Shape[] shapes) . Ага. А shapes[j] - это уже какой то элемент массива, и уже с ним будет вызвана другая функция, то есть строка Draw(shapes[j]); вызовет Draw(Shape shape). которая в свою очередь будет вызывать функции для рисования отдельных фигур. Я на это долго смотрел. Дооолго смотрел. ..... ..... .... Нет, ну вот честно. Массив никаких фигур, а затем мы вызываем функцию, которая отрисовывает поэлементно, по дороге определяя тип... А-а-а-а.... Ощущение, что в черепную коробку засунули гантелю, и она [коробка] стала очень тяжёлой... |
|||||
16 | Переезд метода Draw |
|
|||
На этом уроке мы начнём переносить функции для рисования фигур из основной программы в классы.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 20 мин. [Показать отчёт] Научился: Познакомился с понятием полиморфизм. Сложности: Самым сложным остаётся понять, как инициализируется графика... Комментарии: Продолжаем идти к самому страшному. |
|||||
17 | Переезд graph в базовый класс |
1 тест |
|||
На этом уроке мы напишем функции для рисования фигур во всех остальных классах.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Еще немного познакомился с наследованием. Сложности: Сейчас всё боле-менее понятно. Я имею ввиду именно то, что мы сделали. Только всё становится более сложным, более высокоабстрактным. Комментарии: Уже сложнее воспринимать фигуру как фигуру. Где то она объявляется, где - то инициализируется, откуда-то берет информацию, например о цвете.... Я не показываю на скриншотах каждый раз одних и тех же снеговиков. Ну нет в этом смысла. Код меняется. |
|||||
18 | Мощь полиморфизма |
2 теста |
|||
На этом уроке мы создадим в базовом классе функцию Draw(), и при её вызове через механизм полиморфизма будет запускаться созвучный метод нужного класса. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Еще немного познакомился с полиморфизмом. Сложности: Никаких трудностей нет, потому что ничего не понял))) Комментарии: Ну ладно, оверрайд это непонятно (ну как бы поняяяятно но не освоено, не могу сказать, в каком случае оно будет работать, а в каком - нет) Но вот какой интересный вопрос у меня возник... Да, допустим, базовый класс шэйп - абстрактный (по другому класс никакой фигуры и не назовешь). И функция дроу в других классах оверрайд и определяет себя по типу фигуры... Но класс форм то от него [шэйпа] не наследуется. Как же функция дроу в форм1 узнает, что в шейпе дроу абстрактна? Это главный вопрос к уроку, а так все норм. Наверное... |
|||||
19 | Спрайт для Снеговика |
1 тест |
|||
На этом уроке мы создадим новый класс - Sprite, в котором будет хранится список всех фигур, из которых строится графический объект, чтобы в основной программе мы могли оперировать сразу спрайтами, а не их составными элементами.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 20 мин. [Показать отчёт] Научился: Познакомился с еще одним способом использования List Сложности: Да вроде всё хорошо. Комментарии: Комментарий абстрактен. |
|||||
20 | Перемещение круга |
1 тест |
|||
На этом уроке мы начнём реализовывать идею перемещения спрайтов. Начнём, как обычно, с простого. Научимся перемещать один кружок. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Научился простейшему движению фигуры. Сложности: Понять отличие координат. Комментарии: Вроде бы всё хорошо. Чует моё сердце, поворачивать и изменять размер мы уже не будем. ( |
|||||
21 | Перемещение других фигур |
2 теста |
|||
На этом уроке мы переделаем метод Draw() для остальных фигур - Line и Box(). Наша программа теперь по нажатию кнопочки будет перемещать сразу три фигурки. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 15 мин. [Показать отчёт] Научился: Перемещать несколько фигур. Сложности: Всё просто. Комментарии: Нетерпится узнать, как перемещать спрайт. |
|||||
22 | Перемещение Снеговиков |
1 тест |
|||
На этом уроке мы научим перемещаться целых снеговиков. Для этого нам не нужно будет менять метод Draw(), мы воспользуемся полиморфизмом! Отчёт отправил: 1901. Neverwinter 2 Выполнено за 20 мин. [Показать отчёт] Научился: Познакомился с перемещением спрайта Сложности: На базе понятого предыдущего всё текущее понятно. Комментарии: Очень надеюсь, что мы продолжим, тем более что видео обещает это) |
|||||
23 | ПОЛУФИНАЛЬНЫЙ УРОК. |
без видео |
|||
На этом первая часть видеокурса "Теория ООП" закончилась. Пожалуйста, напиши отзыв об этом курсе, что тебе понравилось, что узнал нового, что можно было бы сделать лучше, оправдал ли курс твои ожидания. Приложи своё фото и напиши своё имя-фамилию. (видео в этом уроке нет) Отчёт отправил: 1901. Neverwinter 2 Выполнено за 45 мин. [Показать отчёт] Научился: Продолжил тренироваться делать видео-отчеты. Сложности: Записать нормально, без слов паразитов, без тупого гундения обо всём на свете. (конеееечно, не факт, что я всё убрал, но поверьте, это 3й вариант, и он гораздо лучше чем первый) Комментарии: SHOW MUST GO ON!!! Видеообзор: http://www.youtube.com/watch?v=uhhTl9-u4iM |
|||||
24 | Интерфейс. Зачем он нужен. |
1 тест |
|||
На этом уроке я объясню своими словами, что такое интерфейс. Мы поговорим об игре "Голя" или "Сифа" или "Вода", о том, кто в неё может играть, и что делать тем, кто не знает правила игры. В конце урока мы создадим наш интерфейс. Правила игры, для тех, кто не знает: Выбирается ведущий. Его цель - догнать и дотронуться до кого-либо из участников. Цель остальных - не допустить этого. Когда ведущий дотронется до кого-либо (заголит) - ведущим становится новый участник. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 20 мин. [Показать отчёт] Научился: Познакомился с понятием интерфейс на английском языке. Сложности: Ничего. Комментарии: Интерфейс это "междумордие". |
|||||
25 | Интерфейс. Правила игры. |
1 тест |
|||
На этом уроке мы поговорим о правилах игры в догоняшки. На прошлом уроке мы выясняли, что должны уметь делать игроки. На этом уроке мы начнём писать класс, в котором опишем конкретные правила нашей игры. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Добавлению заглушек на непрописанные методы. Сложности: Ничего. Комментарии: Даже не знаю, что тут прокомментировать... На вебинаре всё это тяжелее воспринимать... Вечером (а тем более ночью!!)). Щас вроде как даже по лучше идет. |
|||||
26 | Интерфейс. Алгоритм игры. |
|
|||
На этом уроке мы допишем класс GameCatch. Напишем реализацию методов FindNewLeader() и SetNewLeader(). Ваша задача - подумать и написать, что нужно ещё сделать, чтобы можно было начать играть в эту игру. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Вспомнил, в каком случае пишется return. Сложности: Ничего. Комментарии: Чтобы играть в игру надо кучу всего еще сделать. Арену. Реализовать функции на русском которые... вобщем много. |
|||||
27 | Интерфейс. Создаём кружок. |
|
|||
На этом уроке мы создадим объект для нашей игры - Кружок! У кружочка есть координаты центра, радиус и цвет. Цель урока - создать класс Circle.cs Отчёт отправил: 1901. Neverwinter 2 Выполнено за 15 мин. [Показать отчёт] Научился: Продолжаю повторять изученное. Сложности: Ничего. Комментарии: void - это тип данных, множество значений которого пусто. Что такое "геттер" ? ( который в замен {get; private set;} ) |
|||||
28 | Интерфейс. Площадка для игры. |
1 тест |
|||
На этом уроке мы начнём создавать класс Arena, который создаст поле для игры и реализует методы для отображения объектов на экране. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 20 мин. [Показать отчёт] Научился: Узнал некоторые тонкости использования слова this. Сложности: this.picture.Image - добавление this сюда было самым сложным. (точнее говоря, понимание этого ) Комментарии: Арена - класс для управления нашим полем (размеры и обновление). |
|||||
29 | Интерфейс. Кружок на площадке. |
1 тест |
|||
На этом уроке мы допишем класс Arena, реализуем методы Show(Circle), Refresh(), static NewCircle(). Всё готово к созданию кода для отображения кружка из класса Form1.cs! Отчёт отправил: 1901. Neverwinter 2 Выполнено за 20 мин. [Показать отчёт] Научился: Мы продолжаем. Сложности: Ничего. Комментарии: Если бы у меня не было волшебной программки, фиг бы я сделал второй скрин. |
|||||
30 | Интерфейс. Запускаем кружки на площадку! |
3 теста |
|||
На этом уроке мы настроим нашу форму, напишем несколько волшебных строчек, и ... программа заработает!!! У нас будет много-много кружков на экране 8-о Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Отображать кружки на экране. Сложности: Все хорошо. Комментарии: Интересный рандом... некоторые зоны по несколько кружков друг в друге, а некоторые (в центре парочка) совсем пустые... |
|||||
31 | Интерфейс. Кружок хочет играть. |
2 теста |
|||
На этом уроке мы унаследуем кружок от интерфейса Игрок. Теперь для запуска программы нам придётся реализовать методы из его интерфейса. В этом уроке мы реализуем методы Голя() и НеГоля(). Отчёт отправил: 1901. Neverwinter 2 Выполнено за 15 мин. [Показать отчёт] Научился: Продолжаю знакомиться с интерфейсом. Сложности: Ничего. Комментарии: Чтобы сделать функцию беги, надо менять координаты центра. А для этого добавить таймер, функцию шаг.. ну вобщем много чего)) |
|||||
32 | Интерфейс. Кружок готов к игре! |
1 тест |
|||
На этом уроке мы допишем методы Игрока в классе Circle. Реализуем метод Беги() и Поймал(), и даже исправим недочёты в описании интерфейса (!!). В конце урока я ответил на многочисленные вопросы участников. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Познакомился с тонкостями использования слова this. Сложности: Понять ЭТО: return Cross(this, (Circle)obj); Комментарии: Всего то оказалось что слово this голяком указывает на текущий кружок. На текущий экземпляр объекта точнее. Но тогда ночью это с большим трудом доходило. |
|||||
33 | Интерфейс. Кружочки гоняются друг за другом. |
1 тест |
|||
На этом уроке мы добавим в форму класс GameCatch, Разместим таймер и наконец-таки запустим нашу игру - Шарики начнут гоняться друг за другом! Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Запускать шарики!!! Сложности: Узнать, почему за экран вылетают. Дело в функции Беги() класса Circle. Комментарии: Переголение можно убрать, добавив задержку после загаливания. Например так. |
|||||
34 | Интерфейс. Изменяем правила игры. |
1 тест |
|||
На этом уроке мы добавим в правила игры задержку после получения Голи. Ведущий будет считать до 10, и только потом сможет голить других. Твоя задача - придумать новую игру, в которую смогут играть Игроки, то есть объекты, которые умеют делать то, что описано в интерфейсе Игрок. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 20 мин. [Показать отчёт] Научился: Останавливать лидера. Сложности: Пока всё хорошо. Сейчас они уже не дёргаются так рандомно, как на вебинаре))) Точнее сказать, как тогда ночью! Комментарии: На счет новой игры... Как мы и предлагали на вебинаре... зомби мооод!!!! (надеюсь Оля знает правила) ))) переменную MaxSkipSteps сделал равной 20. Сделал так, чтобы шарики меньшего размера двигались быстрее. |
|||||
35 | Интерфейс. Создаём новую игру. |
|
|||
На этом уроке мы начнём делать новую игру - Вирус. Смысл игры подробно рассказан на видео. Цель урока - создать класс GameVirus и реализовать методы GameViurs(), AddGamer(), Step(), RunAll(). Также придумать и написать словами алгоритм методов SetNewVirus(Игрок) и FindNewVirus(). Отчёт отправил: 1901. Neverwinter 2 Выполнено за 15 мин. [Показать отчёт] Научился: Не стоит наследовать то что наследовать не стоит. Сложности: Мы продолжаем. Комментарии: На счет SetNewVirus(Игрок) и FindNewVirus() чет даже нет никаких идей. Ну может устал просто, 4й урок подрят))) Пойду положу карбонат. |
|||||
36 | Интерфейс. ФИНАЛЬНЫЙ УРОК. |
|
|||
На этом уроке мы допишем последние две функции и надолго залипнем в экран, наблюдая за новой игрой для наших кружков, как вирусная эстафета может быстро передаваться, особенно, когда игроков очень много. В комментариях написать свой отзыв об этой серии уроков. Следующие уроки не обязательны для выполнения. Я предупредил. Какой курс ты будешь проходить следующим? Отчёт отправил: 1901. Neverwinter 2 Выполнено за 1 час. 15 мин. [Показать отчёт] Научился: На примерах новых игр удалось глубже понять, что такое интерфейс. Теперь есть база для расширения своих познаний. Сложности: Вообще я тут стал смотреть смотреть смотреть на код код код... И вижу что я не всё понимаю. Например gamers.Add(gamer); - команда добавляет нового игрока... А какого? Как это узнать? Что изначально в переменной gamer? причем эта переменная типа "Игрок" то есть типа интерфейс. Я так подозреваю, что я не знаю какое-то универсальное свойство списка. Но если это не так, поправьте меня, то есть если где то в программе мы это оговариваем особо. Комментарии: Скриншотов программы не будет, потому что есть видео. Видеообзор: https://youtu.be/mXdsRztfQK8 |
|||||
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 Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Добавлять новый класс с интерфейсом. Сложности: Найти ошибку в строке foreach (Box obj in game.gamers) arena.Show(box); Комментарии: Как то странно конструкторы сделаны. Нафига так? public Box(int sx, int sy) : this(x, y, w, h) { this.sx = sx; this.sy = sy; } public Box(int x, int y, int w, int h, int sx, int sy) { box = new Rectangle(x, y, w, h); color = Color.Green; } По моему логичнее было бы public Box(int sx, int sy) : this(x, y, w, h) { this.sx = sx; this.sy = sy; } public Box(int x, int y, int w, int h) { box = new Rectangle(x, y, w, h); color = Color.Green; } |
|||||
38 | Интерфейс. VIP. Пересечение прямоугольников. |
|
|||
На этом уроке мы допишем метод Box.Поймал() и запустим игру с квадратиками. Потом попробуем подружить квадратики с кружками, увидим, что это не так просто, да собственно и не нужно. Но возможно. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 20 мин. [Показать отчёт] Научился: Добавлять квадратикам способность поймать друг друга. Сложности: ((Box)that).box - вот это было самым сложным. Комментарии: (Box)that.box - почему так не работает? ((((( Вообще сейчас легче делать чем на вебинаре. Реально легче, всё с первого раза заработало. Никаких нервов. |
|||||
39 | Интерфейс. VIP. Тяжёлая дружба кругов и квадратов. |
|
|||
На этом уроке мы создалим "универсальный" класс Crosser, который сможет проверять на столкновение "любых" двух Игроков. Конечно не любых, а только двух наших Box и Circle. Это яркий способ, чего стоит избегать в программах. Потому что тут не добавляется универсальности, т.к. при добавлении новых объектов придётся дописывать кучу новых функций на сравнение. Самостоятельное задание - записать видеообзор своего проекта и рассказать, что такое Interface. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: Научился зомби-коду на примере сравнения слонов с конфетами!!! (пересечения кружочков и квадратиков) Сложности: Всё!!! Комментарии: Crosser crosser = new Crosser(); - что же получается? crosser - это экземпляр класса Crosser, но не объект? ( В нем ведь полей нет, одни методы - иными словами "он не существительное" ) На всякий случай прикладываю архив проекта, вдруг кому нужно. Будет храниться 30 дней ( начиная с 14.11.2015) Видеообзор: https://youtu.be/t2O6iCL7prM |
|||||
Итого: 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, Антон . |