版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、扫雷游戏VB设计实现最终界面如下:显然只需完成三个窗体的设计即可,具体设计界面和代码如下:1、 主窗体(form10)设计界面:主窗体(form10)的代码:Dim d(11, 11) As Integer Dim k As IntegerDim v(100) As Integer '定义全局变量'Private Sub Command1_Click(Index As Integer) Timer1.Enabled = True '当点击任意一个命令按钮时(即开始游戏),则启动计时器' i = Index 10 + 1 j = Index Mod 10 + 1
2、'将二维数组的元素与命令按钮一一对应' If d(i, j) = 1 Then '判断是否点到地雷' Timer1.Enabled = False '关闭计时器,游戏结束' For i = 1 To 10 For j = 1 To 10 n = 10 * (i - 1) m = j - 1 If d(i, j) = 1 Then Command1.Item(m + n).Picture = LoadPicture(App.Path & "2.jpg") '在按钮上显示地雷图片' End If Form1
3、.Show '弹出子窗体1(判断输赢)' Next j Next i Else If v(Index) = Index + 1 Then '判断是否插上红旗或是问号图片' Command1.Item(Index).Picture = LoadPicture() '清除图片' Command1.Item(Index).Caption = f(i, j) '调用函数,显示周围地雷数' Command1.Item(Index).Enabled = False '将按钮设为不可用' Label7.Caption = Val
4、(Label7.Caption) + 1 v(Index) = 0 End If h = s(i, j) '调用函数,显示周围的情况(边界)' For Y = 0 To 99 If v(Y) = Y + 1 Then Command1.Item(Y).Enabled = True '如果是按钮插上了红旗则将按钮设置为可用' End If Next Y End If For k = 0 To 99 If Command1.Item(k).Enabled = False Then p = p + 1 '统计扫过的按钮个数' If p = 90 The
5、n For Y = 0 To 100 v(Y) = 0 Next Y '将数组v的元素重新置0(此步目的为实现重玩而设)' Form2.Show '如果等于90个则结束游戏,弹出子窗体2(赢了)' End If End If Next kEnd SubPrivate Sub Command1_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = 2 Then '右击鼠标' If v(Index) <
6、;> Index + 1 Then '判断是否已插上红旗' Command1.Item(Index).Picture = LoadPicture(App.Path & "1.jpg") '插上红旗' v(Index) = Index + 1 '给数组元素赋值,以此实现按钮图片的切换或显示状态' Label7.Caption = Val(Label7.Caption) - 1 '在标签7中显示插上的红旗个数' Else Command1.Item(Index).Picture = LoadPictu
7、re(App.Path & "3.jpg") '将问号图片替换红旗' Label7.Caption = Val(Label7.Caption) + 1 v(Index) = 0 End IfEnd IfFor i = 1 To 10 For j = 1 To 10 If d(i, j) = 1 Then n = 10 * (i - 1) m = j - 1 If v(m + n) = m + n + 1 Then c = c + 1 If c = 10 Then For Y = 0 To 100 v(Y) = 0 Next Y '将数组v的元
8、素重新置0(此步目的为实现重玩而设)' Form2.Show '如果等于90个则结束游戏,弹出子窗体2(赢了)' End If End If Next j Next iEnd SubPrivate Sub Form_Load()k = 0For i = 1 To 10 For j = 1 To 10 d(i, j) = 0 '将数组元素置0' Next jNext iDo While n <> 10 Randomize i = Int(10 * Rnd + 1) j = Int(10 * Rnd + 1) If d(i, j) = 0 The
9、n d(i, j) = 1: n = n + d(i, j) '产生十个随机数,即相当于十个地雷'LoopForm10.Label7.Caption = 10Form10.Label2.Caption = 0Form10.Label3.Caption = 0End SubFunction f(i, j) '定义一个函数求一个区域周围地雷的个数' f = f + d(i - 1, j - 1) + d(i - 1, j) + d(i - 1, j + 1) + d(i, j - 1) f = f + d(i, j + 1) + d(i + 1, j - 1) +
10、d(i + 1, j) + d(i + 1, j + 1)End FunctionFunction s(i, j) '定义一个函数显示点击区域周围的情况(即边界)' For Y = 0 To 100 If v(Y) = Y + 1 Then Command1.Item(Y).Enabled = False '如插上了红旗,则将按钮先设为不可用' End If Next Y If f(i, j) <> 0 Then '函数嵌套,调用函数判断周围是否无地雷' n = 10 * (i - 1) m = j - 1 Command1.Item
11、(m + n).Picture = LoadPicture() Command1.Item(n + m).Caption = f(i, j) Command1.Item(n + m).Enabled = False '清除图片,显示地雷数,设置按钮不可用' Else For a = i - 1 To i + 1 For b = j - 1 To j + 1 If a <> 0 And b <> 11 And a <> 11 And b <> 0 Then n = 10 * (a - 1) m = b - 1 If Command1
12、.Item(n + m).Enabled = True Then Command1.Item(m + n).Picture = LoadPicture() Command1.Item(n + m).Caption = f(a, b) Command1.Item(n + m).Enabled = False '清除图片,显示地雷数,设置按钮不可用' h = s(a, b) '调用函数本身,即实现递归' End If End If Next b Next aEnd IfEnd FunctionPrivate Sub Timer1_Timer() '设计一个计
13、时器'Label2.Caption = Val(Label2.Caption) + 1Label3.Caption = Val(Label2.Caption) 60 + Val(Label3.Caption)Label2.Caption = Val(Label2.Caption) Mod 60End Sub2、 子窗体一(form1)界面如下:子窗体一(form1)的代码:Private Sub Command1_Click()Unload Form10 Unload form1 Form10.ShowEnd SubPrivate Sub Command2_Click()Unload
14、Form10Unload form1End SubPrivate Sub Command3_Click()For i = 0 To 99 Form10.Command1.Item(i).Picture = LoadPicture() Form10.Command1.Item(i).Caption = "" Form10.Command1.Item(i).Enabled = TrueNext iForm10.Label7.Caption = 10Form10.Label2.Caption = 0Form10.Label3.Caption = 0Unload form1End Sub3、 子窗体(form2)界面如下:子窗体二(form2)的代码:Private Sub Command1_Click()Unload Form10Form10.ShowUnload form2End SubPrivate Sub Command2_Click()Unload Form10Unload form2End SubPrivate Sub Command3_Click()For i = 0 To 99Form10.Command1.Item(i).Picture = LoadPicture()Form10.Command1.Item(i).Capt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- IPA模型下小学公共空间使用满意度分析
- 吉林省普通高中联合体2026届高三化学第一学期期中调研模拟试题含解析
- 市政管网建设道路通行优化方案
- 2025年高级美工考试题库及答案
- 基于OBE理念的学科基础课程建设探索
- 矿山冬季安全培训课件
- 环保型建筑材料选择与应用方案
- 数字化技术在风电项目管理中的应用与创新
- 轻型钢结构抗震设计与施工方案
- 儿科健康服务能力提升的策略及实施路径
- 卫生统计学智慧树知到答案章节测试2023年湖南中医药大学
- 科研方法与论文写作
- BIM大赛考试基本知识题库题
- 比亚迪F6电器维修手册
- 新活细胞商业计划书
- 六年级上册数学苏教版课件第2课时 解决问题的策略
- JB/T 20013-2017双锥回转式真空干燥机
- GB/T 13006-2013离心泵、混流泵和轴流泵汽蚀余量
- 电子秤课程设计
- Q∕SY 127-2007 水驱油田井间示踪技术规范
- 钢结构厂房施工平面布置及施工进度计划表
评论
0/150
提交评论