VB课程设计报告 - 扫雷游戏

更新时间:2023-12-20 18:19:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

VB课程设计报告

-------扫雷游戏

马学清 1008260132 指导老师:张小兵

一、 题目介绍

在计算机逐步渗入社会生活各个层面的今天,计算机已经成为人们日常生活的一分,越来越多的人使用计算机办公、娱乐等等。

扫雷游戏是Windows操作系统自带的一款小游戏,在过去的几年里,Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。我利用Turbo C 编写了与它功能相仿的扫雷游戏,寓学于乐。 程序功能

二、程序功能

程序的功能是随机生成地雷数,通过鼠标操作玩游戏,不接受键盘,按任意键结束程序。单击屏幕上的“开始”按钮可以重新开始游戏。所有地雷标出后胜利,当鼠标左键单击到地雷时失败。

三、程序设计目的

1.培养综合运用所学知识独立完成课题的能力。

2.更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。 3.提高对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。 4.培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。

5.培养从资料文献、科学实验中获得知识的能力,提高从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。

6.对掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核 四、 游戏规则

设计10×10 格区域,单击鼠标后,在此格中显示的数字,则表示它周围就有几个空格内含有的地雷数,周围没有地雷的显示空白,则不能再单击了。如果是地雷,则游戏结束。如果判断是地雷,可以单击鼠标右键标出,显示红色,要取消红旗标志则再单击鼠标右键,当所有地雷都标出,每个空格都处理过,那么游戏就胜利结束。

五、程序源代码

'级别 Private Sub Form_Load() '默认初级 dengji = 1

Call nandu(dengji)

End Sub

Private Sub zidingyi_Click() '自定义类型 Load Form2 Form2.Show End Sub

Private Sub again_Click() '重新开始 Call nandu(dengji) End Sub

Private Sub chuji_Click() dengji = 1

Call nandu(dengji) End Sub

Private Sub zhongji_Click() dengji = 2

Call nandu(dengji) End Sub

Private Sub gaoji_Click() dengji = 3

Call nandu(dengji) End Sub

Private Sub tuichu_Click() Unload Me End Sub

Private Sub bang_Click() Load Form3 Form3.Show End Sub

Private Sub about_Click() Load Form4 Form4.Show End Sub

Private Sub Timer1_Timer() If time < 999 Then

'1级 '2级 '3级 '退出 '显示英雄榜 '显示关于扫雷 '处理计时器

time = time + 1

stime1 = Format(time, \

heng = Pic1.Width - (4 + 13) - 13 - 13 '时间处理 For i = 1 To 3

stime2 = Mid(stime1, i, 1)

Pic1.PaintPicture Clip1.GraphicCell(11 - Val(stime2)), heng, 4 heng = heng + 13 Next

shijian(dengji) = time End If

If time = 999 Then '游戏失败 MsgBox \你输了\失败\End If

End Sub

Public Sub nandu(dengji) '调用主程序 Dim s As Integer

Open App.Path & \For s = 1 To 3

Get 1, s, yuanshijian(s) Next Close 1

Pic1.Picture = LoadPicture() '清空计时器和记雷显示器 Pic2.Picture = LoadPicture() Pic2.Enabled = True Timer1.Enabled = False q = 0

mousedown = False

If dengji = 1 Then '判断等级 hang = 9: lie = 9: chulei = 9 ElseIf dengji = 2 Then

hang = 16: lie = 16: chulei = 39 ElseIf dengji = 3 Then

hang = 30: lie = 30: chulie = 99 ElseIf dengji = 4 Then

hang = dingh: lie = dingl: chulei = dinglei

End If

ReDim fankai(hang - 1, lie - 1) '重定义行列数 ReDim lei(hang - 1, lie - 1) ReDim jilu(hang - 1, lie - 1) With Pic2

.Height = 16 * hang + 3 .Width = 16 * lie + 4 .Left = 1 * 8 .Top = 6 * 8 End With With Pic1

.Height = 8 * 4

.Width = 16 * lie + 4 .Left = 1 * 8 .Top = 1 * 8 End With

Form1.Width = 30 * Screen.TwipsPerPixelX + 16 * Screen.TwipsPerPixelX * lie '确定窗体高宽度

Form1.Height = 100 * Screen.TwipsPerPixelY + 13 * Screen.TwipsPerPixelY + 16 * Screen.TwipsPerPixelY * hang + 100

For i = 0 To lie - 1 '开始时雷区 For j = 0 To hang - 1

Pic2.PaintPicture Clip3.GraphicCell(0), i * 16, j * 16 Next Next

Do While k < chulei '布雷 m = Int(Rnd * hang) n = Int(Rnd * lie) If lei(m, n) <> 1 Then lei(m, n) = 1 k = k + 1 End If Loop

Pic1.PaintPicture Clip1.GraphicCell(11 - k \\ 100), 4, 4 '雷数 Pic1.PaintPicture Clip1.GraphicCell(11 - (k Mod 100) \\ 10), 4 + 13, 4 Pic1.PaintPicture Clip1.GraphicCell(11 - (k Mod 10)), 4 + 26, 4

Pic1.PaintPicture Clip1.GraphicCell(11), Pic1.Width - (4 + 13), 4 '时间

Pic1.PaintPicture Clip1.GraphicCell(11), Pic1.Width - (4 + 26), 4 Pic1.PaintPicture Clip1.GraphicCell(11), Pic1.Width - (4 + 13 * 3), 4 Pic1.PaintPicture Clip1.GraphicCell(11), 4, 4

Pic1.PaintPicture Clip2.GraphicCell(4), Pic1.Width / 2 - 12, 4 '显示笑脸 End Sub

'图片框1的MouseDown事件

Private Sub Pic1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If X >= Pic1.Width / 2 - 12 And X <= Pic1.Width / 2 + 12 And Y >= 4 And Y <= 24 + 4 Then Pic1.PaintPicture Clip2.GraphicCell(0), Pic1.Width / 2 - 12, 4 End If

End Sub

'图片框1的MouseUp事件

Private Sub Pic1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

If X >= Pic1.Width / 2 - 12 And X <= Pic1.Width / 2 + 12 And Y >= 4 And Y <= 24 + 4 Then time = 0

Call nandu(dengji) End If

End Sub

'图片框的MouseDown事件

Private Sub Pic2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Static intq As Integer k = chulei

mouseup = False i = X \\ 16: j = Y \\ 16

If fankai(i, j) = False Then

If Button = 1 Then '左键 mousedown = True

Pic1.PaintPicture Clip2.GraphicCell(3), Pic1.Width / 2 - 12, 4 If jilu(i, j) <> 1 And jilu(i, j) <> -1 Then

Pic2.PaintPicture Clip3.GraphicCell(15), i * 16, j * 16 ElseIf b = -1 Then

Pic2.PaintPicture Clip3.GraphicCell(6), i * 16, j * 16

本文来源:https://www.bwwdw.com/article/74b5.html

Top