打地鼠

思考并回答以下问题:

游戏简介

《打地鼠》(原名:Whac-A-Mole)最早可以追溯到1976年创意工程股份有限公司(Creative Engineering, Inc.)推出的一款有偿街机游戏。这款游戏能够提高人体大脑和身体的协调能力,增强臂力,锻炼身体,深受大众的喜爱。在游戏中,玩家要在规定时间内,敲打一只只从地洞里冒出头的傻地鼠,从而获得游戏胜利。但是作为掌机,如NDS或智能手机等是不可能直接用锤子去敲打屏幕的,取而代之的便是NDS触控笔或者手指,如图2-1所示。

2.2 游戏规则
这个游戏的游戏规则是,在一定时间内,地鼠随机出现在九个洞口中,玩家要在它出现的时候击中它,击中加分,反之地鼠会自动消失,时间耗尽则游戏结束。
随着游戏时间的减少,老鼠出现的频率越来越高,存在的时间也越来越短,游戏难度逐步上升。2.3 程序思路

洞口的排列

利用一个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]

地鼠出现频率

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

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

1
2
3
4
5
6
7
8
9
public void start()
{
InvokeRepeating("canAppear", 0,5);
}

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

单个地鼠设置

在地鼠上设置鼠标监听以及计时器。当它出现后,如果在规定的时间内被点击,则地鼠立刻消失,反之到时间结束后自动消失。伪代码如下:
If(未被点击)
Destroy(this.gameObject,3.0f);
Else
Destory(this.gameobject);
2.3.4 游戏时间和分数
利用整型变量记录游戏时长以及分数。每次游戏开始后,玩家的分数清零,时长则设置为初始值。随着游戏的进行,时长变量减小,分数变量随玩家击中地鼠数量的增加而增大。
2.3.5 游戏流程图
如图2-2所示。

.4 程序实现
2.4.1 前期准备
[1] 新建文件。新建一个名为WhacAMole的2D工程。把3D/2D选项修改为2D,如图2-3所示。点击“Create Project”按钮,完成新建工程。

0%