扫雷游戏设计代码VB完善版Word文档格式.docx
《扫雷游戏设计代码VB完善版Word文档格式.docx》由会员分享,可在线阅读,更多相关《扫雷游戏设计代码VB完善版Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
Ifd(i,j)=1Then'
判断是否点到地雷'
Timer1.Enabled=False'
关闭计时器,游戏结束'
Fori=1To10
Forj=1To10
n=10*(i-1)
m=j-1
Ifd(i,j)=1Then
Command1.Item(m+n).Picture=LoadPicture(App.Path&
"
\2.jpg"
)'
在按钮上显示地雷图片'
EndIf
Form1.Show'
弹出子窗体1(判断输赢)'
Nextj
Nexti
Else
Ifv(Index)=Index+1Then'
判断是否插上红旗或是问号图片'
Command1.Item(Index).Picture=LoadPicture()'
清除图片'
Command1.Item(Index).Caption=f(i,j)'
调用函数,显示周围地雷数'
Command1.Item(Index).Enabled=False'
将按钮设为不可用'
Label7.Caption=Val(Label7.Caption)+1
v(Index)=0
h=s(i,j)'
调用函数,显示周围的情况(边界)'
ForY=0To99
Ifv(Y)=Y+1Then
Command1.Item(Y).Enabled=True'
如果是按钮插上了红旗则将按钮设置为可用'
NextY
Fork=0To99
IfCommand1.Item(k).Enabled=FalseThen
p=p+1'
统计扫过的按钮个数'
Ifp=90Then
ForY=0To100
v(Y)=0
NextY'
将数组v的元素重新置0(此步目的为实现重玩而设)'
Form2.Show'
如果等于90个则结束游戏,弹出子窗体2(赢了)'
Nextk
EndSub
PrivateSubCommand1_MouseUp(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2Then'
右击鼠标'
Ifv(Index)<
>
Index+1Then'
判断是否已插上红旗'
Command1.Item(Index).Picture=LoadPicture(App.Path&
\1.jpg"
插上红旗'
v(Index)=Index+1'
给数组元素赋值,以此实现按钮图片的切换或显示状态'
Label7.Caption=Val(Label7.Caption)-1'
在标签7中显示插上的红旗个数'
\3.jpg"
将问号图片替换红旗'
EndIf
Fori=1To10
Ifv(m+n)=m+n+1Thenc=c+1
Ifc=10Then
PrivateSubForm_Load()
k=0
d(i,j)=0'
将数组元素置0'
Nexti
DoWhilen<
10
Randomize
i=Int(10*Rnd+1)
j=Int(10*Rnd+1)
Ifd(i,j)=0Thend(i,j)=1:
n=n+d(i,j)'
产生十个随机数,即相当于十个地雷'
Loop
Form10.Label7.Caption=10
Form10.Label2.Caption=0
Form10.Label3.Caption=0
Functionf(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)+d(i+1,j)+d(i+1,j+1)
EndFunction
Functions(i,j)'
定义一个函数显示点击区域周围的情况(即边界)'
Command1.Item(Y).Enabled=False'
如插上了红旗,则将按钮先设为不可用'
Iff(i,j)<
0Then'
函数嵌套,调用函数判断周围是否无地雷'
Command1.Item(m+n).Picture=LoadPicture()
Command1.Item(n+m).Caption=f(i,j)
Command1.Item(n+m).Enabled=False'
清除图片,显示地雷数,设置按钮不可用'
Fora=i-1Toi+1
Forb=j-1Toj+1
Ifa<
0Andb<
11Anda<
11Andb<
0Then
n=10*(a-1)
m=b-1
IfCommand1.Item(n+m).Enabled=TrueThen
Command1.Item(n+m).Caption=f(a,b)
h=s(a,b)'
调用函数本身,即实现递归'
Nextb
Nexta
PrivateSubTimer1_Timer()'
设计一个计时器'
Label2.Caption=Val(Label2.Caption)+1
Label3.Caption=Val(Label2.Caption)\60+Val(Label3.Caption)
Label2.Caption=Val(Label2.Caption)Mod60
2、子窗体一(form1)界面如下:
子窗体一(form1)的代码:
PrivateSubCommand1_Click()
UnloadForm10
Unloadform1
Form10.Show
PrivateSubCommand2_Click()
UnloadForm10
Unloadform1
PrivateSubCommand3_Click()
Fori=0To99
Form10.Command1.Item(i).Picture=LoadPicture()
Form10.Command1.Item(i).Caption="
"
Form10.Command1.Item(i).Enabled=True
3、子窗体(form2)界面如下:
子窗体二(form2)的代码:
Unloadform2
Form10.Command1.Item(i).Picture=LoadPicture()
Form10.Command1.Item(i).Caption="
Form10.Command1.Item(i).Enabled=True
注释:
共三个窗体(这里是form10、form1、form2)、三个标签(这里是label2、label3、label7)设计时,根据具体的情况对应修改即可。