VB课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计题目扫雷游戏
姓名:石婷婷学号:1108670107
难度:☆☆☆☆。知识点:(1)控件数组;(2)绘图(3)菜单(4)文本文件的读写;(5)多模块程序设计;(6)资源文件的使用
一、功能
a.功能要求
(1)启动程序后,显示初始界面,游戏共有3种预定义的难度级别,分别是初级(9行9列10颗雷)、中级(16行16列40颗雷)和高级(30行16列99颗雷)。通过“游戏”菜单中的菜单项可以选择不同难度。
使用“自定义”菜单命令打开自定义对话框,可以自行定义雷区的行数、列数和雷数。
(2)雷区正上方是一个“小脸”图标,不同状态下,小脸显示出微笑、惊讶、痛苦和胜利等表情。任何情况下单击小脸,可以重新开始游戏。
小脸左边以LED(发光二级管)方式显示了当前雷区中未被标记出来的雷数,右边是游戏进行的秒数。计时是在用户第一次单击雷区的方块时开始。(3)使用右键单击一个方格将其标记为雷之后,不能再使用左键单击它,但可以再右键单击。右键再单击一次方格上显示“?”号(表示暂时不能确定),再单击第二次,恢复为普通样子。
使用左键可以单击除了标记为有雷之外的所有未翻开的方格(包括标记为“?”号的)
(4)如果一个方格内显示的数字为N(1~8)且其周围已有N个方块被标记
翻开,这样就不必一个一个地去单击了。
不过如果标记有雷的方格中有标记错了的,这时会被“炸死”。
(5)扫雷失败时,程序用图标炸弹105显示所有雷位置,并将标记错了的和“炸了的”用炸弹104和炸弹103显示。
(6)扫雷成功时,如果没有打破该难度级别的记录,显示“胜利”消息框;如果破了纪录,显示输入框提示输入用户名。
通过“扫雷英雄榜”菜单命令,可以显示“扫雷英雄榜”对话框,其中列出了预设的3个难度级别的纪录保持者。因为自定义级别难度差别很大,所以不提供该级别的成绩记录。
b.程序设计的思想和方法
本游戏的功能类似于Windows操作系统自带扫雷游戏,设计之前,先了解这款游戏的规则。
在不掀开任何的情况下,以最快的速度找出所有的地雷。如果在掀开方块的过程中,不小心翻开藏有地雷的方块,则宣告失败,惟有将所有不含地雷的方块掀开,游戏才算成功(存活)。
游戏的操作方面主要以鼠标为主,当鼠标指针对准未翻开的方块按下左键时即表示翻开方块,当鼠标指针对准未翻开的方块按下右键时即表示标示或疑
似地雷,反复按下右键则方块会依未标示→标示→疑似三者关系不断循环。使用者可以通过地雷区内的数表示以其为中心的周边八个方块内所含的地雷数。当按下的方块不是地雷,且周边也没有地雷时,方块会以被翻开的八个方向将空白方块翻开。
二、课程设计的详细设计
本程序共包括9个窗体,分别为frmMain,frmCustom,frmRecord,frmAbout,frmCheer,frmWin,frmMessage1,frmMessage2,frmMessage3和一个标准模块。
当程序开始运行时,必须先加载各种图片
Private Sub Form_Load()
Dim i As Integer
For i = 0 To 4 '加载表情图片
Set picFace(i) = LoadResPicture(140 + i, 0)
Next
For i = 0 To 8
Set picNum(i) = LoadResPicture(115 - i, 0) '加载雷区数字图片
Next
For i = 0 To 6
Set picArea(i) = LoadResPicture(100 + i, 0) '加载雷区非数字图片
Next
For i = 0 To 11
Set picTime(i) = LoadResPicture(120 + i, 0) '加载时间数字图片
Next
主窗体画面规划如图1所示:
①:游戏时间显示区(PictureBox)
②:剩余地雷数显示区(PictureBox)
③:表情图片显示区(PictureBox)
④:地雷区图样(PictureBox)
⑤:游戏时间的文本框显示(TextBox)
⑥:计时器(Timer)
⑦:综合显示区,存放时间、表情、剩余雷数的显示(PictureBox)
⑧:菜单栏
主界面各控件存放位置布局由以下语句控制:
Dim i As Integer, j As Integer
picboxArea.Width = 260 * X '布置窗体和控件
picboxArea.Height = 260 * Y
picboxArea.ScaleWidth = picboxArea.Width
picboxArea.ScaleHeight = picboxArea.Height
picboxShow.Width = picboxArea.Width
picboxShow.ScaleHeight = picboxShow.Height
picboxShow.ScaleWidth = picboxShow.Width
picboxShow.Left = 50
picboxArea.Left = 50
picboxShow.Top = 50
picboxArea.Top = picboxShow.Height + 140
picboxFace.Height = 420
picboxFace.Width = 420
picboxFace.Left = picboxShow.Width / 2 - 210 picboxFace.Top = picboxShow.Height / 2 - 210
PicboxNum(5).Left = picboxArea.ScaleWidth - 670 PicboxNum(6).Left = picboxArea.ScaleWidth - 415 PicboxNum(4).Left = picboxArea.ScaleWidth - 925
自定义窗体如图2所示:
①:行数输入区(TextBox)
②:列数输入区(TextBox)
③:雷数输入区(TextBox)
④:确定按钮(CommandButton)
⑤:取消按钮(CommandButton)