有时我不会;I don’我不知道某些方法属于哪些类.我做错了什么

本文关键字:属于 方法 什么 错了 我不知道 don | 更新日期: 2023-09-27 17:58:55

假设有一个简单的游戏,我有一个名为Player的类,它保存玩家可能拥有的所有信息,例如namexPositionyPositionwidthheight等。

Player类还具有与其相关联的方法,这些方法描述Player可以做什么,例如move()draw()等。

在游戏中,我需要能够知道Player何时与游戏中的任何其他物体碰撞,如墙壁、天花板或其他世界物体。

我可以用两种方式:

创建一个类似CollisionDetecter的类,该类具有类似detectCollision()的方法。在Player类中包含此类的实例,并在适当的时候调用detectCollision()方法

理由:

  • 检测碰撞并不像xPositionyPositionname那样是Player的固有属性,因此它不属于此类。

  • Player类的杂波较少。(这算吗?)

Player类中创建一个类似detectCollision()的方法,检查Player是否命中任何东西

理由:

  • 检测冲突是Player所做的事情,因此detectCollision()方法应该直接在Player类中。

  • 只有玩家需要能够检测碰撞,那么为什么我要创建另一个只有1个方法的类呢?为什么不将其作为方法包含在Player类中呢?

我觉得我总是在这样的辩论中挣扎。

哪种方法最合适,为什么?这两件事都不好吗?我应该做点别的吗?

有时我不会;I don’我不知道某些方法属于哪些类.我做错了什么

一般情况:-

有时,最好从球员级别开始,看看结果如何。重构最终是你的朋友,如果你发现你正在编写的方法需要与Player无关的东西,那么你就开始制定新的设计。

具体而言:-

也许玩家是一个游戏对象,而碰撞检测是一个确定游戏对象之间碰撞的通用概念。

也许玩家并不是一个真正的类,也许玩家只是一个有移动策略的游戏对象,即玩家实际上是由游戏的更基本的方面组成的。