我正在用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