2011-12-07 83 views
0

我正在使用Perl的RPG庫,並希望使每個部分儘可能互換。我目前正在創建Map子系統並將繼續到Character子系統。我應該如何處理角色和地圖之間的交互?在角色扮演庫中將角色與地圖分離

$character->move('left'); # Character encapsulates a Map 

或者類似的東西

$runtime->moveCharacter('left'); # Runtime encapsulates both Map and Character 

它似乎並不像一個地圖應該是一個字的一部分,但它似乎尷尬並非如此。

另外,我應該如何區分地圖的瓦片的圖形元素和角色的外觀與其基礎數據?或者在這種情況下,數據的圖形方面的一部分?

我知道我正在反思這一點,並希望使這個系統更靈活,而不是完全過度工程化。謝謝!

回答

1

第一部分:

取決於。如果沒有看到一些你希望人們能夠用你的圖書館來實現的遊戲的設計文檔,那麼你就無法確定地回答這個問題。如果你想獲得靈感,Roguelike-Utils有一個全球性的世界對象,相關的比特懸停。

第二部分:

使瓦片成爲一個對象。圖形方面只是一個屬性。你知道你正確地做到了這一點,當你將它解耦足夠的時候,可以將tile和其他東西傳遞給不同的渲染器,從而產生(可伸縮或位圖)圖形,ANSI終端輸出甚至像ADVENT這樣的文本描述。由於一個對象不僅包含啞數據(外觀),而且還將行爲與它關聯起來,所以可以通過流體動力學或溫度交互來輕鬆擴展tile系統。

+0

謝謝,這非常有幫助!所以對於Tile對象,我可以有Map :: Tile :: Graphical :: GTK,Map :: Tile :: Graphical :: Qt等抽象的Map :: Tile類,它們是具體的類和Map :: Tile: :文本是另一個具體的類?然後在地圖中確保添加的每個圖塊類型都是相同的? (我真的需要刷新設計模式)。 –

相關問題