Skip to content

Решение домашнего задания на тему "Шаблоны проектирования" курса "Автоматизированное тестирование ПО на Python"

Notifications You must be signed in to change notification settings

and-buk/QA-Python-Kingdom-Game-2

Repository files navigation

Решение домашнего задания на тему "Шаблоны проектирования" курса "Автоматизированное тестирование ПО на Python".

При проектировании архитектуры игры использовались следующие паттерны проектирования:

  • Порождающий «Абстрактная фабрика» для создания семейства связанных объектов: воинов, специализирующихся на том или ином виде оружия или умении «Мечник», «Лучник», «Маг», но в разных вариациях: «Люди», «Чудовища». Данное решение позволяет сохранять единство свойств и атрибутов класса воинов, например, мечников, но с учётом особенностей той или иной вариации, людей или чудовищ. А также, расширять игровые возможности за счёт создания новых вариаций и классов воинов.
  • Вышеуказанный паттерн проектирования был, также, использован для создания предметов игрового мира. В качестве семейства связанных объектов выступают модификации игровых предметов: «Стандартный», «Уникальный» и т.д. А вариациями предметы: «Меч», «Лук», «Книга заклинаний» и т.д. В будущем это позволит создавать комплекты - наборы предметов, при наличии которых у игрового персонажа будет возможность получить какие-нибудь бонусные умения или свойства. И также, расширять игровые возможности за счёт добавления новых предметов и их вариаций.
  • Поведенческий «Состояние» для создания различных объектов - событий в игре и их управления ими. Паттерн «Состояние» позволяет создавать отдельные классы для каждого игрового события, в котором может пребывать объект - игра, а также, определить, «поведения», соответствующие этим событиям. Объект - игра содержит ссылку на один из объектов-событий и может делегировать ему работу, определённую в событии. Благодаря тому, что объекты событий имеют общий интерфейс, игра сможет делегировать работу событию, не привязываясь к его классу. Поведение игры можно менять в любой момент, «подключив» к ней другой объект-событие. Важным моментом является то, что и объект-игра, и сами конкретные тигровые события могут знать друг о друге и инициировать переходы от одного события к другому.
  • Поведенческий «Снимок» для реализации возможности сохранения текущего состояния игры - состояния игрового персонажа и загрузки этого состояния при проигрыше. Паттерн «Снимок» предоставляет создание копии состояния самому объекту - игровому персонажу, который этим состоянием и владеет, поскольку ему доступны все атрибуты и свойства, даже защищённые. Копии состояния игрового персонажа хранятся независимо от объекта, в специальном объекте-снимке с ограниченным интерфейсом. Сами объекты-снимки хранятся другими объектам, называемым «опекунами». В нужный момент опекун может «попросить» игрового персонажа восстановить своё состояние, передав ему соответствующий снимок.

About

Решение домашнего задания на тему "Шаблоны проектирования" курса "Автоматизированное тестирование ПО на Python"

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages