有时我不会;I don’我不知道某些方法属于哪些类.我做错了什么
本文关键字:属于 方法 什么 错了 我不知道 don | 更新日期: 2023-09-27 17:58:55
假设有一个简单的游戏,我有一个名为Player
的类,它保存玩家可能拥有的所有信息,例如name
、xPosition
、yPosition
、width
、height
等。
Player
类还具有与其相关联的方法,这些方法描述Player
可以做什么,例如move()
、draw()
等。
在游戏中,我需要能够知道Player
何时与游戏中的任何其他物体碰撞,如墙壁、天花板或其他世界物体。
我可以用两种方式:
创建一个类似CollisionDetecter
的类,该类具有类似detectCollision()
的方法。在Player
类中包含此类的实例,并在适当的时候调用detectCollision()
方法
理由:
-
检测碰撞并不像
xPosition
、yPosition
或name
那样是Player
的固有属性,因此它不属于此类。 -
Player
类的杂波较少。(这算吗?)
在Player
类中创建一个类似detectCollision()
的方法,检查Player
是否命中任何东西
理由:
-
检测冲突是
Player
所做的事情,因此detectCollision()
方法应该直接在Player
类中。 -
只有玩家需要能够检测碰撞,那么为什么我要创建另一个只有1个方法的类呢?为什么不将其作为方法包含在
Player
类中呢?
我觉得我总是在这样的辩论中挣扎。
哪种方法最合适,为什么?这两件事都不好吗?我应该做点别的吗?
一般情况:-
有时,最好从球员级别开始,看看结果如何。重构最终是你的朋友,如果你发现你正在编写的方法需要与Player无关的东西,那么你就开始制定新的设计。
具体而言:-
也许玩家是一个游戏对象,而碰撞检测是一个确定游戏对象之间碰撞的通用概念。
也许玩家并不是一个真正的类,也许玩家只是一个有移动策略的游戏对象,即玩家实际上是由游戏的更基本的方面组成的。