我的目标是实现一个(非常简单的)策略游戏。
目前,我将从地图和两个角色(我希望地形对他们产生不同的影响)开始尝试寻路
问题是我在面向对象设计方面的经验很少或根本没有。我以前使用过 C++ 类,但它非常简单:例如,使用集合数组实现的类 Graph 和方法 AStar。我没有想到“几个玩家”的概念。
我想到了以下元素/类:游戏、地图和角色。最终成为探路者课程。
第一个问题:角色的位置是游戏应该知道的吗?地图?还是每个字符?
(我认为游戏应该)
第二个问题:“findPath”方法在哪里是一个不错的选择?
游戏?
寻路算法应该是 Map 的一种方法吗?类似 map.findPath(character, srcpos, dstpos)
在字符类中?做 character1.findPath(map, srcpos, dstpos) 更有意义
如果我添加了一个 Pathfinder 类,它必须构建自己的地图表示,以确定最短路径。在此之前,它必须“询问”地图地形如何影响每个玩家。
(我更喜欢后者)
似乎构建一个辅助结构(并要求地图)应用,比方说,A* 是我无法避免的事情。