Я разрабатываю небольшую игру на Java, и у меня возникла проблема, позволяющая отвлечь мой игровой мир от используемой структуры.Java Game Dev: попытка разделить мир и рендеринга
Как у меня сейчас, у меня есть класс World
, который отслеживает все разные объекты в мире и обновляет их в соответствии с правилами игры. Затем у меня есть три основных класса объектов Person
, Obstacle
и Item
. Каждый объект имеет разные «типы», которые представлены переменной-членом. Все классы объектов расширены из класса GameObject
.
Как у меня сейчас, World
и классы объектов отделены от рамки, которая отображает игру и т. Д. Класс Game
обе сообщает миру обновлять и отображать мир и объекты в мире.
Проблема заключается в том, что я визуализировать объекты с тремя методами drawPersons()
, drawObstacles()
и drawItems()
это хорошо, потому что я уже написал код, и я не буду добавлять любые другие классы объектов. Реальная проблема заключается в рендеринге разных «типов» каждого класса объектов. Поскольку у меня есть это сейчас, методы рисования рисуют элементы, проверяя переменную object.type
, тогда есть оператор switch, который выбирает соответствующий растровый рисунок для рисования.
Я хочу упростить это, поэтому мне не нужно добавлять оператор switch каждый раз, когда я добавляю новый «тип» к классу Item
, например. Единственный способ, с помощью которого я могу это сделать, - это сохранить объекты в том, какие растровые изображения они должны отображаться, как при их построении, и установить их переменную item.type. Таким образом, я могу удалить инструкции switch из метода drawItems()
. Кроме того, я мог бы также дать каждому классу объектов метод draw() blah blah blah, но причина, по которой я не хочу этого делать, заключается в том, что он разрушает разделение, которое я получаю от рендеринга/рамки и воображаемого игрового мира.
Я не уверен, что делать, с одной стороны, я знаю, что это плохая идея использовать операторы switch, подобные мне в настоящее время, но с другой стороны я знаю, что лучше иметь свои World
и классы объектов, не зависящие от поэтому, если бы я хотел, чтобы я мог пощекотать его в новую структуру или что-то в этом роде.
Есть ли способ, которым я могу иметь оба?
Как примечание стороны: вы можете получить более конкретную помощь здесь: http://gamedev.stackexchange.com/ – Thomas
Благодарим за предложение, есть ли способ переместить этот вопрос там или просто передать вопрос ? –
Я не уверен, если вы можете задать вопрос, но я уверен, что модератор может это сделать. Мы могли бы отметить это для внимания модератора, чтобы заставить их переместить его, если хотите. – Thomas