
280
|
第
9
章
from: startNode,
to: destinationNode
) as! [GKGridGraphNode]
//
打印路径
print("Path found:")
for point in path {
print(point.gridPosition)
}
讨论
虽然
A
星算法很有用,但知道如何利用
SDK
解决问题也很有用。
记住,当
findPath
无法找出路径时,它会返回
nil
。此外,它返回的是
GKGraphNode
数组,而不是
GKGridGraphNode
,你需要自己进行转换(就像我们在例子所做的那
样)。
9.11
计算下一步问题
问题
在回合制游戏中,我们想算出下一步棋该怎么下。
解决方案
对于不同的游戏,可能有无数种答案。在这里,我们只讨论此类问题的比较常见的
解决方案。
首先假设这个游戏的所有状态(棋子的位置、步数、每个游戏对象的状态),全部
都保存在内存里。
从当前状态开始,将下一个玩家有可能采取的动作都计算出来。对于每个可能的动
作,都创建一个动作执行后状态的拷贝。
然后,根据这个拷贝,计算得分。对于不同的游戏,用于计算得分的标准可能各有
不同,例如: