GKGameModel
实现此协议来描述你的游戏模型,以便策略对象可以规划游戏动作。
概括
通过实现此协议来描述回合制游戏玩法,供GKStrategist对象使用。策略使用你的游戏模型类(即实现了此协议的模型类),以及其他创建的自定义类(实现GKGameModelPlayer和GKGameModelUpdate 协议的类)来找到最佳动作。
GameplayKit依赖于你的游戏模型类的其他策略算法。
• 识别游戏的可能状态,gameModelUpdatesForPlayer: 方法和你的移动类(实现GKGameModelUpdate 协议的类)描述了给定玩家轮到期间可用的一组移动。
• 拷贝游戏内容,然后模拟未来的移动。setGameModel: 方法允许GameplayKit使用游戏模型的单独实例,即不是表示游戏中的实际游戏的实例。applyGameModelUpdate:
方法使用移动类中的信息在拷贝的游戏中进行假设移动。
• 评估游戏未来的可能状态,每次GameplayKit在其游戏模型的副本中执行假设移动时,它会调用isWinForPlayer:,isLossForPlayer : 和orscoreForPlayer: 方法来从特定角色的角度评估游戏状态。
当你使用策略来规划游戏移动时,它会使用你的游戏模型将这些部分组合成一个策略:通过识别,执行和评估未来可能导致胜利的动作,策略会选择最有可能导致胜利的动作。此过程涉及使用copyWithZone:和setGameModel:方法来评估游戏模型的许多可能状态 - 为了获得最佳效果,请确保你的游戏模型类仅包含对描述游戏至关重要的信息,并且可以快速复制该状态。
Topics
跟踪玩家(Keeping Track of Players)
players
目前在游戏中的角色。(必须)
activePlayer
当前活跃角色。(必须)
评估游戏模型(Evaluating a Game Model)
- gameModelUpdatesForPlayer:
- scoreForPlayer:
- isLossForPlayer:
- isWinForPlayer:
修改游戏模型(Modifying a Game Model)
- applyGameModelUpdate:
更新游戏模型内部状态来反应指定变化。(必须)
- unapplyGameModelUpdate:
更新游戏模型内部状态来消除指定变化带来的效果。
- setGameModel:
为指定模型设置内部状态。(必须)
常量(Constants)
游戏模型评分范围(Game Model Score Limits)
scoreForPlayer: 方法返回的特定范围数值。
关系
继承
NSObject
默认遵守
GKStrategist,GKMinmaxStrategist, GKMonteCarloStrategist,GKGameModelPlayer,GKGameModelUpdate