我正在用Java开发一个简单的2D游戏,并且卡住了。Java 2D游戏多态性
我所有的游戏对象(Enemy
,Player
,Item
,Wall
,...)正在扩展Entity
。
Entity
是一个抽象类,包含一些抽象方法,如update()
。
我做了一个名为Drawable
的接口,其中包含draw()
方法。
一些游戏对象,如Item
应该是一个Entity
也算是Drawable
而其他国家,像华尔街,应该只是一个Entity
(未连接到瓷砖,只是X和Y坐标)
这一切看起来像这样的:
List<Entity> entities;
在构造函数中我这样做:
entities = tileMapReader.getEntities();
我的问题是:我应该如何画我的Drawable
?
我希望能够做这样的事情:
for (Entity entity : entities) {
entity.draw(g);
}
但是,由于所有实体没有draw()
方法我不能这样做。我不认为if (entity instanceof Drawable)
是这样一个好主意。
你通常做的是模型类不知道被绘制的任何东西。相反,您有一些GUI类,它们包含您的模型类并知道如何绘制它们。这样,您还可以重用所有代码,以防您想在不同设备上显示您的游戏,例如 – xp500