Выделяю классы на уровне анализа (затем будут выбираться на уровне проектирования и реализации).
Источниками для классов стали: Техническое задание, Предыдущий опыт, Обсуждение с заказчиками и потенциальными пользователями Для Storage так же Литература по ОО-проектированию.
- Warrior - Воин основное действующие лицо игры, которое выполняет действия с окружающими объектами.
- NPC - ИИ отыгрывающий противника.
- Shop - Магазин - выполняет обмен из хранилища игры предметов, на заработанные игроком деньги.
- Money - Деньги - требуются для экономики игры.
- Outfit - Одежда и оружие - Позволяет увеличивать хар-ки игрока.
- Owner - Собственник(оружия и одежды) - по сути тип поля у одежды и оружия, которое указывает на то владеет им магазин или конкретный игрок.
- Timer - Таймер - Ведет учет времени проведенного и игре и при необходимости ее прерывает.
- Battle - Битва - Передача информации об ударе и защите от каждого из игроков - Техническое задание, Предыдущий опыт, Обсуждение с заказчиками и потенциальными пользователями.
- BattleResult - Итог боя - отчет.
- PersonalRoom - Личный кабинет - отчет по конкретному игроку и возможность перехода в магазин и комнату одежды.
- Storage - Хранилище состояний - Сохраняет информацию о результате боев, текущем бое, собственности и прошедшем времени таймера.
- Logger - Для логирования работы программы.
- ErrorHandler - Для обработки ошибок выбрасываемых из различных модулей.
P.S. То что убрал
-
Room - Место хранения(оружия и одежды) - может быть заменено собственником, т.к других комнат не предусматривается в данный момент.
Почему: Убираю его, придерживаясь принципа YAGNI. -
GUI - Вся обработка кликов в GUI.
Почему: буду реализовывать через CLI.