
42
|
第
1
章
它产生的数字序列类似如下:
2, 4, 3, 6, 1, 5, 1, 6, 4, 3
讨论
真正的随机数,如
GKRandomDistribution
生成器生成的随机数,会让玩家感觉并
不公平,因为人们无法真正理解概率问题。例如在著名的“赌徒谬论”中,在游戏
中,那些输得比较多的人会继续尝试,因为他们觉得下一次肯定会赢,而实际上,
每一次的输赢之间并没有必然关系。
有两种常见的色子,六面的和
20
面的。要创建
0
和
6
之间或者
0
和
20
之间随机数
的生成器,可以使用
d6
和
d20
函数:
let d6 = GKRandomDistribution.d6()
let d20 = GKRandomDistribution.d20()
1.21
编写状态机
问题
你想在游戏中使用状态机来管理不同状态。
解决方案
状态机是一种允许你定义一个系统能够有几种状态的机制。该系统在同一时刻下只
能拥有一种状态;此外,该系统的每种状态都存在一个能够转换到其他状态的列表。
例如,假设某系统有
3
种状态:坐、站、走。你可以从坐转换成站(或者相反),
从站转换成走。但是,不能直接从坐转换成走,必须先转换成站再变成走。
当你从一种状态转换到另一种状态时,你都会获得执行代码的机会。继续以之前的
例子为例,当你转换到站状态,你可以让角色显示站起来的动作。
状态机可以用于管理一个系统可能存在的状态,以及它们之间的转换。