Изучение c# на примерах

Формула программиста

основатель — Волосатов Евгений Витольдович

Клуб формулистов - Ежемесячная подписка

Вступление в Клуб Формулистов на выгодных условиях для НОВЫХ участников.

После взноса  999  499 руб. вы получите подписку
в Клуб Формулистов на 30 дней и 256 байт для быстрого старта.
Байты используются для открытия более одного урока в день, по 50 байт за урок.

Стоимость 1 дня за первый месяц: всего 16 рублей.

Первый взнос - 499 руб./30 дней.

Через 30 дней будет списано 3,000 2,400 руб.
за продление подписки в Клуб на 30 дней + подарок 512 байт.

Так будет продолжаться каждые 30 дней, пока вы не отмените подписку.
Средства будет автоматически считываться с вашей карты.
Вы в любой момент сможете отказаться от продления Клуба.

Только ДО КОНЦА НЕДЕЛИ -
-50% скидка на первый взнос, всего 499 (вместо 999) рублей!
-20% скидка на ЕЖЕМЕСЯЧНЫЙ платёж!
Всего 2400 руб/месяц (вместо 3000 руб/месяц), или 80 руб./день - цена чашки кофе.


Стоимость 1 дня: 80 руб.

Хочу вступить!

Также есть другие варианты оплаты участия в КФ:

Билет в клуб формулистов на ...
30+ дней | 60 дней | 150 дней | 380 дней | 1000 дней

Внимание!
Стоимость участия в Клубе формулистов увеличивается 1 числа каждого месяца на 100 рублей.
При оформления подписки стоимость остаётся постоянной, пока подписка не будет отменена.







Первый взнос - 499 руб./30 дней + 500 байт.
Последующие взносы - 3,000 2400 руб./месяц + 512 байт.



Список уроков | фото | видео

# Название видеоурока Видео / Тесты Решило Рейтинг Доступ
1 FREE Инкапсуляция мечты 00:09:02
2 теста
240 чел. ★ 4.9 Done
  Курс по теории Объектно-ориентированного программирования.
С нуля создаётся проект по рисованию различных геометрических фигур,
которые потом объединяются в спрайты, взаимодействуют друг с другом.

Во время создания проекта постоянно применяется рефакторинг кода,
при этом демонстрируются приёмы Объектно-ориентированного программирования.

Во второй части курса мы проработаем понятие Интерфейса.

Выдержка из отчёта Ларисы по завершению курса.
1) Получила представление о методах ООП - инкапсуляции, полиморфизме и наследовании.
Эти три "кита" позволяют изменять и усложнять программы, добавляя в них новые возможности;
2) Научилась рисовать простые геометрические фигуры;
3) Создавать базовые и производные классы;
4) Создавать структуры и работать с пикселями;
5) Создавать фигуры из массива простых фигур в том числе и в цвете;
6) Передвигать простую фигуру;
7) Создавать класс объектов Sprite, являющийся производным от базового абстрактого класса Shape,
а в нем список List, который содержит произвольное число фигур и функцию, которая добавляет фигуру,
а также метод Move, который двигает её;
8) Освоила BreakPoint, который дает возможность проследить переходы в классе и связи между классами;
9) Познакомилась с абстрактыми и виртуальными методами в абстрактном базовом классе и методами override в производных классах. Совокупность этмх методов позволяет передвигать сложные фигуры как целое.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 41 мин. [Показать отчёт]
Научился: Инкапсуляция - "защита от дурака". Поскольку пользователю не везде надо давать сунуть свой нос, часть функционала этой самой инкапсуляцией перекрывается от глаз и ручек пользователя. Сохранность неизменными свойств объекта - цель инкапсуляции. Если в кабину пилота будет заходить любой желающий, самолет далеко не улетит. 
2 Урок рисования 00:08:10
1 тест
202 чел. ★ 4.9 Done
  На этом уроке мы нарисуем домик из двух линий и прямоугольника.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 34 мин. [Показать отчёт]
Научился: DrawLine(Pen, x1(Int32), y1(Int32), x2(Int32), y2(Int32)) - Проводит линию, соединяющую две точки, задаваемые парами координат. DrawRectangle(Pen, x(Int32), y(Int32), ширина(Int32), высота(Int32)) - Рисует прямоугольник, определяемый парой координат, шириной и высотой. Координаты начинаются от верхнего левого угла и растут вниз и вправо. 
3 Первый класс 00:09:53
2 теста
189 чел. ★ 4.9 Done
  На этом уроке мы создадим первый класс - Line.
И перепишем программу, чтобы она работала точно так же.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 38 мин. [Показать отчёт]
Научился: Применение классов и выделение унифицированных методов повышает гибкость кода для масштабирования программы, применения её частей в библиотеках для стороннего софта. 
Сложности: Не напороться на топляк в темноте после заката. 
4 Второй класс 00:09:13
181 чел. ★ 4.9 Done
  На этом уроке мы создадим второй вспомогательный класс - Box.
Порассуждаем на тему "наследования" и переделаем программу.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 2 час. 42 мин. [Показать отчёт]
Научился: Наследование целесообразно, допустимо и приветствуется лишь в случае, если "наследник" ЯВЛЯЕТСЯ и "родителем". "Наследник" AUDU A6 QUATTRO ACE 140HP является и "родителем" автомобилем. "Наследник" TISSOT VINTAGE 18K GOLD  является и "родителем" швейцарские часы. И обратно, "каска" не является наследником "головы", ибо каска не является головой и не гарантирует её наличие. 
5 Круглый класс 00:08:10
179 чел. ★ 4.9 Done
  Создадим класс для задания окружности - Circle.
Дополним окружность в центре домика.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 33 мин. [Показать отчёт]
Научился: DrawEllipse risuet figuru po kordinatam ot levogo verkhnego ugla do pravogo nizhnego ugla. x1, y1 - leviy verh circle.width & circle. height - opredelyayut niz praviy niz. 
6 Структура пикселя 00:10:55
168 чел. ★ 4.9 Done
  Создадим структуру для задания координат пикселя
и перепишем классы и программу с её использованием.
Почитать об отличии класса от структуры:
http://www.cyberforum.ru/csharp-beginners/thread442631.html
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 5 час. 1 мин. [Показать отчёт]
Научился: переделали привязку на местности с координат в классе формы на построение фигуры через структуру Pixel. Структура - это урезанный в свойствах класс. 
7 Структура vs Класс 00:25:05
1 тест
159 чел. ★ 4.9 Done
  На этом дополнительном уроке наглядно демонстрируются главные отличия между struct и class в языке C#.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 26 мин. [Показать отчёт]
Научился: при использовании структуры в метод передается копия объекта, при использовании класса в метод передается линк на кучу, где хранятся значения параметров. 
8 Пиксели для классов 00:14:44
2 теста
154 чел. ★ 4.9 Done
  На этом уроке мы продолжим внедрение структуры Pixel в наши классы.
Будем её использовать для хранения координат внутри класса.
Также избавимся от повторяемого кода внутри конструкторов.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 40 мин. [Показать отчёт]
Научился: добавили структуру Pixel в каждый класс вместо координат x и y. 
9 Расстояние между пикселями 00:12:12
2 теста
152 чел. ★ 4.9 Done
  Как вычислить расстояние между двумя пикселями?
Есть специальная формула, которую можно разместить в структуру Pixel.
Теперь мы сможем создать ещё один конструктор окружности по центру и любой точке на окружности.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 53 мин. [Показать отчёт]
Научился: в структуре Pixel добавили метод расчёта радиуса distance и использовали его в классе Circle 
Сложности: Io so gli odori dei mestiery. 
10 Цветные карандаши 00:14:54
1 тест
149 чел. ★ 4.9 Done
  Возьмём цветные карандаши и будем раскрашивать наш домик.
Создаём новые классы для цветны линий, окружностей и прямоугольников.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 30 мин. [Показать отчёт]
Научился: ogni costruttore di una classe deve avere un nome di classe. In ogni designer di colori aggiunto: annuncio a matita colorata, Aggiunta di driver di sistema cancellato inutilizzato In ogni costruttore, il colore viene aggiunto ai parametri Un costruttore di matite colorate è stato aggiunto al metodo di inscatolamento. Nella classe del modulo è stata aggiunta la creazione di una seconda casella. Difetti corretto, scatola disegnata! 
11 Рисуем Снеговика 00:14:40
148 чел. ★ 4.9 Done
  На этом уроке мы создадим ... Снеговика (спрайт) —
более сложную фигуру, которая состоит из других фигур.
В дальнейшем мы будем работать с такими спрайтами,
перемещать их, поворачивать, масштабировать,
а пока ... мы просто нарисуем Снеговика.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 6 мин. [Показать отчёт]
Научился: Sprite è una figura composta da sotto-figure. 
12 Второй Снеговик 00:09:46
1 тест
148 чел. ★ 4.9 Done
  На этом уроке мы создадим второй спрайт -
ещё одного снеговика, но разноцветного.

Вопрос для перехода к следующему уроку:
Что нужно изменить в этой программе, чтобы мы могли
а) перемещать снеговика;
б) поворачивать снеговика;
в) изменять размер снеговика.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 46 мин. [Показать отчёт]
Научился: а) перемещать снеговика - delta+\- x & delta+\- y; б) поворачивать снеговика - принять некую точку за центр вращения и рассчитывать изменение по х и изменение по у; в) изменять размер снеговика - delta*\ x & delta*\ y; 
Сложности: поворачивать снеговика 
13 Богатое наследство 00:12:53
2 теста
147 чел. ★ 5 Done
  Наконец-таки мы возьмёмся за наследование.
Убираем повторяющийся код из цветных классов.
Осмысливаем значение термина «наследование».
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 32 мин. [Показать отчёт]
Научился: : Circle дописанное к названию класса равно присобачиванию описываемому классу всего кода, прописанного в классе Circle. Удобно! : base (center, radius) - вызов базового класса с передачей ему параметров center и radius. Наследование - есть неявное присутствие в классе наследнике кода класса родителя. Чикнул двоеточие и название класса Родителя - считай приделал весь код парой движений. 
14 Фигуральный базовый класс 00:10:56
145 чел. ★ 5 Done
  Очень хочется все элементы снеговика поместить в один массив.
Сейчас это сделать нельзя - придётся делать три массива - для кругов, для линий, для боксиков...
Решение гениальное - создаём базовый класс фигуры - Shape, создаём массив фигур, и все фигуры помещаем в этот массив!
После размещения фигур в массив можно видеть, что каждая фигура в нём хранится не как фигура, а под своим типом.
А все под одной крышей они могут находится потому что все они - фигуры, так как унаследованы от Shape.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 12 час. 29 мин. [Показать отчёт]
Научился: ha creato una classe vuota e ha aggiunto un'eredità da essa, come dalla classe base, a tutte le classi che disegnano un pupazzo di neve. class Box : Shape class Circle : Shape class Line : Shape Le classi di matite colorate non devono essere modificate perché sono gli eredi degli eredi elencati sopra.  
Сложности: Come disegnare non lo so ancora. 
15 Приведение с мотором 00:11:51
1 тест
145 чел. ★ 4.9 Done
  На этом уроке мы реализуем метод Draw (Shape shape) через серию условных операторов.
А также создадим функцию для рисования целевого спрайта (снеговика) - Draw (Shape [] shapes).
Результат работы программы не изменяется, а вот содержимое кода всё более и более облагораживается.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 36 мин. [Показать отчёт]
Научился: Draw ((Line)shape); == la variabile shape viene convertita nel tipo Line. L'interruttore non è adatto, poiché l'interruttore è di tipo Type, non utilizzato nell'interruttore. Pixel position; - È a chilometro zero nel sistema di movimento del pupazzo di neve. 
Сложности: Con gratitudine e amore per prendere la lezione che mi ha insegnato Maxim Lapshinov. Redid, come promesso il codice del programma in serata. È vero, la lezione precedente era già stata accettata dai cadetti con il voto, le modifiche sono state applicate in questo rapporto. Tutto felice giorno dell'insegnante! 
16 Переезд метода Draw 00:11:54
143 чел. ★ 4.9 Done
  На этом уроке мы начнём переносить функции для рисования фигур из основной программы в классы.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 40 мин. [Показать отчёт]
Научился: 1. spostato il metodo di disegno Disegna dalla classe Form.cs alla classe Circle.cs e cancellato i riferimenti all'oggetto, poiché è lo stesso del nome della classe. Il nome dell'oggetto è uguale al nome della classe - non specificare! 2. Aggiunto tavolozze di annunci e matita protette. 3. Aggiunto usando System.Drawing; 4. Creato un metodo per l'installazione (inizializzazione) della grafica. 5. Rimosso dal programma principale il metodo di Draas. 6. Aggiunta una chiamata al metodo Draw dalla classe Circle nella classe Form. 
17 Переезд graph в базовый класс 00:13:10
1 тест
142 чел. ★ 5 Done
  На этом уроке мы напишем функции для рисования фигур во всех остальных классах.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 26 мин. [Показать отчёт]
Научился: 1. Объявления protected Graphics graph; и protected Pen pen; перенесли из класса Циркл в класс Шейп для организации доступа к инициализации палитры и карандаша из любого класса 2. Инициализирующие методы public void SetGraphics (Graphics graph) и public void SetPen (Pen pen) также переместили из Circle в Shape 3. Снова добавили using System.Drawing; для получения доступа к добавленному. 4. private void Draw(Box box) перенесли из класса Form1 в класс Box 5. Опубликовали этот метод заменив private на public 6. Убрали передачу параметров в метод Draw 7. Изменили метод Draw в классе Form1 для вызова Draw из класса Box. 8. Инициализацию палитры  карандаша сделали циклом. 9. Аналогично изменили рисование Line 10. Перенесли инициализацию карандаша в класс Shape с присвоением цвета по умолчанию Черный. 11. Убрали метод SetPen Итог: перенесли методы рисования элементов по классам. 
Сложности: 1. Da dichiarazioni protected Graphics graph; и protected Pen pen; trasferito dalla classe del Circle alla classe Form1 per organizzare l'accesso all'inizializzazione della tavolozza e della matita di qualsiasi classe 2. Metodi di inizializzazione public void SetGraphics (Graphics graph) e public void SetPen (Pen pen) anche spostato da Circle a Shape 3. Aggiunto di nuovo usando System.Drawing; per accedere all'aggiunta. 4. private void Draw (Box box) è stato trasferito dalla classe Form1 alla classe Box 5. Ha pubblicato questo metodo sostituendo privato con pubblico 6. Rimosso i parametri di passaggio al metodo Draw. 7. Modificato il metodo Draw nella classe Form1 per chiamare Draw dalla classe Box. 8. L'inizializzazione della tavolozza delle matite ha fatto un ciclo. 9. Allo stesso modo ha cambiato la linea di disegno. 10. Trasferisci l'inizializzazione della matita alla classe Shape con l'assegnazione del colore predefinita Nero. 11. Rimosso il metodo SetPen Bottom line: spostato i metodi di disegno degli elementi per classe. 
18 Мощь полиморфизма 00:09:01
2 теста
138 чел. ★ 5 Done
  На этом уроке мы создадим в базовом классе функцию Draw(),
и при её вызове через механизм полиморфизма будет запускаться созвучный метод нужного класса.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 42 мин. [Показать отчёт]
Научился: override - модификатор для переопределения виртуальных методов (virtual), свойств и событий базового класса. virtual - ключевое слово, применяемое к методам, свойствам и событиям, которые могут быть переопределены (override) в производных классах. Если класс абстрактный, то в нём НЕЛЬЗЯ СОЗДАТЬ ЭКЗЕМПЛЯР КЛАССА. 
19 Спрайт для Снеговика 00:12:28
1 тест
137 чел. ★ 5 Done
  На этом уроке мы создадим новый класс - Sprite, в котором будет хранится список всех фигур, из  которых строится графический объект, чтобы в основной программе мы могли оперировать сразу спрайтами, а не их составными элементами.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 37 мин. [Показать отчёт]
Научился: при использовании КОЛЛЕКЦИИ (в отличие от массивов), группа объектов в классе может динамически возрастать и сокращаться в соответствии с потребностями приложения.  
20 Перемещение круга 00:11:42
1 тест
136 чел. ★ 4.9 Done
  На этом уроке мы начнём реализовывать идею перемещения спрайтов.
Начнём, как обычно, с простого. Научимся перемещать один кружок.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 32 мин. [Показать отчёт]
Научился: Move (Pixel position) создали в базовом классе и обращаемся к этому методу из дочерних. Если начальные координаты отличные от нуля, то при изменении position дельта складывается с начальным значением. Учесть! 
21 Перемещение других фигур 00:08:37
2 теста
134 чел. ★ 5 Done
  На этом уроке мы переделаем метод Draw() для остальных фигур - Line и Box().
Наша программа теперь по нажатию кнопочки будет перемещать сразу три фигурки.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 6 мин. [Показать отчёт]
Научился: 1. В классе Form1 объявили два объекта: box класса Box и line класса Line. В методе Demo сконструировали new линию line класса Line по координатам. Вызвали метод SetGraphics для новосозданной линии. Нарисовали линию методом circle.Draw(); Запустили - не работает. Добавили перемещение линии методом Мув line.Move(new Pixel(100, 100)); Запустили - не работает. В классе Line отредактировали метод Draw добавив дельту position по икс и игрек так: graph.DrawLine(pen,                 begin.x + position.x, begin.y + position.y,                 ended.x + position.x, ended.y + position.y); Запустили - не работает. Поправили рисование линии методом circle.Draw(); на line.Draw(); Линия нарисована! 2. В методе Demo сконструировали new бокс box класса Box по координатам. Вызвали метод SetGraphics для установления палитры. Создали точку Pixel P = new Pixel(100, 100); забрав координаты из вызова метода circle.Move(P); Отредактировали вызов перемещения линии, бокса и окружности убрав там создания точек, заменив это на созданную выше точку Р. Вызвали метод рисования бокса box.Draw(); Исправили метод рисования добавив перемещения: graph.DrawRectangle(pen,                 corner1.x + position.x, corner1.y + position.y,                 width, height); Чупа-чупс нарисован. 3 Отредактировали метод buttonMoveMe_Click для перемещения всего набора фигур: Конструктор координаты вынесли в начало метода Pixel P = new Pixel(150, 200); Добавили вызовы метода перемещения и вызовы метода рисования для каждой фигуры. Чупа-чупс летает! 
22 Перемещение Снеговиков 00:10:48
1 тест
134 чел. ★ 4.9 Done
  На этом уроке мы научим перемещаться целых снеговиков.
Для этого нам не нужно будет менять метод Draw(),
мы воспользуемся полиморфизмом!
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 41 мин. [Показать отчёт]
Научился: организовали тандем методов override public void Move (Pixel position) класса Sprite.cs и virtual public void Move (Pixel position) класса Shape.cs для перемещения снеговиков. F11 - пошаговое исполнение в режиме отладки. Красную точку ставь левее номера строки. Суть полиморфизма - это способность объекта использовать методы производного класса, который не существует на момент создания базового. Методы, которые требуют переопределения - абстрактные. Объект абстрактного класса невозможно создать. Метод, переопределяемый в производном классе - виртуальный. В базовом абстрактном классе об этом методе нет никакой информации. 
23 ПОЛУФИНАЛЬНЫЙ УРОК. без видео
125 чел. ★ 4.9 Done
  На этом первая часть видеокурса "Теория ООП" закончилась.
Пожалуйста, напиши отзыв об этом курсе,
что тебе понравилось, что узнал нового,
что можно было бы сделать лучше,
оправдал ли курс твои ожидания.

Приложи своё фото и напиши своё имя-фамилию.

(видео в этом уроке нет)
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 25 мин. [Показать отчёт]
Научился: 1. Курс пролил свет на создание классов, создание методов с передачей в них параметров. Практиковались в создании объектов и размещении их на палитре в экранной форме. В процессе разработки перемещали симметричный код в отдельные методы, а то и классы, избавляясь тем самым от избыточности и повторений. Переопределяли методы, закрывали и открывали по необходимости доступ к классам или методам. Снеговики рисовались и перемещались. Нравится здесь необъяснимая способность Игромистра заствить учиться человека даже в 42 годика. А это оказалось нелегко, но возможно. Особенно выпукло наблюдаю эту борьбу на курсе СОЛО, к которому так и не подошел бы без пендаля от Игромистра. 2. Аз есмь Синицын Дмитрий Андреевич из города Кирова. Он же Хлынов, он же Вятка, он же Крутогорск из произведений Михаила Евграфовича Салтыкова-Щедрина, он же город Глупов из "Истории одного города" (местами очень забавное творение о жизни в дореволюционной России). 
24 Интерфейс. Зачем он нужен. 00:09:33
1 тест
122 чел. ★ 4.9 Done
  На этом уроке я объясню своими словами, что такое интерфейс.
Мы поговорим об игре "Голя" или "Сифа" или "Вода",
о том, кто в неё может играть, и что делать тем,
кто не знает правила игры.
В конце урока мы создадим наш интерфейс.

Правила игры, для тех, кто не знает:
Выбирается ведущий.
Его цель - догнать и дотронуться до кого-либо из участников.
Цель остальных - не допустить этого.
Когда ведущий дотронется до кого-либо (заголит) - ведущим становится новый участник.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 43 мин. [Показать отчёт]
Научился: Интерфейс - прокрустово ложе возможных действий лица, имеющего доступ к этому Интерфейсу. За пределы прописанного в Интерфейсе не выскочишь. Похоже на enum. 
25 Интерфейс. Правила игры. 00:12:23
1 тест
120 чел. ★ 5 Done
  На этом уроке мы поговорим о правилах игры в догоняшки.
На прошлом уроке мы выясняли, что должны уметь делать игроки.
На этом уроке мы начнём писать класс, в котором
опишем конкретные правила нашей игры.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 41 мин. [Показать отчёт]
Научился: private void FindNewLeader() - проверка на касание игроков, отметка Лидера(Голи) присваивается второму из коснувшихся. private void SetNewLeader(Игрок gamer) - присваивание метки Голя новому игроку. 
26 Интерфейс. Алгоритм игры. 00:07:48
119 чел. ★ 4.9 Done
  На этом уроке мы допишем класс GameCatch.
Напишем реализацию методов FindNewLeader() и SetNewLeader().
Ваша задача - подумать и написать, что нужно ещё сделать,
чтобы можно было начать играть в эту игру.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 23 мин. [Показать отчёт]
Научился: на форме надо создать палитру и объекты, которые и станут игроками. Для перемещения надо задействовать Таймер, как я предполагаю. 
27 Интерфейс. Создаём кружок. 00:08:36
117 чел. ★ 4.9 Done
  На этом уроке мы создадим объект для нашей игры - Кружок!
У кружочка есть координаты центра, радиус и цвет.
Цель урока - создать класс Circle.cs
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 19 мин. [Показать отчёт]
Научился: создали конструктор для кружка, но пока не вывели его на форму. Дальше будет создание палитры graph и реализация метода Draw. Я так думаю! 
28 Интерфейс. Площадка для игры. 00:11:58
1 тест
116 чел. ★ 5 Done
  На этом уроке мы начнём создавать класс Arena,
который создаст поле для игры и реализует
методы для отображения объектов на экране.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 31 мин. [Показать отчёт]
Научился: Arena класс требуется для организации площадки для игры во избежание разбегания кружков-снеговиков за пределы экранной формы в бесконечность. 
29 Интерфейс. Кружок на площадке. 00:11:49
1 тест
115 чел. ★ 4.9 Done
  На этом уроке мы допишем класс Arena,
реализуем методы Show(Circle), Refresh(), static NewCircle().
Всё готово к созданию кода для отображения кружка из класса Form1.cs!

Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 35 мин. [Показать отчёт]
Научился: для рисования эллипса (и круга соответственно) указывается не точка центра и радиус, как было бы логично, а координаты правого верхнего угла и левого нижнего угла.  
Сложности: допилить сегодня, 25 октября 2018 года, на сто первом году Великой Октябрьской Социалистической революции, сто уроков у Владимира Владимировича и узреть свой результат. 
30 Интерфейс. Запускаем кружки на площадку! 00:11:49
3 теста
115 чел. ★ 5 Done
  На этом уроке мы настроим нашу форму,
напишем несколько волшебных строчек,
и ... программа заработает!!!
У нас будет много-много кружков на экране 8-о

Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 33 мин. [Показать отчёт]
Научился: колдунство с передачей аргументов в методы начинает в башне обретать некие очертания. Но это до сих пор остаётся колдунством криптоосознаваемым. 
31 Интерфейс. Кружок хочет играть. 00:09:42
2 теста
114 чел. ★ 4.9 Done
  На этом уроке мы унаследуем кружок от интерфейса Игрок.
Теперь для запуска программы нам придётся реализовать
методы из его интерфейса.
В этом уроке мы реализуем методы Голя() и НеГоля().
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 25 мин. [Показать отчёт]
Научился: метод Беги будет реализован через цикл изменения координаты по sx, sy Метод Поймал - проверка на касание (совпадение координат с радиусом) с другим кружком. 
32 Интерфейс. Кружок готов к игре! 00:20:47
1 тест
113 чел. ★ 5 Done
  На этом уроке мы допишем методы Игрока в классе Circle.
Реализуем метод Беги() и Поймал(), и даже исправим
недочёты в описании интерфейса (!!).
В конце урока я ответил на многочисленные вопросы участников.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 0 мин. [Показать отчёт]
Научился: для запуска игры потребуется вдохнуть таймер (тикер). Здесь реализовали проверку на коллизию методом сравнения радиусов Лидера (Голи) он же Зыс, и кружка-жервы, оказавшегося рядом волею судеб. 
33 Интерфейс. Кружочки гоняются друг за другом. 00:11:53
1 тест
112 чел. ★ 5 Done
  На этом уроке мы добавим в форму класс GameCatch,
Разместим таймер и наконец-таки запустим нашу игру -
Шарики начнут гоняться друг за другом!
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 38 мин. [Показать отчёт]
Научился: В классе Arena добавили случайные изменения по осям абсцисс и ординат, на форму прикрутили таймер, в классе FormGame прописали метод для исполнения шагов кружками. 
34 Интерфейс. Изменяем правила игры. 00:10:22
1 тест
110 чел. ★ 5 Done
  На этом уроке мы добавим в правила игры задержку
после получения Голи. Ведущий будет считать до 10,
и только потом сможет голить других.
Твоя задача - придумать новую игру, в которую
смогут играть Игроки, то есть объекты, которые
умеют делать то, что описано в интерфейсе Игрок.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 39 мин. [Показать отчёт]
Научился: Реализовали обратный отсчёт от момента передачи Голи до момента, когда можно снова голить (обратно или другого кружка). Когда два кружка ехали рядом в одном направлении занятно наблюдать как раз в секунду их цвета менялись между собой. 
Сложности: Новая игра. Называется "Передайте за проезд". Набиваем полный автобус пассажиров и ставим задачу оплатить проезд. Маршрут передачи за проезд - в случайном порядке ))). Победа присуждается тому, чья монета первой достигнет водителя. Интрига в том, что каждый игрок обязан осуществить передачу монеты, но не обязан контролировать направление её движения. ЗЫ не забывать что это игра, а не натуральная маршрутка на Голутвин )) 
35 Интерфейс. Создаём новую игру. 00:12:31
108 чел. ★ 4.9 Done
  На этом уроке мы начнём делать новую игру - Вирус.
Смысл игры подробно рассказан на видео.
Цель урока - создать класс GameVirus и
реализовать методы GameViurs(), AddGamer(), Step(), RunAll().
Также придумать и написать словами алгоритм
методов SetNewVirus(Игрок) и FindNewVirus().
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 31 мин. [Показать отчёт]
Научился: SetNewVirus(Игрок) - поместить игрока в private List<Игрок> virused; FindNewVirus() - проверить на совпадение координат. 
36 Интерфейс. ФИНАЛЬНЫЙ УРОК. 00:13:05
103 чел. ★ 5 Done
  На этом уроке мы допишем последние две функции
и надолго залипнем в экран, наблюдая за новой
игрой для наших кружков, как вирусная эстафета
может быстро передаваться, особенно, когда
игроков очень много.
В комментариях написать свой отзыв об этой серии уроков.

Следующие уроки не обязательны для выполнения.
Я предупредил.

Какой курс ты будешь проходить следующим?
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 52 мин. [Показать отчёт]
Научился: Выделив участок кода и нажав Alt, можно стрелками двигать этот выделенный участок кода вира и майна. Случайно два кружка получили нулевые перемещения по оси абсцисс, и игруха залипла навеки. Пришлось записать видео на память ) 
Видеообзор: pEio2Fn8RBQ
37 Интерфейс. VIP. Квадратики тоже хотят играть. 00:16:23
95 чел. ★ 5 Done
  На этом уроке мы создадим новый класс Box.
Квадратики тоже хотят играть в эту игру,
и просят их научить. Пока они ещё не умеют
ловить, но уже смогут отображаться и передвигаться.

Полезные ссылки для написания функции Поймал:
http://xdan.ru/how-to-check-intersect-two-rectangles.html
http://stackoverflow.com/questions/306316/determine-if-two-rectangles-overlap-each-other
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 33 мин. [Показать отчёт]
Научился: В Классе Arena в методе public void Show (Box box) по ошибке оставил drawEllipse - запустил, а там овалы бегают. Искал недолго, но с интересом свою ошибки. На первой иллюстрации - уже исправлено. Тропические квадратики тоже хотят играть! 
38 Интерфейс. VIP. Пересечение прямоугольников. 00:09:47
92 чел. ★ 5 Done
  На этом уроке мы допишем метод Box.Поймал()
и запустим игру с квадратиками.
Потом попробуем подружить квадратики с кружками,
увидим, что это не так просто, да собственно и не нужно.
Но возможно.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 9 мин. [Показать отчёт]
Научился: определение столкновения боксиков реализовано через сравнение их величин Right, Left, Top, Bottom. Боксики с шариками живут в разных вселенных и отсюда их параллельное броуновское движение. 
39 Интерфейс. VIP. Тяжёлая дружба кругов и квадратов. 00:22:25
81 чел. ★ 5 Done
  На этом уроке мы создалим "универсальный" класс Crosser,
который сможет проверять на столкновение "любых" двух Игроков.
Конечно не любых, а только двух наших Box и Circle.
Это яркий способ, чего стоит избегать в программах.
Потому что тут не добавляется универсальности,
т.к. при добавлении новых объектов придётся
дописывать кучу новых функций на сравнение.

Самостоятельное задание - записать видеообзор
своего проекта и рассказать, что такое Interface.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 46 мин. [Показать отчёт]
Научился: интерфейс - класс, методы которого созданы абстрактными и могут быть реализованы в классе, наследующем этот интерфейс 
Сложности: 15 минута видео (в чате): Neverwinter@All: о, госпади... люди, зачем мы это попросили?? Тот вебинар, судя по комментариям, продолжался уже 6 (ШЕСТОЙ) час! Это какая-то Спарта от сишарпа... 
Видеообзор: xbaqhxC7ahU
  Итого:   39 видеоуроков 7 час. 40 мин.
35 тестов
80 чел. ★ 4.95  
  Финалисты:   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,   Булат .

Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Потрясающе! Чем-то напоминает процесс кристаллизации. Объектно ориентированное программирование замечательная штука! Добавив только один класс можно добавить новый режим игры.



Научился: Очень мощный курс. В данных уроках я познакомился с основными понятиями ООП (о чем так давно мечтал т.к знания были раздробленными и порой делал некоторые вещи не понимая как это устроено, а принимая как должное). На практике сумел закрепить полученные знания. Так же получил представление о работе с интерфейсами и способами их реализации. В рамках курса, как всегда в простой и игровой форме, создано много интересных занятий, где показан правильный и грамотный подход к реализации задач. Огромное спасибо Евгению за проделанную огромную работу. Снова хочу отметить (не раз это подчеркивал), что в уроках Евгения мало заумных слов и много дела. Все сложное превращается в какую то "большую игру"...Порой что то не понятно, но не беда, через несколько уроков начинает приходить понимание исполняемого))) Это важное отличие и делает данный ресурс и его автора привлекательными для людей стремящихся к изучению языков программирования самостоятельно. Следующими на очереди у меня 2 курса: «Базовый ASP.ект» и «Web API».
Трудности: Было очень интересно