我想製作一個戰艦遊戲(參見維基百科:Battleship_(遊戲))。設計一個簡單的遊戲類層次結構
我有一個Player
類,一個Grid
類和一個Ship
類。
每個玩家都有一個網格,每個玩家擁有一組生活在網格上的船舶。
我如何知道是否要製作播放器或網格的Ships成員集?
在遊戲開始時,玩家必須將他們的船放置在網格上。我有一個方法要求玩家在哪裏放置他們的船。我怎麼知道該放什麼方法?如果它在玩家中,但是這組船舶在網格中,那麼我將不得不從網格中獲得對船舶集合的引用。然後,我想要Grid :: PlaceShip(Ship)還是Ship :: Place(x,y)?
有沒有這方面的方法?我已經嘗試過課堂責任 - 合作者,但它並沒有給我答案讓我開始編碼。我寧願學習如何自己找到答案,而不是給予他們這個具體的例子。
難道你不想念'遊戲'概念嗎?行爲幾乎不會發生在代表所有行爲發起者的實體上,比如'Player','User'等,或者所有行爲都會在這些實體上發生。也許'game.placeInitialShipsFor(player,shipLocations)'? – plalx 2015-02-09 04:33:34
我有一個遊戲課程,我試圖簡化到我認爲涉及的課程。我最終可能會把所有東西都添加到遊戲類中,而我讀過這是一個錯誤。遊戲引發行爲,玩家負責放置船隻,船隻負責放置,這取決於你如何看待它,並使我困惑。 – Qgenerator 2015-02-09 12:47:05
誰負責維護數據的完整性?例如。只有遊戲知道誰是玩家,是誰已經做出了初始投放。如果將高級函數放在'Game'對象上,那麼像'Grid'和'Player'這樣的類仍然會涉及到。 – plalx 2015-02-09 13:21:23