# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Описание игры Небоскребы, для которой мы будем создавать систему автоматического управления сайтом, или проще - веббота на языке C#. Отчёт отправил: 4467. Alcatraz Выполнено за 10 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: Ознакомился с игрой, поиграл, зарегистрировался. Жду приятных впечатлений от курса. |
|||||
2 | Планирование функций |
|
|||
Напишем список функций, проанализируем какой необходим алгоритм для будущего Робота Нарисуем блок-схему. Вопрос: Какие ещё функции нужно добавить в список? Отчёт отправил: 4467. Alcatraz Выполнено за 10 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: Список функций: 1. Авторизация 2. Собрать выручку 3. Выложить товар 4. Закупить товар 5. Поднять на лифте 6. Получить задания 7. Пройти лабиринт 8. Работа с жителями Я бы добавил функцию постройки нового этажа. Она бы по очереди выбирала профиль для этажа и когда количество денег на счету достигало определенной пропорции от требуемой для постройки выполняло бы соответственно заложенное действие. |
|||||
3 | Подготовка формы |
|
|||
Создадим первую форму и начнем её заполнять необходимыми элементами. Задание: Написать метод изменения страницы браузера из адресной строки Отчёт отправил: 4467. Alcatraz Выполнено за 25 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: Добавил переход на указанный url по нажатию клавиши Enter. |
|||||
4 | Проверяем авторизацию |
|
|||
Добавим проверку авторизации. Допишем, если авторизации нет, то переходить на страницу авторизации Задание: Добавить кнопку Авторизация. Написать метод проверки авторизации Отчёт отправил: 4467. Alcatraz Выполнено за 20 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: Выполнил домашнее задания, добавил кнопку "Авторизация" и метод, который проверяет нужна ли авторизация в игре. |
|||||
5 | Авторизация |
|
|||
1. Создаем метод проверки авторизации возвращающий логическое значение (True / False) 2. Пишем авторизацию с заполнением полей Задание: Приложить скрин со скрытым паролем. Отчёт отправил: 4467. Alcatraz Выполнено за 15 мин. [Показать отчёт] Научился: Повторил для себя авторизацию с заполнением полей. Сложности: Ничего. Комментарии: Выполнил домашнее задание. |
|||||
6 | Робот приступает к действиям |
|
|||
1. Разбираем действия "Собрать выручку" 2. Переходим на Собирание выручки 3. Получаем первую ссылку на сбор выручки 4. Кликаем по ссылке(переходим по ней) 5. Тоже самое проделываем с "Выложить товар" Задание: Написать список ссылок, для перехода на другие функции Отчёт отправил: 4467. Alcatraz Выполнено за 25 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: Выполнил домашнее задание. http://nebo.mobi/floors/0/2 - Страница "Закупить товар" http://nebo.mobi/lift - Страница "Поднять на лифте" http://nebo.mobi/floor/0/72796527 - Страница "Гостиница" |
|||||
7 | Робот ходит за покупками |
|
|||
1. Разбираем закупку 2. Пишем метод перехода на Закупить 3. Дописываем условие для "Закупить товар" 4. Объединяем три метода в один Задание: При смене метода изменять название кнопки Отчёт отправил: 4467. Alcatraz Выполнено за 30 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: Домашнее задание выполнил. |
|||||
8 | Лифтёра вызывали? |
|
|||
1. Пишем метод поднятия на лифте 2. Пишем метод выполнения заданий Вопрос: что нужно добавить и где, чтобы выполнялись не более 7 заданий? Отчёт отправил: 4467. Alcatraz Выполнено за 20 мин. [Показать отчёт] Научился: Рефакторить ранее написанный код. Сложности: Ничего. Комментарии: Что бы выполнять не более 7 задания в день можно добавить для этого отдельную переменную-счетчик либо парсить каждый день страницу и смотреть, сколько уже задания мы выполнили. |
|||||
9 | Сегодня выполняем |
|
|||
1. Ставим проверку на то, сколько заданий выполнено 2. Пишем метод определения выполненных заданий Вопрос: как сделать перечисление методов, чтобы избавиться от строки? Отчёт отправил: 4467. Alcatraz Выполнено за 27 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: Мне лично не нравится использовать метод Substring, я вместо него использую Contains. А метод проверки NeedQuests я переделал под поиск регулярного выражения, код получился намного меньше. Сделать стандартное перечисление enum. |
|||||
10 | Работа - работа, перейди на Федота, а с Федота... |
|
|||
1. Пишем отдельный метод Rabota 2. Добавляем таймер 3. Проверяем работу Робота Вопрос: как определить что страница уже загрузилась? Отчёт отправил: 4467. Alcatraz Выполнено за 25 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: Я создал отдельный метод GetModeToString, который возвращает строку для текущего режима (mode). if(checkBoxStart.Checked == false) - более хужей записи чем эта трудно найти, и даже в целях учёбы не стоит такого писать. Всегда в таких случаях пишите прост if(!checkBoxStart.Checked ). Домашнее задание: использовать свойство веб-браузера webBrowser.IsBusy, которое покажет занят ли наш веб-браузер загрузкой страницы. |
|||||
11 | Лабиринт Минотавра |
|
|||
На уроке мы напишем метод открывания случайной двери Вопрос: какие нужны проверки для корректной работы метода? Отчёт отправил: 4467. Alcatraz Выполнено за 35 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: Домашнее задание: 1) нужно проверить сколько у нас имеется ключей, если меньше 10, то нужно включать режим ожидания и выходить из метода или даже останавливать наш таймер; 2) либо делать проверку содержит ли наша страница ответа текст "Не хватает ключей", если содержит, то делать аналогичные 1 пункту действия; 3) перед переходом по ссылке "Начать сначала", проверять сколько осталось ключей. |
|||||
12 | Лабиринт Минотавра и нить Ариадны |
|
|||
Напишем метод определение текущей двери и метод определения текущего количества ключей. Задание: добавить два текстовых поля и вывести информацию с количеством ключей и номеру текущей двери в соответствующие текстовые поля. Отчёт отправил: 4467. Alcatraz Выполнено за 20 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: Не понимаю зачем два раза возвращать коллекцию в методе NumberDoor, в условии и при возвращении из метода, это ведь не корректно. Домашнее задание: Добавил два лейбла и создал метод для отображения информации на них. |
|||||
13 | Уборка помещений |
|
|||
1. Пишем метод подсчета ключей 2. Создаем новый класс BrowserClass 3. Переносим все методы внутрь Вопрос: где должна располагаться переменная перечисления mode? Отчёт отправил: 4467. Alcatraz Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Выполнил рефакторинг всего кода. Сложности: Ничего. Комментарии: После рефакторинга все выглядит намного лучше и программа разделена логически на несколько модулей, что является очень правильным решением. Домашнее задание: я считаю, что переменная mode должна быть и там и там. Из кода главной формы её нету смысла убирать пока там используется настройка режима бота через кнопки. |
|||||
14 | Цикличность бытия |
|
|||
1. Пишем метод NextStep() 2. Пишем метод проверки, нужен ли цикл Вопрос: в какое время нужно программно останавливать работу таймера? Отчёт отправил: 4467. Alcatraz Выполнено за 35 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: Домашнее задание: Работу таймера нужно останавливать, когда метод Работа буде возвращать false, то-есть он не выполняет никаких полезных действий. Это буде при условии, что мод == Ожидание и нам не нужен цикл. |
|||||
15 | Сколько времени? |
|
|||
1. Добавляем настройки запуска робота 2. Добавляем информацию о времени запуска Вопрос: Как и в какое место нужно установить обновление страницы в браузере, чтобы получить свежие данные по необходимости повтора цикла? Отчёт отправил: 4467. Alcatraz Выполнено за 25 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: Домашнее задание: Добавить в методе работа переход на главную страницу в условии if (mode == Mode.Ожидание && !NeedCicle()) И так же добавить условие если текущий режим равняется режиму Ожидание, то перейти на следующий шаг плюс было бы неплохо добавить к этому временную задержку, что бы главная страница обновлялась не каждые несколько секунд. Либо при тике таймера при расчете нового времени добавить загрузку главной страницы. |
|||||
16 | Настройки меняют настроение |
|
|||
Добавить настройки по выполнению методов, на их основе перепишем метод получения следующего шага Вопрос: напишите варианты хранения настроек программы (минимум один вариант) Отчёт отправил: 4467. Alcatraz Выполнено за 35 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: Домашнее задание: Наиболее оптимальным будет сохранять настройки используя класс BitArray и сериализовать объект. Можна сохранять в виде текстового файла в формате: Собрать: true Выложить: false |
|||||
17 | С настройками всё в порядке! |
|
|||
Изучаем настройки VisualStudio, заполним значения и попробуем сохранять и получать данные из настроек. А так же наконец-то добавим Авторизацию в наш цикл и сделаем чтобы всё это крутилось и работало! Задание: сделать так, чтобы работало прохождение Лабиринта. Отчёт отправил: 4467. Alcatraz Выполнено за 40 мин. [Показать отчёт] Научился: Провел рефакторинг кода. Научился использовать стандартные возможности вижуал студиа для сохранения настроек Сложности: Ничего. Комментарии: Узнал для себя об интересном методе сохранения настроек. Домашнее задание: Добавил переход в лабиринт по клавише, для этого просто использую метод SetMode, в который я дописал строчку GoUrlOnMode. |
|||||
18 | Жители. Выбираем гостиницу |
|
|||
Ищем Гостиницу и попробуем в нее заходить. Задание: провести анализ жителей Гостиницы. Определить какие жители нужны, а каких необходимо выгонять Отчёт отправил: 4467. Alcatraz Выполнено за 25 мин. [Показать отчёт] Научился: Написал метод поиска гостиницы и метод перехода на гостиницу. Сложности: Ничего. Комментарии: Домашнее задание: Во-первых нам нужно выгонять жителей с низким навыком работы (2 или 4). Нужно устраивать жителей на работу их мечты. Грустных жителей нужно увольнять и если они имеют низкий навык работы, то выгонять. |
|||||
19 | Жители. Кто следующий? |
|
|||
Рассмотрим жителей, начнем разбирать жителей из Гостиницы и методом перебора будем выбирать тех жителей, с которыми мы будем работать Задание: написать метод выселения жителя Отчёт отправил: 4467. Alcatraz Выполнено за 25 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: Домашнее задание: Получаем все ссылки на странице работника и ищем надпись "Выселить", переходим по ссылке. Устанавливаем режим - Жители и возвращаемся из метода. |
|||||
20 | Жители. Кто хочет сегодня поработать? |
|
|||
Напишем три метода: "выселения жителя", "Найти работу", "Устроить на работу". Задание: красиво и удобно разместить на форме элементы Отчёт отправил: 4467. Alcatraz Выполнено за 25 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: В методе Rabota, там где у нас условие if (mode == Mode.Задания && !NeedQuests() || mode != Mode.Задания Лично у меня при нем, когда стоит режим Задания и можно еще выполнять задания не входит внутрь. Что бы исправить это просто убрал операцию логического отрицания возле метода NeedQuests. И тогда получается логичным, если у нас режим Задания и мы можем еще выполнять их, то мы заходим внутрь. В итоге я изменил на if(mode != Mode.Задания || (mode == Mode.Задания && NeedQuests()). Немного сменил расположение кнопок. Добавил картинку игры. И еще создал мини-игру. Перед вами 6 дверей, 4 пустых комнаты, 1 с золотом и одна со стеной. Вам нужно двигаться по ним пока вы не врежетесь в стену. Вся статистика игры выводится + информация о текущей открытой двери. Рекорд золота и пройденных комнат сохраняется в настройках проекта. После проигрыша вы просто нажимаете на любой двери, они все закрываются и можно начинать новую игру. Почему это, а не играться с интерфейсом? Просто когда бот работает, зачем нам просто сидеть сложа руки? Можна сыграть в мини-игру!) |
|||||
21 | Жители. Кто не работает - то не ест! |
|
|||
Пишем метод Увольнения сотрудника Проверяем всю логику программы, подводим итоги. Отчёт отправил: 4467. Alcatraz Выполнено за 22 мин. [Показать отчёт] Научился: Выполнил все задания. Сложности: Ничего. Комментарии: Домашнее задание: Работу с жителями в цикл не добавлял. Меня устраивает, что они находятся на отдельной кнопке. Метод увольнения я доработал, так как столкнулся с ситуацией зацикливания (два работника постоянно менялись местами). Доработка заключается в том, что создается кортеж из 3 человек, который содержит информацию о уровне работника, счастлив ли он и ссылку на удаление. Дальше мы просматриваем и ищем нещасного работника и увольняем с работы его. Если такого не найдено, мы ищем сотрудника с минимальным уровнем и увольняем его. |
|||||
22 | ФИНАЛЬНЫЙ УРОК |
|
|||
Задание. Записать видеообзор любой своей программы. Отчёт отправил: 4467. Alcatraz Выполнено за 5 мин. [Показать отчёт] Научился: Записывать видеообзор своей программы. Сложности: Ничего. Комментарии: 20 минут запису и тут я вижу, что не включен микрофон. Пришлось перезаписывать видообзор. Так что на записи, которую вы можете увидеть на ютубе вы услышите охрипший и уставший голос. Видеообзор: https://youtu.be/3bc5gRU4wSU |
|||||
23 | VIP. Формирование цикла |
|
|||
Формируем супер-цикл Отчёт отправил: 4467. Alcatraz Выполнено за 25 мин. [Показать отчёт] Научился: Добавил возможность формирование цикла работы бота пользователю. Сложности: Ничего. Комментарии: Оформление минималистическое) Ну теперь меня устраивает вполне, то что есть. Спасибо Кирилл за очень хороший курс! |
|||||
Итого: 23 видеоурока |
9 час. 25 мин. |
10 чел. | |||
Финалисты: Новопашин Владимир, Tekashnik, Alcatraz, Дмитрий 199, Максим Лапшинов, Ludmila, Антон, Роман, Константин, Слава . |