我正在开发一个Java游戏,我遇到了一个问题,它决定了如何从我使用的框架中抽象出我的游戏世界。Java游戏开发:试图分离世界和渲染器
因为我现在有一个叫做World
的课程,它可以跟踪世界上所有不同的物体,并根据游戏规则更新它们。然后我有三个基本对象类Person
,Obstacle
和Item
。每个对象都有不同的“类型”,它们由成员变量表示。所有对象类都从类GameObject
扩展而来。
就像我现在使用的World
和对象类与呈现游戏等的框架是分开的。类Game
都告诉世界更新和呈现世界和世界上的物体。
问题是,我使用三种方法drawPersons()
,drawObstacles()
和drawItems()
呈现对象,这很好,因为我已经编写了代码,我不会再添加任何对象类。真正的问题是渲染每个对象类的不同“类型”。就像我现在的绘图方法通过检查变量object.type
来绘制项目,然后有一个switch语句选择适当的位图进行绘制。
我想简化它,所以我不必在每次给Item
类添加一个新的“类型”时都添加到switch语句中。我认为这样做的唯一方法是让对象存储它们应该呈现的位图,因为它们在构建时具有其item.type变量集。这样我可以从drawItems()
方法中删除开关语句。此外,我还可以给每个对象类一个draw()方法等等等等等等,但是我不想这样做的原因是因为它破坏了我与渲染器/框架和虚构游戏世界的分离。
我不确定该怎么做,一方面我知道使用switch语句是个不错的主意,就像我现在在使用switch语句,但另一方面,我知道这是更好的设计,让我的World
和object类独立于框架,所以如果我想我可以把它打入一个新的框架或任何事情。
我有两种方法吗?
正如旁注:你可能会得到更具体的帮助:http://gamedev.stackexchange.com/ – Thomas 2012-01-16 07:57:50
谢谢你的建议,有没有办法移动这个问题,或者我只是转发问题? – 2012-01-17 03:29:02
我不确定您是否可以提出更多问题,但我确定版主可以。如果您愿意,我们可以将其标记为主持人的注意力,让他们移动它。 – Thomas 2012-01-17 06:38:54