2017-02-11 2 views
1

Для моей игры я использую шаблон состояния для обработки своих экранов. Экран необходимо обновить и отобразить каждый кадр. И игровой цикл находится в классе Game.Разработка игр - метод обновления и шаблон состояния

Но мне также нужен метод update и render в классе Entity. Должен ли я использовать интерфейс в классе Screen и Entity (например, FrameProcess)? Или я могу оставить его так (см. Изображение)?

Что такое лучшая оценка в ООП? Есть ли какой-нибудь шаблон для этого?

Основные UML этой проблемы:

enter image description here

+0

Что случилось бы с вами, если производном Entity от экрана и передал ваш Игровой объект Субъект вместо GameScreen или MenuScreen? –

+0

Да, есть шаблон для состояний машин, и для этого я даже представил абстрактный [framework] (http://makulik.github.io/sttcl/). –

+0

@ DanielT. Я хочу иметь другой экран в своей игре. Экран заголовка, экран меню и экран игры. И в моем GameScreen у меня была бы игра с уровнем, содержащим сущности, которые являются игроком, врагом и т. Д. – Liddelfranks

ответ

1

Я хотел бы создать чисто виртуальные функции для update() и render() методов в Entity классе, и пусть классы, которые наследуют от него определить свое собственное поведение, которое позволит системе вести себя в полиморфной форме. Затем в классе Game класс или какой-либо другой тип класса обработчика вызывает update() и draw() методы, основанные на текущем состоянии системы, которое решает его с использованием шаблона состояния.

Btw, это говорит больше о государственном модели и ее пример использования (ов) в очень ясной форме на http://gameprogrammingpatterns.com/state.html

1

Это зависит от того, что вы имеете в виду под "Сущности" в этом контексте. Если объект покрывает все, что визуализируется и обновляется, создание виртуальной функции для обоих будет хорошо (если вы планируете получать другие типы Entity, такие как транспортные средства или оружие). Если у вас есть другие визуализируемые и обновляемые типы, отличные от Entity, интерфейс будет лучшим вариантом, на мой взгляд.

Возможно, вам также будет лучше сходить https://gamedev.stackexchange.com/ для дальнейшего Q & A на гамедеве.

+0

Сущность абстрактна и поэтому должна быть выводимой. –

Смежные вопросы