# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
2 теста |
|||
Мы начинаем знакомство с шаблоном проектирования Состояние. На этом уроке мы узнаем назначение этого шаблона и его отличия от Стратегии. Далее мы напишем две программы: игру Камень-ножницы-бумага и целый Калькулятор. Отчёт отправил: 10558. Иван Воронин Выполнено за 15 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: На самом деле очень много картинок нашёл, для примера использования данного шаблона, прикрепил пару изображений, где показано использование при обращении к данным по HTTP протоколу, так же добавлена картинка где данный шаблон используется в игрушке, см. скриншоты. з.ы. шаблон стратегия отличается от шаблона состояние как минимум тем, что при выборе стратегии для решения определённой задачи, она ниизменна до конца выполнения, а в случае с шаблоном "Состояние" в процессе выполнения задачи выбранная статегия может меняться необходимое количество раз. з.з.ы. для примера статегии выбран вариант добираться из пункта А в пункт Б, выбрали к примеру на автомобиле и всё, едем себе и ждём когда приедем, в случае же с шаблоном состояние, выбираем всё тот же автомобиль, едем и уже не радуемся, а надеемся, что доберёмся в срок или вообще доберёмся, так как при этом шаблон в процессе нашей поздки может изменяться состояние автомобиля, водителя, пассажира(ов). 1 - водитель купил с собой выпить, когда вы сели, его состояние было трезвое, далее в пути вы уснули. а он выпил бутылочку и состояние его изменилось, есть шанс остановки и проверки на алкоголь, так же шанс вылететь на встречку, слететь в пропасть. в зависимости от текущего участка дороги и окружающей ситуации и т.д. можно долго рассуждать. 2 - состояние пассажира, может он перекусил недавно, может его укачать и нужно будет остановиться, а может быть вырвало в салоне, водителю может не понравится и он оставит его на дороге, может оказаться, что забыл кошелёк и т.д. тоже вариантов много. 3 - сам автомобиль, может не хватить топлива и когда оно закончится нужно будет либо толкать либо иди пешком, если идти пешком, то либо ловить попутку либо идти до ближайшей остановки. Опять же зависит от окружающей ситуации. 4 - часть пути проехать на авто, потом пересесть на корабль, после чего опять на авто, а можно вместо корабля использовать самолётик местного лётчика, который показывает соседние острова туристам и он знает все места... Опять же всё будет зависеть от состояния окружающих объектов. |
|||||
2 | State - КНБ - States |
1 тест |
|||
Мы начинаем создание программы "Камни, ножницы, бумага" для демонстрации шаблона проектирования: "State". На этом уроке мы подготовим основные классы и интерфейс. Отчёт отправил: 10558. Иван Воронин Выполнено за 30 мин. [Показать отчёт] Научился: Заготовке шаблона State Сложности: найти время Комментарии: Отличное начало, мыслей по поводу дальнейшей реализации более одной, поэтому не стал тратить время, так как с ним пока туго, поглядим реализацию на след. уроке. з.ы. добавил класс ConsoleArt(), дополнив его под нужды текущего шаблона. |
|||||
3 | State - КНБ - Play |
1 тест |
|||
Мы продолжаем создание программы "Камни, ножницы, бумага" для демонстрации шаблона проектирования: "State". На этом уроке мы реализуем необходимые алгоритмы для того, чтобы можно было полноценно поиграть. Отчёт отправил: 10558. Иван Воронин Выполнено за 1 час. 45 мин. [Показать отчёт] Научился: Закрепил пройденное Сложности: найти время Комментарии: Использовал свой класс ConsoleArt() для красивого отображения стадий игры. Добавил класс GameScore() для обработки статистики побед обоих игроков, количества сыгранных игр, так же генерацией итоговой статистики. Вначале добавил счётчики в классе Context(), но позже решил вынести статистику в отдельный класс. Объяснять работу на простых примерах отличная идея. идём дальше. |
|||||
4 | VIP - State - КНБ - JFrame |
1 тест |
|||
Мы закончили создание программы "Камни, ножницы, бумага" для демонстрации шаблона проектирования: "State". Но на этом уроке мы добавим GUI интерфейс на основе JFrame. Отчёт отправил: 10558. Иван Воронин Выполнено за 50 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: Опять добавили элементы поверх фрейма =), потом хаки писать для корректировки размеров. Я решил сделать так как всегда советую, вначале добавляем папель, потом на панель уже водружаем нужные элементы, в нашем случае кнопочки. Алгоритм инициализации формируется у нас уже не один курс по Java, поэтому использовал его для создания формы нужного размера, плюс тот самый метод pack(). Без него никуда =) Добавил все три кнопки, думаю можно использовать массив кнопок, чтобы код выглядел более компактным. Так же реализовал определение на какую кнопку было нажатие, чтобы изменялась надпись именно на ней. Отличная идея реализовать GUI интерфейс для игрушки. |
|||||
5 | VIP - State - КНБ - JButtons |
1 тест |
|||
Мы продолжаем создание GUI интерфейса для игры "Камни, ножницы, бумага". На этом уроке мы исправим косметические ошибки и продолжим реализовывать GUI интерфейс для возможности полноценной игры. Отчёт отправил: 10558. Иван Воронин Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: Отличный завершение для не менее отличного курса по созданию игры "Камни, Ножницы, Бумага". Вначале реализовал сам лейблы, потом посмотрел видео, центровка текста пока не начали играть, после первой игры центровка отключается и информация выдаётся по собственному стилю. Параллельно в консоли отображается консольная версия игры. В GUI версии отображается статистика игр и кто сколько набрал очков. Все элементы располагаются на JPanel, так же исправлен баг при котором объекты панели могли не отрисовываться корректно, пока не свернуть и развернуть форму, оказывается необходимо вызывать эту проверку в критических ситуациях. |
|||||
6 | ПОЛУФИНАЛЬНЫЙ УРОК |
без видео 1 тест |
|||
Поздравляю c завершением первой части курса. Напиши, чему ты научился, нравится ли тебе данный шаблон. Какие видишь преимущества и недостатки. Отчёт отправил: 10558. Иван Воронин Выполнено за 5 мин. [Показать отчёт] Научился: Ничему Сложности: найти время Комментарии: Шаблон очень полезный, используется на 100% в играх, пример: переключение между стадиями отображения игрового меню или непосредственно самой игры, глобальной карты и т.д. При передаче данный по сети тоже данный шаблон будет кстати. Везде где может понадобится переход между состояниями - этот шаблон будет полезен!!! з.ы. Пауза в игре это тоже состояние =) |
|||||
7 | State - Целый калькулятор - States |
1 тест |
|||
Мы начинаем создание целого калькулятора для демонстрации использования шаблона проектирования State. На этом уроке мы изучим работу калькулятора. Отчёт отправил: 10558. Иван Воронин Выполнено за 25 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: Я думаю каждую разработку чего бы то ни было нужно начинать с построения схемы, хотя-бы базовой, в процессе разработки можно будет её дополнять, если будет в этом необходимость. |
|||||
8 | State - Целый калькулятор - Context |
1 тест |
|||
Мы продолжаем создание целого калькулятора для демонстрации использования шаблона проектирования State. На этом уроке мы реализуем базовую логику. Отчёт отправил: 10558. Иван Воронин Выполнено за 17 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: Пока ничего не могу сказать по поводу того, хватит того, что уже реализовано или нет, будет видно в процессе разработки. |
|||||
9 | State - Целый калькулятор - Press key |
1 тест |
|||
Мы продолжаем создание целого калькулятора для демонстрации использования шаблона проектирования State. На этом уроке мы реализуем основной класс Program(), чтобы можно было тестировать написанный код. Отчёт отправил: 10558. Иван Воронин Выполнено за 46 мин. [Показать отчёт] Научился: Закрепил пройденное Сложности: найти время Комментарии: Добавил свой класс ConsoleArt() и реализовал псевдоинтерфейс калькулятора в консоли =) Избавился от статика. Вначале реализовал метод show() в классе Context() так как нужно было где-то генерировать вид калькулятора, а после увидел в видео, что такой же метод создаётся как раз для той же задачи =) Не стал бежать впереди паровоза, идём в ногу с уроками. =) |
|||||
10 | State - Целый калькулятор - Logic |
1 тест |
|||
Мы продолжаем создание целого калькулятора для демонстрации использования шаблона проектирования State. На этом уроке мы реализуем переход между состояниями ввода данных. Постарайтесь самостоятельно найти все ошибки в программе. Потом сравните со списком ошибок, которые нашёл Иван Воронин: https://www.videosharp.info/10558/checking/design-state=1510 Отчёт отправил: 10558. Иван Воронин Выполнено за 1 час. 46 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: Тут не одна ошибка в коде, тут их куча! Что было мной выявлено при тестировании калькулятора: 1 - нужно сбрасывать значение второй переменной в методе StateOpers().opers() 2 - нужно произвести калькуляцию в начале метода StateSecond().opers() 3 - в методе calc() добавил проверку: "Делить на ноль нельзя!" 4 - метод calc() перенёс в класс Context(), так как он вызывается не только в StateResult() 5 - не нужно производить калькуляцию при вводе очередного числа в StateResult() 6 - не нужно производить калькуляцию при вводе операции в StateResult() 7 - нужно делать сброс при вводе числа в StateResult() 8 - оставить ситуацию без изменений, если ввести символ, который не поддерживается 9 - что бы не ввели, брать первый символ з.ы. Помимо этого, как видно из скриншота, динамически увеличивается список истории вычислений. В результате отображается текущая ситуация, что тоже видно на скриншотах. Обкатал калькулятор, вроде все нюансы учёл, баги больше не встречались. |
|||||
11 | State - Целый калькулятор - 16 кнопок |
1 тест |
|||
На этом уроке мы сделаем графический интерфейс для калькулятора. Попрактикуемся в использовании JFrame, JButton, JLabel, JPanel. Немножко доработаем контекст и состояния. Отчёт отправил: 10558. Иван Воронин Выполнено за 1 час. 25 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: Приснился калькулятор и вариант был, ввести число, потом операцию и сразу равно, что будет. Проверил, получается, что он к числу плюсует второе значение, которое по-умолчанию равно 0 и записывается в историю 2+0=2, я решил проверить, как ведёт себя калькулятор в windows 10, оказалось, что если набрать 2+=, то двойка будет увеличиваться на саму себя и при последующих нажатиях на равно, постоянно увеличивается на изначальное число два!!! Поэтому приснился ещё один баг: 10 - если набрать 2+= то должно увеличивать число само на себя (так работает калькулятор в windows 10) который уже внесён в код к следующему уроку. з.ы. метод show() не пришлось модифицировать, так как уже давно реализовал аналог в виде переменной result, в которой формируется вывод вводимых данных. Добавил справа от калькулятора вывод истории. |
|||||
12 | State - Целый калькулятор - Fix Bugs |
1 тест |
|||
На этом уроке мы исправим ошибки, которые были допущены при реализации функций перехода между состояниями. Отчёт отправил: 10558. Иван Воронин Выполнено за 30 мин. [Показать отчёт] Научился: Ничему Сложности: найти время Комментарии: Что было мной выявлено при тестировании калькулятора: 1 - нужно сбрасывать значение второй переменной в методе StateOpers().opers() 2 - нужно произвести калькуляцию в начале метода StateSecond().opers() 3 - в методе calc() добавил проверку: "Делить на ноль нельзя!" 4 - метод calc() перенёс в класс Context(), так как он вызывается не только в StateResult() 5 - не нужно производить калькуляцию при вводе очередного числа в StateResult() 6 - не нужно производить калькуляцию при вводе операции в StateResult() 7 - нужно делать сброс при вводе числа в StateResult() 8 - оставить ситуацию без изменений, если ввести символ, который не поддерживается 9 - что бы не ввели, брать первый символ 10 - если набрать 2+= то должно увеличивать число само на себя (так работает калькулятор в windows 10) з.ы. Последний пункт реализовал после того как мне приснился этот вариант возможного бага. Так же реализовано за данный урок: У калькулятора и истории отличается размер шрифта. Размеры шрифта вынесены в константы. Размер шрифта зависит от размеров формы. Если история пуста, выводится надпись: "Пусто". Если размер истории превышает размеры формы, появляется скроллбар и история добавляется ниже. При добавлении новой строки в историю, скрол автоматом спускается в самый них и показывает последние записи истории. |
|||||
13 | ФИНАЛЬНЫЙ УРОК |
без видео 2 теста |
|||
Поздpaвляю! Твoя зaдaча - прoверить cебя и пpойти тест, см. вкладку "Тест". Напиши отзыв или видеообзор по этому видеокурсу. Отчёт отправил: 10558. Иван Воронин Выполнено за 5 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: Отличный шаблон проектирования, удачно подходят уроки по созданию калькулятора. Но данный шаблон на этом не останавливается, он применяется почти везде, особенно в играх =) |
|||||
Итого: 13 видеоуроков |
2 час. 18 мин. 15 тестов |
11 чел. | |||
Финалисты: Сергей Соколов, Иван Воронин, Алексей Малышев, Александр, Новопашин Владимир, Tekashnik, Виктор, Dmitry Sinitsin, Yefim, Anatoli, Tom . |