VB.NET扫雷游戏

上传人:cl****1 文档编号:473459451 上传时间:2023-05-30 格式:DOC 页数:35 大小:1.02MB
返回 下载 相关 举报
VB.NET扫雷游戏_第1页
第1页 / 共35页
VB.NET扫雷游戏_第2页
第2页 / 共35页
VB.NET扫雷游戏_第3页
第3页 / 共35页
VB.NET扫雷游戏_第4页
第4页 / 共35页
VB.NET扫雷游戏_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《VB.NET扫雷游戏》由会员分享,可在线阅读,更多相关《VB.NET扫雷游戏(35页珍藏版)》请在金锄头文库上搜索。

1、目录问题描述2需求分析2程序规划4程序流程图4概要设计6一、界面设计61、主界面 MainForm62、选项框 Options83、统计信息 HighScore94、帮助框体 Help105、关于 AboutBox10详细设计111、函数设计11MainForm窗体:11MainForm函数调用关系图:18Options窗体:182、程序性能分析20测试分析21一、基本功能测试211、游戏功能212、设置功能253、帮助功能30二、白盒测试32输入错误测试32三、测试结果35问题描述 编写一个扫雷程序,完成基本的扫雷游戏功能。需求分析用户打开游戏界面。游戏界面有两下拉菜单,一个是游戏菜单,另一

2、个是帮助菜单。界面中间是矩阵方格,下方是计时器和雷计数器,分别显示扫雷用时和未扫出雷的个数。开始扫雷时,用户无论第一次点击哪个格子都不会是雷。之后用户鼠标左键单击小格,是雷就扫雷失败,失败就显示所有雷的位置;不是雷且是数字就显示数字,没有数字就打开周围的空格直到周围(横向纵向的四个格子,不包括对角线)是数字。鼠标右键点击小格标注小红旗,如果不确定就点击两次右键标注问号,再点一次还原。标注红旗则表示用户标注此处为雷(不管是否正确),问号用于给用户标注不确定的区域,对游戏进程无影响。标注红旗的格子无法用左键打开,问号格子可以。左右键同时点中一个数字且数字周围的红旗数等于数字则将其他的小格全部打开,

3、若红旗数大于或小于数字则将其他的小格闪动提示用户无法打开。如果旗子插错则导致打开含雷的区域,游戏失败。若将所有雷标出则提示游戏通关,若超过该难度前十记录则提示用户保存记录。游戏设有计时器,按秒计算,最高显示999秒。游戏显示剩余雷数,此显示总雷数减去用户插的小旗数。在游戏菜单中设有“新游戏”、“统计信息”、“选项”、“退出”,四个功能项。点击“新游戏”后游戏开始,如果游戏正在进行,点击则重新开始游戏。点击“统计信息”,显示每个等级前十名次的扫雷速度纪录。点击“选项”弹出选项框,可有初、中、高级的游戏难度选择,另外还有自定义难度选择,可调高度(9-24)、宽度(9-30)和雷数(10-(高度-1

4、)*(宽度-1),用户输入的设置大于或小于可允许的范围则弹出提示并要求用户更改(雷数范围超过最大范围时不提示,系统直接设定为可允许的最大值)。点击“退出”,则退出程序。帮助菜单中设有“查看帮助”,点击则出来游戏说明。关于 扫雷则是一个About窗口,里面有扫雷的版本及版权等信息。本程序游戏过程无键盘操作。程序规划程序流程图1开始根据用户选择难度(默认初级)绘制方格等待按键第一下按下左键?右键?插旗 问号 恢复是1.布置地图2.启动定时器否否 左键?是否中键、左右键同时?计时器否 234554321结束再玩?方块是地雷?记录按下方块是展开的数字?否 探雷完毕?否 是否 是递归展开非地雷方块是引爆

5、雷?否 新纪录?是否 概要设计一、界面设计61、主界面 MainForm43125地雷区Panel雷区格子由代码创建,具体显示格子部分采用PictureBox实现菜单栏 MenuStrip 点击新游戏重新开始游戏 点击统计信息打开记录窗口 点击选项打开选项窗口 点击退出退出游戏 点击查看帮助打开帮助窗口 点击关于 扫雷打开关于窗口计时区 Panel 和 PictureBox 采用PictureBox换图方式来显示时间计雷区 Panel 和 PictureBox 采用PictureBox换图方式来显示剩余雷数计时控件 Timer 计时器,在游戏过程中同步计时标题栏 ICO 采用自己的程序LOGO

6、12、选项框 Options743256标示 GroupBox 让界面显得整洁难度选择 RadioButton 单选按钮,选择游戏的难度自定义设定区域 Panel 通过Panel的Enable来设置内容的可用与否自定义输入框 TextBox 输入用户自定义雷区高宽,和雷数提示信息 Label 提示用户输入数字范围确定按钮 Button 点击确定确认选择取消按钮 Button 点击取消放弃选择3、统计信息 HighScore6352417难度标示 GroupBox 三种已定义难度分类排名显示 Label 显示各难度下前十名的名字和时间返回按钮 Button 点击返回返回主界面4、帮助框体 Hel

7、p654321帮助项选择 LickLabel 选择不同的帮助项目,显示不同的帮助信息帮助信息显示框 TextBox 显示帮助信息内容返回按钮 Button 返回主界面5、关于 AboutBox12关于窗体 AboutBox 一个窗体,已经预先定义了获取信息的位置,只需要在程序集信息中更改即可改变实际显示公司标志 PictureBox 插入自己的程序LOGO6、新纪录窗体 NewScore4312提示信息 Label 显示新纪录的时间和鼓励信息玩家名字输入框 TextBox 用户输入自己的姓名确定按钮 Button 点击确定保存记录取消按钮 Button 点击取消放弃保存,并开始新游戏详细设计1

8、、函数设计MainForm窗体:Public Structure MineCheck Public Sign As Integer 标识雷或提示数字 Public Opened As Boolean Public RightSign As Integer 标识旗或问号 Public Picture As PictureBoxEnd Structure 该结构体用于记录和表示每个格子的信息,包括:该格是否是雷或周围的雷数、打开与否、当前是旗还是问号、该格显示的图片框。Public Structure NameAndScore 记录结构体 Public Name As String 玩家名字 Pu

9、blic Score As Integer 玩家游戏消耗时间End Structure该结构体用于储存文件中的排名信息,包括:玩家名字和玩家游戏经历的时间。由于记录功能未能实现,该结构体未起作用。Public Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load主窗体载入,调整游戏难度或者重新开始时调用此函数重绘窗体结构,通过此函数调用其它函数重绘雷区。Public Function DrawCheck(ByVal Mines(,) As MineChe

10、ck) Return Mines函数用于绘制扫雷游戏游戏区域的方格。该函数在窗体载入时被调用。函数入口:结构体MineCheck二维动态数组Mines(,) 函数出口:返回该结构体二维动态数组Public Function DrawMine(ByVal Mines(,) As MineCheck, ByVal FirstCheck As Integer)Return Mines该函数用于绘制雷区分布和探测并记录每一格(除了是雷得格)周围(周围8个格子)的总雷数。该函数在游戏开始后第一次点击游戏区时被调用。函数入口:结构体MineCheck二维动态数组Mines(,) 函数出口:返回该结构体二维

11、动态数组Public Sub Check_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)该函数作为响应所有生成的PICTUREBOX的点击事件的函数。该函数在窗体绘制完毕后被用户使用。函数内部分为左键、右键、双键同时点击三种处理,分别调用不同的函数来处理。左键ShowCheckPicture(X, Y)右键ShowRightPicture(X, Y)左右键 ShowDoublePicture(X, Y)函数入口:sender、e 函数返回:无Public Sub

12、Check_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)该函数用于处理用户中键点击按下事件。在用户中键按下时触发。函数入口:sender、e 函数返回:无Public Sub Check_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)该函数用于处理用户中键点击抬起事件。抬起时判断所按键是否为翻开的数字键及周围插旗数是否等于该格数字。若等于则

13、调用ShowCheckPicture(X, Y)函数翻开非旗空格。该事件在用户中键抬起时触发。函数入口:sender、e 函数返回:无Public Sub ShowCheckPicture(ByVal X As Integer, ByVal Y As Integer)该函数用于处理用户左键点击方格的结果。分为是雷不是雷两种情况。在用户左键单击方格后被调用。是雷:改动图片 调用ShowMineWhenFail(X, Y)不是雷:周围无雷 调用FindMine(X, Y) 周围有雷 改变图片 调用Win()函数入口:X, Y为用户所点击方格对应的结构体在结构体数组中的位置。 函数返回:无Publi

14、c Sub ShowRightPicture(ByVal X As Integer, ByVal Y As Integer)该函数用于处理用户右键点击方格的结果。分为置空白、置小旗、置问号三种情况。在用户右键单击未展开方格后被调用。函数入口:X, Y为用户所点击方格对应的结构体在结构体数组中的位置。 函数返回:无Public Sub ShowDoublePicture(ByVal X As Integer, ByVal Y As Integer)该函数用于处理用户左右键同时单击方格的情况,类同中键按下和抬起。因为无法同时处理左右键点击事件,所以该功能暂时无效。函数入口:X, Y为用户所点击方格所对应的结构体在结构体数组中的位置。 函数返回:无Public Sub FindMine(ByVal X As Integer, ByVal Y As Integer)该函数通过递归方法翻开空白格子直到有数字为止。每打开一格调用一次Win()函数。该函数在翻开格子的时候被调用。函数入口:X, Y为其它函数所要打开的格子的坐标。 函数返回:无

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号