我想制作一个战舰游戏(参见维基百科: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