基于QT的扫雷游戏设计与实现扫雷游戏答辩.ppt
文本预览下载声明
程序设计:基于QT语言的扫雷游戏 答辩学生: 一、分析扫雷游戏的基本功能 1、从外观上分析: 方块 笑脸 计时器 有雷标识 无雷标识 胜利画面 失败画面 一、分析扫雷游戏的基本功能 2、从操作上分析: 鼠标 单击 右击 点击鼠标左键于未知区域,如果未知区域有雷,游戏停止,显示所有的地雷。如果没雷,则显示周围雷数,如果周围没雷,则再查看周围八个区域是否有雷直到有雷为止,并显示雷的数目。 一、分析扫雷游戏的基本功能 2、从操作上分析: 鼠标 单击 右击 点击鼠标右键于未知区域,则显示小红旗,将其置为有雷。在该位置再次点击右键则视为不确定,显示问号,点击第三次,取消设置,问号消失。 二、需求分析 1、功能概述: 按功能将游戏区域分成两个区域:雷区和提示区。提示区包括一个计数器和一个按键操作。游戏过程中,当玩家用鼠标点击相应的方块,程序就会作出相应的鼠标响应事件,而众多鼠标事件的处理,都是围绕着实现扫雷程序的算法而衍生的。 二、需求分析 1、功能概述: 游戏开始时,系统会在雷区的某些小方块中随机布下若干个地雷。安放好地雷的小方块称之为雷方块,其他的称之为非雷方块。部署完毕后,系统会在其他非雷方块中填充一些数字。某一个具体数字表示与其紧邻的8个方块中有多少雷方块。玩家可以根据这些信息去判断是否可以打开某些方块,并把认为是地雷的方块打上标识。如果某个数字方块周围的地雷全都标记完,可以指向该方块并同时点击鼠标左右键,将其周围剩下的方块挖开。 二、需求分析 1、功能概述: 如果编号方块周围地雷没有全部标记,在同时点击鼠标左右键时,其他隐藏或未标记的方块将被按下一次(即闪烁一下)。当玩家将所有地雷找出后,其余的非雷方块区域都已打开,此时游戏胜利。在游戏过程中,一旦错误地打开了雷方块则立即失败,游戏结束;当玩家标识的地雷数超过程序设定,虽然打开了全部其余方块,游戏仍然不会结束。 二、需求分析 2、功能需求: (1)雷区上部左侧显示总雷数,并减去被标明有雷区域的数目。 (2)雷区上部中间位置显示一按钮用于开局和显示鼠标动作的结果。 (3)雷区上部右侧显示扫雷的时间。 二、需求分析 2、功能需求: (4)将雷全部扫清后,则显示一对话框将你的姓名记入排行榜。以时间排序。 (5)点击鼠标左键于未知区域,如果未知区域有雷,游戏停止,显示所有的地雷。如果没雷,则显示周围雷数,如果周围没雷,则再查看周围八个区域是否有雷直到有雷为止,并显示周围雷的数目。 二、需求分析 2、功能需求: (6)点击鼠标右键于未知区域,则显示小红旗,将其置为有雷。在该位置再次点击右键则视为不确定,显示问号,点击第三次,取消设置,问号消失。 (7)如果该数字方块周围地雷已经完全标识出,双击该数字所在方块,将快速翻开所有周围不是地雷的方块,并显示,直到有雷为止。 二、需求分析 3、功能模块: (1)游戏界面 (2)布雷 (3)鼠标事件 (4)地雷判断 (5)游戏胜利 (6)游戏结束 二、需求分析 3、功能模块: (7)游戏设置。 (8)查看英雄榜,帮助。 三、总体设计 1、游戏总体流程图 用圆角矩形代表数据开始和结束。 用矩形代表数据处理。 用菱形代表判断。 用带方向的箭头代表数据流向。 三、总体设计 游戏总体流程图 三、总体设计 1、游戏界面 (1)功能栏 (2)雷区 (3)计时器 (4)状态栏 三、总体设计 2、布雷 (1) 算法的设计 把整个雷区看成一个二维数组,a[i][j]周围的雷个数是由如下8个雷区决定的(如果超出边界,应该再加以判断): a[i-1][j-1], a[i-1][j], a[i-1][j+1], a[i][j-1], a[i][j+1], a[i+1][ j-1], a[i+1][j], a[i+1][j+1], 在被展开时,检查周围的雷数是否与周围标示出来的雷数相等,如果相等则展开周围未标示的雷区。这样新的雷区展开又触发这个事件,就这样递归下去,一直蔓延到不可展开的雷区。 三、总体设计 3、布雷 (2) 核心算法的实现 整个游戏程序包含3个阶段:布雷、扫雷过程和结果(并不是操作结果展示,而是在扫雷过程中,玩家通过与游戏交互后的操作结果展示)。 首先定义雷方块的数据结构,具体描述如下所示。 struct { int num;/*格子当前处于什么状态,1有雷,0已经显示过数字或者空白格子*/ int roundnum;/*统计格子周围有多少雷*/ int flag;/*右键按下显示红旗的标志,0没有红旗标志,1有红旗标志*/ }Mine[10][10];然后定义雷方块的状态
显示全部