1、 通信终端设计三级项目通信终端设计三级项目 设计说明书设计说明书 (2011/2012 学年第二学期) 课程名称 : 通信终端设计三级项目 题 目 : 扫雷 专业班级 : 通信工程 09-1 学生姓名 : 学 号: 指导教师 : 设计周数 : 1 周 设计成绩 : 2012 年 6 月 21 日 1、设计要求与任务、设计要求与任务 能够运用 java 语言设计出扫雷游戏的程序,会搭建 android 开发环境,并学会运用 eclipse 软件对扫雷游戏进行开发;会创建自己的 android 项目,并了解 android 项目生成的 文件之间的关系和它们的作用, 会使用各种控件; 能够对程序进行
2、调试并学会修改其中的错 误。 任务: 1)个性化字体,计分器使用的是 LED 字体,学习如何导入外部字体在 Android 平台中 显示。 2)带图片的 Toast, Toast 使用自定义的布局,可以显示图片和文字。 3)自定义 Button 控件,可以看到标记是否为雷,显示附近地雷数量的按钮控件,学习 Android 开发中常用的自定义控件技术。 2、设计正文、设计正文 2.1 分析分析 扫雷是一个简单的单人游戏。游戏的目的是在没有触碰任何一个地雷的情形下清空一 个雷区。 在扫雷游戏中, 游戏者要面对一片砖块组成的格栅, 有些砖块包含随机设置的地雷。 在扫雷游戏的游戏界面中, 由众多面积均
3、等的小方块所组成的区域称之为雷区, 雷区的大小 由程序设置的游戏等级决定. 游戏开始时, 系统会在雷区的某些小方块中随机布下若干个地雷。 安放好地雷的小方块 称之为雷方块,其他的称之为非雷方块。部署完毕后,系统会在其他非雷方块中填充一些数 字。 某一个具体数字表示与其紧邻的 8 个方块中有多少个雷方块。 玩家可以根据这些信息去 判断是否可以打开某些方块,并把认为是地雷的方块打上标识。当玩家将所有地雷找出后, 其余的非雷方块区域都已打开,此时游戏结束。在游戏过程中,一旦错误地打开了雷方块则 立即失败,游戏结束;当玩家标识的地雷数超过程序设定,虽然打开了全部其余方块,游戏 仍然不会结束。 在游戏开
4、始后,雷区上方有两个计数器。右边的计数器显示用户扫雷所花费的总时间, 以秒为单位;左边的计数器显示当前还剩余多少个雷方块。 游戏需要提供提示语,如游戏的开始、游戏失败、游戏成功等。按功能将游戏区域分成 两个区域:雷区和提示区。提示区包括两个计数器和一个按键操作结果图像提示。游戏过程 中,当玩家用鼠标点击相应的方块,程序就会作出相应的鼠标响应事件,而众多鼠标事件的 处理,都是围绕着实现扫雷程序的算法而衍生的。 2.2 设计设计 2.2.1 整体布局的设计整体布局的设计 我们使用 TableLayout 进行扫雷的布局,在 TableLayout 上加入三行: 第一行包括用于计时的三列数字,新游戏
5、按钮和剩余地雷数。我们使用 TextView 显示计 时和地雷数。新游戏按钮使用 ImageButton 。第二行是 50 像素高的空的 TextView,将第一 行和雷区隔离开。第三行是另一个 TableLayout,用来显示雷区。我们将动态的向这个区域 添加按钮。如图 1: 图 1 2.2.2 游戏过程的实现游戏过程的实现 1)第一次点击开始 之前我们说过,计时器从第一次点击开始(打开第一个砖块) ,在按下新游戏按钮时不 会开始计时。这一点对于控制时间来说非常重要,为了实现这个功能,我们只需创建一个布 尔变量,只要接受到点击事件就检查此变量,开始调用 Handler,然后改变此变量的值。
6、2)第一次点击没有地雷 用户的第一次点击不应该触发地雷, 否则一开始就要猜测。 因此我们在第一次点击后设 置地雷。我们在用户刚刚打开的砖块之外的部分随机设置地雷(通过随机设置行和列的数 字) 。之后为所有砖块计算邻近的地雷数目生成数字砖块。 3) 打开砖块的涟漪效果 用户在打开一个砖块后得到有关下一步的提示, 如果打开的砖块是空的, 用户就无法猜 测地雷的情况并决定下一步操作。为了避免这种情况,我们打开空白砖块邻近的砖块,一直 递归的打开直到遇见有数字的砖块。类似于涟漪的效果。 4) 在砖块上做标记 我们进一步讨论将砖块标记为旗子、问号和取消标记的方法。实现的方法直接明了,当 我们收到非左右键点击的长点击事件时,我们检查砖块现在的状态。如果砖块上没有标记, 就在上面插旗子(表示内有地雷) ,如果砖块上插着旗子,就在上面标问号(怀疑但不确定 有地雷) ,而如果砖块上面有问号标记,就清除标记。我们只需要一些条