VS2008——VB扫雷游戏.doc_第1页
VS2008——VB扫雷游戏.doc_第2页
VS2008——VB扫雷游戏.doc_第3页
VS2008——VB扫雷游戏.doc_第4页
VS2008——VB扫雷游戏.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VS2008VB扫雷游戏扫雷游戏是一个经典游戏,无数人用各种编程语言写过它。现在用VS2008VB编写,效果很好。游戏主要用Label 控件写成,对它的一些属性都用编程的方法实现,如:字体的设置、边框线(样式)、背景颜色的设置、定位、图像的输出等。本游戏共用了84个Label控件。 图1、扫雷游戏程序运行中 图2、窗体设计页面 图3、打开非雷方块(片区域) 图4、游戏胜利结束 图5、胜利信息框下面是程序中用到的一些位图图源(位图绑定要以自己存放位置为准): 1、笑脸 2、苦脸 3、面图 4、地雷 5、底片附程序全部源码:Public Structure GAME Dim open_state As Integer Dim m_state As Integer Dim m_numbers As IntegerEnd StructurePublic Class Form1 Public SWIDTH As Integer = 285 Public SHEIGHT As Integer = 410 Public GRECT As Integer = 30 Dim Pos(0 To 8) As Integer Dim Game(0 To 8, 0 To 8) As GAME Dim g_on As Integer = 0 Dim r As Integer, c As Integer, open_m As Integer Private Sub setmine() Dim i As Integer, tr As Integer, tc As Integer, rt As Integer Randomize() For i = 1 To 10 rt = 1 Do While rt = 1 tr = Int(Rnd() * 8) + 1 tc = Int(Rnd() * 8) + 1 If Game(tr, tc).m_state = 0 Then Game(tr, tc).m_state = 1 rt = 0 End If Loop Next End Sub Private Sub getminenumbers() Dim i As Integer, j As Integer, numbers As Integer For i = 0 To 8 For j = 0 To 8 numbers = 0 If Game(i, j).m_state = 0 Then If i 0 Then If Game(i - 1, j).m_state = 1 Then numbers = numbers + 1 End If If j 0 Then If Game(i - 1, j - 1).m_state = 1 Then numbers = numbers + 1 End If End If If j 8 Then If Game(i - 1, j + 1).m_state = 1 Then numbers = numbers + 1 End If End If End If If i 0 Then If Game(i + 1, j - 1).m_state = 1 Then numbers = numbers + 1 End If End If If j 0 Then If Game(i, j - 1).m_state = 1 Then numbers = numbers + 1 End If End If If j 0 Then rt = 1 End If End If retselect = rt End Function Private Sub mselect(ByVal mr As Integer, ByVal mc As Integer) Dim t1 As Integer If Game(mr, mc).m_numbers 0 Then Exit Sub End If t1 = mr Do While t1 0 t1 = t1 - 1 If retselect(t1, mc) = 1 Then Exit Do Else selectloop(t1, mc) End If Loop t1 = mr Do While t1 0 And j 0 Then If Game(i - 1, j - 1).m_state = 0 And Game(i - 1, j - 1).open_state = 0 Then retselect(i - 1, j - 1) mselect(i - 1, j - 1) End If End If If i 0 And j 8 Then If Game(i - 1, j + 1).m_state = 0 And Game(i - 1, j + 1).open_state = 0 Then retselect(i - 1, j + 1) mselect(i - 1, j + 1) End If End If If i 0 Then If Game(i + 1, j - 1).m_state = 0 And Game(i + 1, j - 1).open_state = 0 Then retselect(i + 1, j - 1) mselect(i + 1, j - 1) End If End If If i 8 And j 0 t1 = t1 - 1 If retselect(mr, t1) = 1 Then Exit Do Else selectloop(mr, t1) End If Loop t1 = mc Do While t1 0 Then tlabel.Text = Game(mr, mc).m_numbers Dim font As New Font(宋体, 16, FontStyle.Bold) tlabel.Font = font tlabel.TextAlign = ContentAlignment.MiddleCenter If Game(mr, mc).m_numbers = 1 Then tlabel.ForeColor = Color.FromArgb(255, 0, 0, 130) End If If Game(mr, mc).m_numbers = 2 Then tlabel.ForeColor = Color.FromArgb(255, 0, 150, 0) End If If Game(mr, mc).m_numbers = 3 Then tlabel.ForeColor = Color.FromArgb(255, 150, 130, 0) End If If Game(mr, mc).m_numbers 3 Then tlabel.ForeColor = Color.FromArgb(255, 130, 0, 130) End If End If Dim image As New Bitmap(f:vb08-001扫雷游戏mIg.bmp) tlabel.Image = image ElseIf Game(mr, mc).m_state = 1 Then tlabel.BackColor = Color.FromArgb(255, 190, 0, 0) Dim itimage As New Bitmap(f:vb08-001扫雷游戏mine.bmp) tlabel.Image = itimage Dim fim As New Bitmap(f:vb08-001扫雷游戏face3.bmp) Label83.Image = fim open_m = 1 r = mr c = mc End If End If If open_m = 0 Then mselect(mr, mc) If win() = 1 Then MsgBox(游戏胜利结束!) open_m = 1 End If End If End Sub Private Sub initRect() Dim i As Integer, j As Integer For i = 0 To 8 Pos(i) = i * GRECT Next For i = 0 To 8 For j = 0 To 8 Game(i, j).open_state = 0 Game(i, j).m_numbers = 0 Game(i, j).m_state = 0 Next Next mylabel(Label1, Pos(0), Pos(0) + 100) mylabel(Label2, Pos(1), Pos(0) + 100) mylabel(Label3, Pos(2), Pos(0) + 100) mylabel(Label4, Pos(3), Pos(0) + 100) mylabel(Label5, Pos(4), Pos(0) + 100) mylabel(Label6, Pos(5), Pos(0) + 100) mylabel(Label7, Pos(6), Pos(0) + 100) mylabel(Label8, Pos(7), Pos(0) + 100) mylabel(Label9, Pos(8), Pos(0) + 100) mylabel(Label10, Pos(0), Pos(1) + 100) mylabel(Label11, Pos(1), Pos(1) + 100) mylabel(Label12, Pos(2), Pos(1) + 100) mylabel(Label13, Pos(3), Pos(1) + 100) mylabel(Label14, Pos(4), Pos(1) + 100) mylabel(Label15, Pos(5), Pos(1) + 100) mylabel(Label16, Pos(6), Pos(1) + 100) mylabel(Label17

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论