# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 | Спрайт. Первая форма |
|
|||
На этом уроке мы создадим форму, немножко её оформим, выберем для неё иконку. Далее напишем функцию, которая рисует на экране две линии. Спрайт - это графический объект, состоящий из линий и кругов. На этом уроке мы создадим графический редактор для спрайтов. Этот редактор мы будем использовать для создания «героев» игр. В каждой игре у нас будет несколько спрайтов, которые будут создаваться, двигаться, исчезать по правилам той или иной игры. Отчёт отправил: 4342. Алекс Выполнено за 15 мин. [Показать отчёт] Научился: ------ Сложности: ------ Комментарии: ------ |
|||||
2 | Спрайт. Структура для линии |
|
|||
На этом уроке мы создадим структуру для хранения линий, массив палитры цветов и массив линий. И перепишем программу, чтобы она это всё выводило на экран. Отчёт отправил: 4342. Алекс Выполнено за 15 мин. [Показать отчёт] Научился: ---- Сложности: ----- Комментарии: ----- |
|||||
3 | Спрайт. Класс для графики |
|
|||
На этом уроке мы создадим класс Graph, куда перенесём всё хозяйство для рисования: структуру, графику, картинку, массив палитры. После этого создадим методы Draw() для рисования линий. Отчёт отправил: 4342. Алекс Выполнено за 12 мин. [Показать отчёт] Научился: ---- Сложности: ----- Комментарии: ------- |
|||||
4 | Спрайт. Класс для Спрайта |
|
|||
На этом уроке мы создадим класс Sprite, в котором будут храниться все линии каждого спрайта. В этом классе будут методы для добавления линий, а также, самое главное, для сохранения и загрузки Спрайта из XML файла. Отчёт отправил: 4342. Алекс Выполнено за 24 мин. [Показать отчёт] Научился: повторил Сложности: сложно не было Комментарии: Узнаю паттерн MVC. Становится всё интересней. |
|||||
5 | Спрайт. Рисуем линии мышкой |
|
|||
На этом уроке мы начнём создавать редактор, наконец-таки. Использую мышку можно будет рисовать линии, которые будут добавляться в наш спрайт. Отчёт отправил: 4342. Алекс Выполнено за 40 мин. [Показать отчёт] Научился: Недавно код писал, так в событии мыши не догадался получить координаты через аргумент. Вместо этого огород городил по позиции курсора (Cursor.Position.X). Сложности: сложно не было Комментарии: нет |
|||||
6 | Спрайт. Панель инструментов |
|
|||
На этом уроке мы создадим панель инструментов с кнопками для переключения цвета, очистки экрана, отмены последнего действия. Отчёт отправил: 4342. Алекс Выполнено за 30 мин. [Показать отчёт] Научился: Повторил Сложности: сложно не было Комментарии: Все ок |
|||||
7 | Спрайт. Сериализация объекта |
|
|||
На этом уроке мы научимся сохранять и загружать объекты, используя технологию сериализации и десериализации. Отчёт отправил: 4342. Алекс Выполнено за 43 мин. [Показать отчёт] Научился: Этот урок затронул очень большой и востребованный пласт знаний - сериализацию и XML. Немного погуглил, немного почитал. Сделал сериализацию используя другой источник в инете. Работало нестабильно, глючило через раз, в файл периодически что то неправильное писалось, пока не переключил FileMod для потока на запись из CreateOrOpen в Create. Из полезного еще продолжил изучать работу с классами, предназначенными для взаимодействия с файловой системой. Сложности: особенно сложного ничего. Комментарии: Еще нового! |
|||||
8 | Аполлон. Главные герои |
|
|||
На этом уроке мы озвучим правила игры Аполлон. Выясним, какие у нас будут главные герои. Твоё самостоятельное задание - нарисовать на бумаге внешний вид игры со всеми главными героями. Как ты это себе представляешь. Отчёт отправил: 4342. Алекс Выполнено за 50 мин. [Показать отчёт] Научился: работе с посадочным модулем Аполлон Сложности: ... в один момент у нас лопнул балон с жидким кислородом. Нелегко в тесном модуле отстирывать штаны. Комментарии: нет |
|||||
9 | Аполлон. Законы физики |
|
|||
Корабль Аполлон прилуняется на Луну. На этом уроке мы рассмотрим упрощённую физическую модель этого процесса и выпишем все параметры и все формулы, которые будут управлять этим процессом. Отчёт отправил: 4342. Алекс Выполнено за 45 мин. [Показать отчёт] Научился: Повторил Сложности: Не было Комментарии: Замечаний нет |
|||||
10 | Аполлон. Плавное прилунение |
|
|||
На этом уроке мы допишем игру Аполлон. Свяжем класс логики с интерфейсом. Сделаем управление двигателем с помощью мышки. Добавим таймер, функцию отображения корабля. А также сообщение о конце игры и перезапуск игры. Отчёт отправил: 4342. Алекс Выполнено за 1 час. 35 мин. [Показать отчёт] Научился: прилуняться Сложности: прилуниться Комментарии: комментариев нет |
|||||
11 | Спрайт. Рисуем Аполлона |
|
|||
На этом уроке мы переделаем программу, чтобы удобно было рисовать ломанные линии. Добавим фоновый рисунок для его обведения. И в конце концов нарисуем Землю, вид из Космоса. Задание: Научить программу рисовать ломанные и нарисовать Землю, поверхность Луны, Ракету, Работающие двигатели, маленькую звёздочку. Отчёт отправил: 4342. Алекс Выполнено за 1 час. 45 мин. [Показать отчёт] Научился: рисовать круг линиями Сложности: рисовать круг линиями Комментарии: сегодня посмотрим, что из этого всего получится ))))))) |
|||||
12 | Аполлон. Graph и Sprite на Луне |
|
|||
На этом уроке мы внедрим созданные спрайты в написанную игрушку. Для этого мы добавим проект два класса из прошлых уроков - класс Graph и Sprite. Затем напишем метод загрузки всех спрайтов, и выведем один из них на экран. Задание наладить работу программы с предыдущими классами и уметь загружать подготовленные спрайты. Отчёт отправил: 4342. Алекс Выполнено за 30 мин. [Показать отчёт] Научился: Добавлять в солюшн классы другого неймспейса (и подключать) Сложности: не было Комментарии: нет |
|||||
13 | Аполлон. Финальное прилунение |
|
|||
На этом уроке мы изменим метод Draw таким образом, чтобы он принимал координаты размещения спрайта и его масштаб. Далее, напишем методы для отображения всех спрайтов. Подгоним значения, чтобы всё отображалось красиво. И запустим наконец-таки нашу красочную игру с посадкой корабля Аполлон на Луну. Ура! Отчёт отправил: 4342. Алекс Выполнено за 45 мин. [Показать отчёт] Научился: Сводить все воедино Сложности: не было Комментарии: нет |
|||||
14 | Полуфинальный урок |
|
|||
Задание: Записать видео обзор игры Аполлон. |
|||||
15 | Домино. Правила игры |
|
|||
Мы начинаем создание Домино-Пасьянса. Костяшки домино перемешиваются и выстраиваются на столе в пирамидку, вверху одна костяшка, внизу семь штук. Верхние и нижние открываются. Отчёт отправил: 4342. Алекс Выполнено за 22 мин. [Показать отчёт] Научился: повторил enum, поработал с условно-неравномерным массивом. Сложности: Не было Комментарии: Извините, доминошек нет. Не могу позволить себе задержку в связи с этим несущественным обстоятельством. Поэтому только код. |
|||||
16 | Домино. Перемешиваем плашки |
|
|||
На этом уроке мы напишем метод Start (), который перемешает вся плашки домино. Далее, продумаем список всех необходимых методов для класса Domino и реализуем самые тривиальные из них. Отчёт отправил: 4342. Алекс Выполнено за 35 мин. [Показать отчёт] Научился: Выносить все константы в конфигурационный файл. Был интересный момент (скорее в качестве взгляда под другим углом на проблему, но тем не менее) какие методы делаем private, а какие protected. Сложности: не было Комментарии: в данном месте замечаний нет |
|||||
17 | Домино. Динамическая пирамида |
|
|||
На этом уроке мы нарисуем пирамидку из доминошек. Для отображения каждой плашки используется Label. Label'ы мы будем создавать динамически, как в сказке. Отчёт отправил: 4342. Алекс Выполнено за 50 мин. [Показать отчёт] Научился: Повторил порйденное Сложности: В какой то момент при выводе массива лейблов на панель случился затык в понимании, почему же i и j меняются местами при определении координат лейбла. Пока не нарисовал , не разобрался в чем там дело. А дело в том, как мы двойной цикл задаем. Комментарии: Строго говоря, для соответствия массива доминошек нормальной системе координат нам нужно писать не for (int x = 0; x <= maxPoints; x++) for (int y = 0; y <= x; y++) map[x, y] = new Plate(x, y); А наоборот: for (int y = 0; y <= maxPoints; y++) for (int x = 0; x <= y; x++) map[x, y] = new Plate(x, y); Применять это как к логике , так и к графике. |
|||||
18 | Домино. Делегаты отображения |
|
|||
На этому уроке мы свяжем два класса - FormDomino и Domino через механизм делегатов. Наш делегат будет отвечать за отображение плашки. Отчёт отправил: 4342. Алекс Выполнено за 1 час. 05 мин. [Показать отчёт] Научился: Продолжил осваивать практическое применение События (event) Сложности: Собственно, применить событие Комментарии: Решил реализовывать все не через делегат, а через событие. Не то что бы это было принципиально разные вещи, но реализуются все равно немного иначе. Ну мне так захотелось. |
|||||
19 | Домино. Выбираем и убираем |
|
|||
На этом уроке мы допишем метод отображения плашки. Затем напишем важный метод OpenFreePlates(), чтобы после убирания старых плашек новые открывались. Закончим урок обработкой клика по каждой плашке - будем отмечать выделенные и убирать их, если сумма равна 12. Отчёт отправил: 4342. Алекс Выполнено за 1 час. 05 мин. [Показать отчёт] Научился: Продолжил учиться создавать единый алгоритм. Сложности: Узреть всю логику алгоритма целиком. Комментарии: Я восхищен. Нет, серьезно. Аккуратные, точные и коротенькие функции. Очень красивый алгоритм открытия hide-костяшек. Я бы там раза в три минимум больше говнокода навертел, если бы сам делал. Может тороплюсь, но не реализовали функцию сброса помеченных (mark) плашек (если сумма на них не удовлетворяет условию). Сейчас посмотрим, реализовано ли это в следующем уроке. |
|||||
20 | Домино. Ура! Победа! |
|
|||
На этом уроке мы допишем пасьянс из Домино. Напишем методы IsWinner() и IsLooser(). Добавим метки для оповещения о результате игры и попытаемся наконец-таки разложить этот пасьянс. Не забудьте добавить эту программу в своё портфолио! Внимание! В конце видео можно посмотреть на весь код целиком. Отчёт отправил: 4342. Алекс Выполнено за 2 час. 10 мин. [Показать отчёт] Научился: уффф... терпению Сложности: 1. Функции IsWinner, IsLooser Чувствуется, был уже поздний вечер. Функция получилась не такая изящная и несколько непонятная вначале. 2. Я снова для проверки победа/неудача реализовал событие. На победу срабатывало нормально, на поражение перманентный глюк. В конце концов победил. Работает. Комментарии: Откровенно говоря, увидев в начале какую задачу и какую игру мы будем решать был разорован. Домино? Скукотище! Ну ладн, решать то все равно надо. И надо сказать, мои ожидания полностью.... не оправдались. Урок получился удивительно интересный. Сам не знаю почему (тему то по прежнему скучно считаю :-)). Возможно, нестандартная математическая задача (по крайней мере, отличающаяся от ранее решаемых здесь), "скособоченный" массив, красивый и местами лаконичный алогоритм решения - вот в чем секрет. Получил реальное удовольствие от решения. |
|||||
21 | Спрайт. Рисуем плашки |
|
|||
На этом уроке мы будем рисовать плашки домино. Каждая состоит из двух частей, отдельно нарисуем восемь левых частей и столько же правых. Почему восемь? От пустышки до шестёрки, и оборотная сторона. Отчёт отправил: 4342. Алекс Выполнено за 30 мин. [Показать отчёт] Научился: рисовать я умел Сложности: )))) Комментарии: А не проще ли было боковые нарисовать сначала "кружочки", и для одних и тех же кружочков просто рисовать контурные линии плашки (то слева, то справа)? Рисовать в разы меньше. |
|||||
22 | Домино. Отображение плашки |
|
|||
На этом уроке мы откроем проект Домино, добавим в него два класса - Graph и Sprite, и создадим метод для рисования плашки домино. Нам придётся, как и в Аполлоне, доработать методы Draw(). В конце урока мы загрузим файлы спрайтов в ресурсы и научим статический метод Load() загружать их их массива байт, из строки символов. Это добавление делать по желанию. Отчёт отправил: 4342. Алекс Выполнено за 40 мин. [Показать отчёт] Научился: повторил Сложности: не сложное, но требующее внимания - десериализация из бинарного файла Комментарии: нет |
|||||
23 | Домино. Двойной спрайт |
|
|||
На этом уроке мы создадим класс SpriteDomino, в котором будем хранить обе части плашки домино в виде спрайта. В этом классе будет конструктор и методы Open() / Hide(), которые будут пересоздавать спрайты по мере необходимости. Дальше нужно будет в классе Graph написать метод Draw() для рисования нашей доминошки и убедиться, что это всё работает. Отчёт отправил: 4342. Алекс Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Выявлять ошибки Сложности: Поймал ошибку нулл референз иксепшн, час искал в чем дело. Комментарии: Нет |
|||||
24 | Домино. Анимация спрайта |
|
|||
На этом уроке мы создадим анимацию спрайтов. Для этого нам понадобится таймер, несколько переменных, и возможность стирания нарисованных спрайтов. Отчёт отправил: 4342. Алекс Выполнено за 20 мин. [Показать отчёт] Научился: повторил пройденное Сложности: сложно не было Комментарии: замечаний нет |
|||||
25 | Домино. Подъём переворотом |
|
|||
На этом уроке мы реализуем ещё два вида анимации. 1. Выбор плашки, она будет "дрожать" на месте 2. Переворот плашки, она будет сжиматься и разжиматься. Отчёт отправил: 4342. Алекс Выполнено за 50 мин. [Показать отчёт] Научился: Масштабировать спрайт Сложности: Сложно не было Комментарии: Прикольно получилось |
|||||
26 | Домино. Базовый класс Анимаций |
|
|||
На этом уроке мы наведём порядок в нашем проекте. Квинтессенцию анимации оформим отдельным классом - Animate. Уберём всё лишнее из класса Graph и основного модуля. И сделаем, чтобы всё заработало - пока статичное отображение спрайта через экземпляр класса Animate. Отчёт отправил: 4342. Алекс Выполнено за 35 мин. [Показать отчёт] Научился: Узнал, что константы оказывается сродни static членам - обращаться к ним нужно не через имя экземпляра, а по имени класса. Сложности: сложно не было Комментарии: Интересный замут получается с классом Animate. Сейчас посмотрим в следующем уроке, как реализуется в стиле чистого ООП наследование от этого класса, а так же переопределение виртуального метода. |
|||||
27 | Домино. Три наследника Аниматора |
|
|||
На этом уроке мы реализуем все способы анимации через созадние классов наследников от Animate. У нас будет три класса: AnimateMove, AnimateMark и AnimateTurn. Отчёт отправил: 4342. Алекс Выполнено за 45 мин. [Показать отчёт] Научился: На практике пощупал virtual - override. Продолжил щупать наследование и полиморфизм. Сложности: Сложно не было Комментарии: Все ок. |
|||||
28 | Домино. Пирамида из анимашек |
|
|||
На этом уроке мы добавим ещё парочку виртуальных функций в базовый класс Animate, чтобы их можно было вызывать без явного указания типа. Но самое главное - мы создадим матрицу "анимашек", инициализируем её экземплярами базового класса и выведем это всё на экран в виде пирамиды. Отчёт отправил: 4342. Алекс Выполнено за 18 мин. [Показать отчёт] Научился: повторил Сложности: не было Комментарии: нет |
|||||
29 | Домино. Rolling Stones |
|
|||
На этом уроке мы сделаем анимацию раскладывания всех плашек домино на столе. Для этого напишем метод RollDomino(), а ещё нам потребуется отлавливать момент, когда все доминошки уже выложены на стол. Для этого мы добавим поле string mode, чтобы в таймере отловить этот момент. Отчёт отправил: 4342. Алекс Выполнено за 25 мин. [Показать отчёт] Научился: Повторил Сложности: Сложно не было Комментарии: комментариев, отзывов, вопросов, замечаний и лишних денег нет. |
|||||
30 | Домино. Наведение порядка |
|
|||
На этом уроке мы наведём порядок на форме, избавимся от наследия Label [,], уберём ненужные методы. Потом, на 10-ой минуте мы приступим к открытию плашек на первом и последнем ряду пирамиды. Отчёт отправил: 4342. Алекс Выполнено за 35 мин. [Показать отчёт] Научился: Продолжил учиться анализу готовой программы. Сложности: Сложно не было. Комментарии: Замечаний нет. |
|||||
31 | Домино. Финальный аккорд |
|
|||
На этом уроке мы научим программу выбирать плашки по щелчку мышки, убирать с экрана верные пары, и сыграем несколько раз до полного успеха :) Отчёт отправил: 4342. Алекс Выполнено за 35 мин. [Показать отчёт] Научился: продолжил учиться. Сложности: Сложно не было. Комментарии: Уфффф...... Осилил. ))))) Архив созданных по курсу "Игры со спрайтами" вышлю на имейл. |
|||||
32 | ФИНАЛЬНЫЙ урок |
|
|||
Задание: Записать видео обзор игры Пасьянс из домино. |
|||||
33 | VIP урок. Телефон по TCP/IP протоколу |
|
|||
На этом видеоуроке мы создадим три класса, которые удобно использовать для передачи данных между двумя компьютерами. |
|||||
Итого: 33 видеоурока |
12 час. 26 мин. |
28 чел. | |||
Финалисты: Олюшка, Руслан, Екатерина, Иван, Андрей Поляков, Дмитрий, Елена, Ильшат, Фомичева Наталья, Александр, Владимир, Никита, Сергей Сергеевич, Артём, Мариша , Михаил Ермишин, Максим Лапшинов, Максим, Электрон, Tekashnik, Новопашин Владимир, Dimon, chokayes, Николай Денисов, Денис, Yefim, Кирилл, Anatoli . |