我正在製作一款基於Nethack的遊戲。我需要決定最好的班級來放置通過地牢進行導航的方法。現在我執行移動的方式是隻需要播放器輸入一個字符。 (使用W,A,S,D作爲箭頭)。我有一段時間建立,所以它循環直到觸發器字符結束程序。在這個循環中,它通過打印地下城的狀態開始。要求輸入字符輸入,然後輸入if語句來檢查輸入的字符。在每個if語句中,它將調用一個相對於想要移動的輸入/方向的方法。所以我會有:moveUp(),moveRight()等等。我只需要弄清楚哪個類最適合放這些方法,這將決定如何調用方法,傳遞什麼,以及等等。我應該在哪個類中放置此方法? C++
我將用粗體列出類,並用縮進表示繼承。這裏是我涉及的類:
- 實體:基類。它本質上表示任何/所有對象
- 生物的:基本上代表了地牢
- 球員生活「東西」:基本上是一個擴展的怪物..它是誰在玩的類。
- 項目:作爲一個基類的任何一個被認爲會項目
- 武器:一個武器..
- 護甲:一塊裝甲..
- 消耗品:可以消耗的物品..有其他幾個類別
- 生物的:基本上代表了地牢
我也有一些獨立的類:
- 瓷磚:在A空間 「遊戲鍵盤」。它擁有Creature的ptr,指向Items的向量以及顯示該空間所代表的字符的char。
- DungeonLevel:這是單個級別的遊戲板/網格。它有一個2D向量Tile對象。
我已經有地牢生成正確,什麼不是。對於每個DungeonLevel對象,所有的瓷磚將保持在同一個位置。因此,當一個播放或生物移動(1點)的程序將調用這些方法來操縱DungeonLevel對象(的2D矢量瓷磚的),以反映在播放器/生物通過從將它們移動到平鋪到平鋪。然後程序重新啓動循環。
我不知道哪個類放這些方法。我基本上需要生物和玩家能夠移動。玩家根據字符輸入進行移動。遊戲中生成的生物/怪物將向玩家移動1個空間(如果可能)。
所以我不知道我是否應該使用相同的方法來控制任何實體或者如果DungeonLevel應控制移動,或生物基類和派生,播放機,類應該具有相同的運動方法,或者如果Creature應該有自己的球員,球員應該有自己的。
對此提出建議?謝謝。
這不是您的問題的答案,而是基於您所做決定的種類,如果您尚未擁有設計模式,我強烈建議您閱讀這本書。我有設計模式:可重用的面向對象軟件的元素,並將其推薦。這本書讓我開始思考不同的課程設計類別和交互方式。 – Joshua
是的,這是一個好主意。感謝您的建議。 – ModdedLife
在http:// codeumbra上有一個使用libtcod庫編程roguelike遊戲的C++教程。eu/complete-roguelike-tutorial-using-c-and-libtcod-part-1-setting-up,它有一個相當深思熟慮的課堂教學。 C++教程基於更完整的python教程http://roguebasin.roguelikedevelopment.org/index.php?title=Complete_Roguelike_Tutorial,_using_python%2Blibtcod(我有一些參與)。 – Muscles