# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Описание игры Небоскребы, для которой мы будем создавать систему автоматического управления сайтом, или проще - веббота на языке C#. Отчёт отправил: 8275. Tekashnik Выполнено за 23 мин. [Показать отчёт] Научился: Играть в игру Небоскрёбы Сложности: Сложно было, сидеть и играть в эту нудную игру Комментарии: Вообще не очень люблю игры, тем более такого характера |
|||||
2 | Планирование функций |
|
|||
Напишем список функций, проанализируем какой необходим алгоритм для будущего Робота Нарисуем блок-схему. Вопрос: Какие ещё функции нужно добавить в список? Отчёт отправил: 8275. Tekashnik Выполнено за 34 мин. [Показать отчёт] Научился: Рисовать блок-схему Сложности: Придумывать, что было самым сложным Комментарии: Какая приставучая игра, теперь я в неё играю :D Функции дополнительные можно: - постройка этажей - перераспределение рабочих - участвовать в жизни города (это с 15ого уровня) :D Да, да.... я дошёл до 18ого ^~D |
|||||
3 | Подготовка формы |
|
|||
Создадим первую форму и начнем её заполнять необходимыми элементами. Задание: Написать метод изменения страницы браузера из адресной строки Отчёт отправил: 8275. Tekashnik Выполнено за 35 мин. [Показать отчёт] Научился: Повторил создание формы и причендалов на ней Сложности: Придумать, что было самым сложным Комментарии: Всем добра. |
|||||
4 | Проверяем авторизацию |
|
|||
Добавим проверку авторизации. Допишем, если авторизации нет, то переходить на страницу авторизации Задание: Добавить кнопку Авторизация. Написать метод проверки авторизации Отчёт отправил: 8275. Tekashnik Выполнено за 45 мин. [Показать отчёт] Научился: Закрепил изменение атрибутов HTML страницы Сложности: Придумать, что было самое сложное Комментарии: Хорошее начало, посмотрим, что будет дальше)) |
|||||
5 | Авторизация |
|
|||
1. Создаем метод проверки авторизации возвращающий логическое значение (True / False) 2. Пишем авторизацию с заполнением полей Задание: Приложить скрин со скрытым паролем. Отчёт отправил: 8275. Tekashnik Выполнено за 32 мин. [Показать отчёт] Научился: Выполнять авторизацию на простых сайтах Сложности: Придумать, что было самым сложным Комментарии: Я уже урока до 6 сам всё написал, так что посмотрим, как автор это всё реализует |
|||||
6 | Робот приступает к действиям |
|
|||
1. Разбираем действия "Собрать выручку" 2. Переходим на Собирание выручки 3. Получаем первую ссылку на сбор выручки 4. Кликаем по ссылке(переходим по ней) 5. Тоже самое проделываем с "Выложить товар" Задание: Написать список ссылок, для перехода на другие функции Отчёт отправил: 8275. Tekashnik Выполнено за 45 мин. [Показать отчёт] Научился: Кликать по ссылкам Сложности: Придумывать, что было самым сложным Комментарии: Ну я немного не так реализовывал, но конва прослеживается) |
|||||
7 | Робот ходит за покупками |
|
|||
1. Разбираем закупку 2. Пишем метод перехода на Закупить 3. Дописываем условие для "Закупить товар" 4. Объединяем три метода в один Задание: При смене метода изменять название кнопки Отчёт отправил: 8275. Tekashnik Выполнено за 34 мин. [Показать отчёт] Научился: немного рефакторить Сложности: Придумывать, что было самым сложным Комментарии: Пишу бота номер 2, а пока первый повышает моё благосостояние :) |
|||||
8 | Лифтёра вызывали? |
|
|||
1. Пишем метод поднятия на лифте 2. Пишем метод выполнения заданий Вопрос: что нужно добавить и где, чтобы выполнялись не более 7 заданий? Отчёт отправил: 8275. Tekashnik Выполнено за 45 мин. [Показать отчёт] Научился: Отточил мастерство в набирании однообразных функций и условий Сложности: Набирать однообразные функции и условия (это я лукавлю.... я знаю Copy/Paste) (= Комментарии: На странице quest найти строчку.Contains("7 из 7") если true то выходим из функции) По мне так лучше использовать Contains вместо двух условий string > X && string == "this.string" |
|||||
9 | Сегодня выполняем |
|
|||
1. Ставим проверку на то, сколько заданий выполнено 2. Пишем метод определения выполненных заданий Вопрос: как сделать перечисление методов, чтобы избавиться от строки? Отчёт отправил: 8275. Tekashnik Выполнено за 43 мин. [Показать отчёт] Научился: Резать строки, парсить числа Сложности: Придумывать, что было самым сложным Комментарии: Мне кажется, условия усложнены, можно сделать проще, напимер как у меня) см. скрин Что касается строковой переменой, можно enum сделать, строковый массив, строковый list, строковый ... |
|||||
10 | Работа - работа, перейди на Федота, а с Федота... |
|
|||
1. Пишем отдельный метод Rabota 2. Добавляем таймер 3. Проверяем работу Робота Вопрос: как определить что страница уже загрузилась? Отчёт отправил: 8275. Tekashnik Выполнено за 31 мин. [Показать отчёт] Научился: Делать из ЧекБокса кнопку Сложности: Да вроде ничего сложным не было, сложный вопрос, который автор задания задал, на него бы я хотел получить ответ Комментарии: Всем здравствуйте ну и начнём. Проблема загрузки страницы меня волнует уже некоторое врёмя, я много гуглил, есть разные решения, но 100% универсального решения нет. Для нашего случая (случай очень простой и лёгкой html страницы) всё очень просто: if (webbrowser.DocumentCompleted != WebBrowserReadyState.Complete) Application.DoEvents(); можно ждать наступление события webBrowser_DocumentCompleted И в нашем случае это прокатит, но есть случаи когда на странице несколько фреймов и по завершению загрузки каждого будет срабатывать событие webBrowser_DocumentCompleted, и в общем случае непонятно сколько таких событий должно быть, если не рассматривается одна конкретная страница и под неё всё не затачивается. А ещё весёлый случай когда WebBrowserReadyState.Complete не наступает, то есть страница его вообще не достигает а замирает на WebBrowserReadyState.Interactive - тоже неприятная ситуация. Вот вопрос к создателю, знает ли он универсальный способ (для любой страницы) определения загрузилась ли она? |
|||||
11 | Лабиринт Минотавра |
|
|||
На уроке мы напишем метод открывания случайной двери Вопрос: какие нужны проверки для корректной работы метода? Отчёт отправил: 8275. Tekashnik Выполнено за 49 мин. [Показать отчёт] Научился: Открывать двери невидимой рукой. Сложности: Придумать, что было самым сложным Комментарии: Наш рандом в таком виде будет работать, если только наши ссылки будут всегда первыми, иначе будет фигня. Так и не понял, почему называется лабиринт :) Ведь по факту лучше наверное назвать "Двери", ну да ладно это кому как нравится. А проверки... ну во-первых по наличию ключей, а второе нужно выигрыш как то забрать ежели мы дошли до конца) Интересно подбить статистику, как часто рандом будет доходить до конца) |
|||||
12 | Лабиринт Минотавра и нить Ариадны |
|
|||
Напишем метод определение текущей двери и метод определения текущего количества ключей. Задание: добавить два текстовых поля и вывести информацию с количеством ключей и номеру текущей двери в соответствующие текстовые поля. Отчёт отправил: 8275. Tekashnik Выполнено за 58 мин. [Показать отчёт] Научился: Возиться с ключами, комнатами, и другой чепухой Сложности: Придумывать, что было самое сложное Комментарии: По мне так вообще с начала не нужно начинать открывать двери если ключей меньше 10 |
|||||
13 | Уборка помещений |
|
|||
1. Пишем метод подсчета ключей 2. Создаем новый класс BrowserClass 3. Переносим все методы внутрь Вопрос: где должна располагаться переменная перечисления mode? Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 32 мин. [Показать отчёт] Научился: Рефакторить Сложности: Не запутаться в многообразии неотрефакторенного кода Комментарии: Я уж думал мы не будем создавать новых классов, но был приятно удивлён. Сделать mode публичной и пользовать из одного места, скажем из формы |
|||||
14 | Цикличность бытия |
|
|||
1. Пишем метод NextStep() 2. Пишем метод проверки, нужен ли цикл Вопрос: в какое время нужно программно останавливать работу таймера? Отчёт отправил: 8275. Tekashnik Выполнено за 49 мин. [Показать отчёт] Научился: программно переключать состояния Сложности: Придумать, что было самым сложным Комментарии: Вспомнил замечание! У нас же закупка по верхней цене происходит, а выгодней по нижней, это нужно исправить срочно! Останавливать таймер нужно когда NeedCicle() вернёт false |
|||||
15 | Сколько времени? |
|
|||
1. Добавляем настройки запуска робота 2. Добавляем информацию о времени запуска Вопрос: Как и в какое место нужно установить обновление страницы в браузере, чтобы получить свежие данные по необходимости повтора цикла? Отчёт отправил: 8275. Tekashnik Выполнено за 39 мин. [Показать отчёт] Научился: Повтарил, время и форматирование строк Сложности: Решить как всё расположить, чтобы влезло время Комментарии: У нас же есть в методе Rabota() строчка if (web.ReadyState != WebBrowserReadyState.Complete) return; что ещё надо то? она по моему прекрасно справляется |
|||||
16 | Настройки меняют настроение |
|
|||
Добавить настройки по выполнению методов, на их основе перепишем метод получения следующего шага Вопрос: напишите варианты хранения настроек программы (минимум один вариант) Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 27 мин. [Показать отчёт] Научился: Рефакторить, проверять Сложности: Искать ошибки Комментарии: Ну а у меня уже 26 уровень)) Для сохранение настроек можно сделать файл с настройками |
|||||
17 | С настройками всё в порядке! |
|
|||
Изучаем настройки VisualStudio, заполним значения и попробуем сохранять и получать данные из настроек. А так же наконец-то добавим Авторизацию в наш цикл и сделаем чтобы всё это крутилось и работало! Задание: сделать так, чтобы работало прохождение Лабиринта. Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 49 мин. [Показать отчёт] Научился: Рефакторить программу и сохранять настройки внутри Сложности: не запутаться Комментарии: Очень мудрёный код получился, и что самое странное после 2-3 кругов у меня бот разлогинивается, пока не могу понять почему это происходит, а так всё ровно работает |
|||||
18 | Жители. Выбираем гостиницу |
|
|||
Ищем Гостиницу и попробуем в нее заходить. Задание: провести анализ жителей Гостиницы. Определить какие жители нужны, а каких необходимо выгонять Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 13 мин. [Показать отчёт] Научился: Создавать mode, перебирать коллекции, всё как всегда Сложности: не запутаться в запутанном коде Комментарии: Выгоняем всех у кого нет 9 или (+) |
|||||
19 | Жители. Кто следующий? |
|
|||
Рассмотрим жителей, начнем разбирать жителей из Гостиницы и методом перебора будем выбирать тех жителей, с которыми мы будем работать Задание: написать метод выселения жителя Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 21 мин. [Показать отчёт] Научился: перебирать код, туда сюда)) Сложности: Уже много всего, ориентироваться не очень просто Комментарии: Вот оно моё ДЗ: private void HumansOut() { HtmlElementCollection collection = web.Document.Links; foreach (HtmlElement link in collection) { if (link.OuterText.Trim() != "" && link.OuterText.Contains("Выселить") ) { web.Navigate(link.GetAttribute("href")); } } } |
|||||
20 | Жители. Кто хочет сегодня поработать? |
|
|||
Напишем три метода: "выселения жителя", "Найти работу", "Устроить на работу". Задание: красиво и удобно разместить на форме элементы Отчёт отправил: 8275. Tekashnik Выполнено за 59 мин. [Показать отчёт] Научился: Выбирать из коллекции элемент, из выбранного элемента делать коллекцию и снова выбирать элемент, и так пока не разложим html на атомы Сложности: Придумывать, что было самым сложным Комментарии: Собственно на скриншоте мой интрефейс... добавлено состояне в котором находится сейчас бот ну и в принципе ничего пока сверх.. |
|||||
21 | Жители. Кто не работает - то не ест! |
|
|||
Пишем метод Увольнения сотрудника Проверяем всю логику программы, подводим итоги. Отчёт отправил: 8275. Tekashnik Выполнено за 54 мин. [Показать отчёт] Научился: Писать много if Сложности: Не запутаться Комментарии: floor/ - не работало потому что нужно было писать floors/ ;) Веселый курс) надо бы что нибудь полезное, доброе, вечное сделать) Вся работа программы в видеообзре будет |
|||||
22 | ФИНАЛЬНЫЙ УРОК |
|
|||
Задание. Записать видеообзор любой своей программы. Отчёт отправил: 8275. Tekashnik Выполнено за 43 мин. [Показать отчёт] Научился: Записывать видеообзор Сложности: Записывать видеообзор Комментарии: Полезный курс, спасибо за него Кириллу Шмойлову. Думаю что он пригодится в программировании, для устранения всякой рутины) Рекомендован к прохождению. Видеообзор: https://youtu.be/cfRlAry9Ays |
|||||
23 | VIP. Формирование цикла |
|
|||
Формируем супер-цикл Отчёт отправил: 8275. Tekashnik Выполнено за 56 мин. [Показать отчёт] Научился: Рефакторить программу, использовать очередь Сложности: Придумывать, что было самым сложным Комментарии: Да, как сказал автор курса, нет пределу совершенства, ещё воять и воять)) |
|||||
Итого: 23 видеоурока |
9 час. 25 мин. |
10 чел. | |||
Финалисты: Новопашин Владимир, Tekashnik, Alcatraz, Дмитрий 199, Максим Лапшинов, Ludmila, Антон, Роман, Константин, Слава . |