我正在開發一個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