# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
1 тест |
|||
На этом уроке мы сделаем небольшое теоретическое введение в потоки и начнём создавать консольное приложение с самодостаточным классом для Питона. Вопрос: какие ещё статические поля нужно добавить в класс Питона? Отчёт отправил: 20528. Геннадий Кравцов Выполнено за 31 мин. [Показать отчёт] Научился: На этом уроке начали создавать консольное приложение по разведению и дрессировке питонов)). Каждый из них должен будет жить своей жизнью, т.е. жить в своём личном потоке! |
|||||
2 | Террариум |
|
|||
На этом уроке мы подготовим экран для наших питонов. Сделаем по краям стенки, чтобы они не уползли. Напишем функцию для сохранения и отображения символов. * Создайте метод AddHare() для добавления зайчика. Отчёт отправил: 20528. Геннадий Кравцов Выполнено за 13 мин. [Показать отчёт] Научился: До этого не был знаком с консольными играми. Для меня открытием стал метод Console.SetCursorPosition(coord.x, coord.y); Всегда думал, что то, что в консоли "написано пером, не вырубишь топором". )) В классе Python создал метод для добавления зайчиков в случайном месте игрового поля. Вывел на экран 20 зайчиков белого цвета. |
|||||
3 | Зайчики |
|
|||
На этом уроке мы напишем статический метод для добавления зайчика на поле. Для этого нам потребуется несколько вспомогательных методов, которые окажутся полезными и в других частях нашей программы. В конце урока мы выведем на экран сотню зайчиков :) Ответить на вопрос: какие не статичные поля нужны питону? Отчёт отправил: 20528. Геннадий Кравцов Выполнено за 30 мин. [Показать отчёт] Научился: Создал методы для поиска пустого места на игровом поле и случайного размещения зайчиков. Сделал отступ для игрового поля и вывел название игры. На следующем уроке нужно будет добавить нестатические поля. По-моему это будут переменные, описывающие параметры каждого отдельного питона: координаты, длина, цвет, направление движения, количество съеденных зайчиков и т.п. |
|||||
4 | Питонатор |
|
|||
На этом уроке мы опишем нужные поля для нашего питона и создадим статическую функцию для создания его экземпляра. Также нам понадобится конструктор, который мы сделаем приватным. Отчёт отправил: 20528. Геннадий Кравцов Выполнено за 4 час. 13 мин. [Показать отчёт] Научился: Создал поля с параметрами питона, добавил конструктор, метод Create(). В функции Show(), отображающей питонов на экране, получилось две строки: arrow = (Arrow)rnd.Next(0, 5); // случайный выбор направления. PutScreen(head, color, (char)arrow); // размещение питона на игровом поле. Вывел на экран 50 зайчиков и 50 питонов. |
|||||
5 | Поворот головы |
|
|||
На этом уроке мы сделаем отображение питона, поворот его головы и передвижение по экрану. * Оживить питонов самостоятельно. Отчёт отправил: 20528. Геннадий Кравцов Выполнено за 3 час. 36 мин. [Показать отчёт] Научился: Создал 10 питонов в виде массива. Чтобы сделать задержку (100 ms) в перемещении питонов применил классы TimerCallback и Timer для каждого питона, указав этот интервал. Запустил программу и стал свидетелем питонного апокалипсиса! В течении минуты питоны съели всех зайчиков и даже не брезговали друг другом и ограждением)). При перемещении они не всегда стирались и поэтому заполонили весь экран. 10 экземпляров класса Python не смогли ужиться на одном поле)). К следующему уроку постараюсь разобраться что сделал не так. |
|||||
6 | Поток питонов |
|
|||
На этом уроке мы наконец-таки займёмся потоками. Запустим наших питонов сначала в одном потоке, а потом в отдельных - нам понадобится метод Run(). Создадим критическую секцию через lock. Протестируем режим Foreground/Background режимы. Отчёт отправил: 20528. Геннадий Кравцов Выполнено за 1 час. 19 мин. [Показать отчёт] Научился: Узнал что такое критическая секция и как она может навести порядок в работе нескольких потоков. Увидел разницу в работе фоновых и обычных потоков. Урок был очень наглядный и интересный!! |
|||||
7 | Бурная жизнь |
|
|||
На этом уроке мы допишем класс питон и получим эстетическое удовольствие от созерцания нашего террариума с нашими Питонами и Зайцами. * Придумать свою фишку и реализовать, написать, что сделал. Отчёт отправил: 20528. Геннадий Кравцов Выполнено за 1 день 5 час. 11 мин. [Показать отчёт] Научился: На этом уроке мы наконец-то реализовали вырастание питонов при поедании зайчиков. К тому же каждый питон запущен в отдельном потоке. А "регулировщиком" их движения является объект block, который запускает питонов по одному в критическую часть кода (ограниченную оператором lock). Этот механизм исключает сбои при отображении их движения. Я выпустил на игровое поле 5 питонов и с интересом наблюдал как кипит их борьба за выживание!)) |
|||||
8 | Приоритет |
|
|||
На этом уроке мы поиграемся с приоритетом потоков, воспользуемся монитором для создания критической секции, выведем на экран легенду потоков с id. |
|||||
9 | Замри! |
|
|||
На этом уроке мы поговорим о статусах потока: Unstarted, Running, Wait/Sleep/Join, Abort Requested, Stopped. Создадим функционал для остановки потоков по нажатию клавиш. И научимся сопротивляться этим остановкам. |
|||||
10 | Смысл жизни |
|
|||
На этом уроке мы сделаем красивое завершение потока. Также добавим крестики на экран для "логичного" завершения жизни питона. Смысл жизни - в самой жизни, каждый питон это понял, а ты?.. |
|||||
11 | ФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю с окончанием миникурса "Бурные потоки". Напиши, пожалуйста, отзыв об этом курсе. Что тебе понравилось, что было сложным, что новым, что можно было бы сделать лучше. Ты молодец! Какой курс ты будешь проходить следующим? |
|||||
12 | VIP. Игры со словами |
|
|||
Если есть файл из 27000 слов, то с его помощью можно сделать очень много интересного. На уроке мы ищем палиндромы, детские слова и анаграммы. Хорошее подспорье для игры Эрудит. |
|||||
Итого: 12 видеоуроков |
3 час. 38 мин. 1 тест |
25 чел. | |||
Финалисты: Максим Лапшинов, Андрей Н., Новопашин Владимир, Сергей Соколов, Артём, Елена, Станислав, Алексей|BrisK|Кривицкий, Yefim, Сергей, Tekashnik, Алексей Малышев, Александр, Sergio, Денис, chokayes, Николай Денисов, ser2018, Иван Воронин, Max, Кирилл, Дмитрий, Anatoli, Алексей В., MaxB . |