您的位置:首页 > 其它

GKGameModel

2017-09-26 10:41 106 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: