Unity 2017经典游戏开发教程:算法分析与实现
上QQ阅读APP看书,第一时间看更新

2.3 程序思路

2.3.1 洞口的排列

利用一个3×3的二维数组或者一个一维数组来表示地图中的9个洞口。在这里我们使用一维数组来存入洞口的位置坐标信息以及地鼠的出现状态。

这里可以利用公式k = i × n + j,把二维数组a[m][n]中的任意元素a[i][j]转化为一维数组的对应元素b[k]。m、n分别表示二维数组的行数和列数,i为元素所在行,j为元素所在列,同时0<=i<m,0<=j<n。

[2][0] [2][1] [2][2] → [6] [7] [8]
[1][0] [1][1] [1][2] → [3] [4] [5]
[0][0] [0][1] [0][2] → [0] [1] [2]

2.3.2 地鼠出现频率

我们可以利用改变随机数的取值范围来控制地鼠出现的频率和个数。例如在(0,5)之间取某一个值的概率是1/5,在(0,10)之间取该值的概率为1/10,前者比后者的概率要高一些。

当然我们也可以利用延时调用函数来改变地鼠出现的频率和个数。即随着时间的增加,地鼠出现函数被调用的次数也会被叠加。例如下方的伪代码,start函数从第0秒开始调用canAppear函数,每5秒调用一次;canAppear函数从被调用的第0秒开始调用地鼠生成函数,每1秒调用一次。即第0秒,每1秒生成1只地鼠;第五秒开始,每1秒生成2只地鼠……以此类推。

public void start(){
 InvokeRepeating("canAppear", 0,5);
}
public void canAppear(){
 InvokeRepeating("地鼠生成函数", 0,1);
}

2.3.3 单个地鼠设置

在地鼠上设置鼠标监听以及计时器。当它出现后,如果在规定的时间内被点击,则地鼠立刻消失,反之到时间结束后自动消失。伪代码如下:

If(未被点击)
 Destroy(this.gameObject,3.0f);
Else
 Destory(this.gameobject);

2.3.4 游戏时间和分数

利用整型变量记录游戏时长以及分数。每次游戏开始后,玩家的分数清零,时长则设置为初始值。随着游戏的进行,时长变量减小,分数变量随玩家击中地鼠数量的增加而增大。

2.3.5 游戏流程图

如图2-2所示。

图2-2 游戏流程图