扫雷游戏设计代码VB完善版.docx

上传人:b****2 文档编号:2162469 上传时间:2022-10-27 格式:DOCX 页数:11 大小:474.44KB
下载 相关 举报
扫雷游戏设计代码VB完善版.docx_第1页
第1页 / 共11页
扫雷游戏设计代码VB完善版.docx_第2页
第2页 / 共11页
扫雷游戏设计代码VB完善版.docx_第3页
第3页 / 共11页
扫雷游戏设计代码VB完善版.docx_第4页
第4页 / 共11页
扫雷游戏设计代码VB完善版.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

扫雷游戏设计代码VB完善版.docx

《扫雷游戏设计代码VB完善版.docx》由会员分享,可在线阅读,更多相关《扫雷游戏设计代码VB完善版.docx(11页珍藏版)》请在冰豆网上搜索。

扫雷游戏设计代码VB完善版.docx

扫雷游戏设计代码VB完善版

扫雷游戏VB设计实现

最终界面如下:

显然只需完成三个窗体的设计即可,具体设计界面和代码如下:

1、主窗体(form10)设计界面:

主窗体(form10)的代码:

Dimd(11,11)AsInteger

DimkAsInteger

Dimv(100)AsInteger'定义全局变量'

PrivateSubCommand1_Click(IndexAsInteger)

Timer1.Enabled=True'当点击任意一个命令按钮时(即开始游戏),则启动计时器'

i=Index\10+1

j=IndexMod10+1'将二维数组的元素与命令按钮一一对应'

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

EndIf

h=s(i,j)'调用函数,显示周围的情况(边界)'

ForY=0To99

Ifv(Y)=Y+1Then

Command1.Item(Y).Enabled=True'如果是按钮插上了红旗则将按钮设置为可用'

EndIf

NextY

EndIf

Fork=0To99

IfCommand1.Item(k).Enabled=FalseThen

p=p+1'统计扫过的按钮个数'

Ifp=90Then

ForY=0To100

v(Y)=0

NextY'将数组v的元素重新置0(此步目的为实现重玩而设)'

Form2.Show'如果等于90个则结束游戏,弹出子窗体2(赢了)'

EndIf

EndIf

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中显示插上的红旗个数'

Else

Command1.Item(Index).Picture=LoadPicture(App.Path&"\3.jpg")'将问号图片替换红旗'

Label7.Caption=Val(Label7.Caption)+1

v(Index)=0

EndIf

EndIf

Fori=1To10

Forj=1To10

Ifd(i,j)=1Then

n=10*(i-1)

m=j-1

Ifv(m+n)=m+n+1Thenc=c+1

Ifc=10Then

ForY=0To100

v(Y)=0

NextY'将数组v的元素重新置0(此步目的为实现重玩而设)'

Form2.Show'如果等于90个则结束游戏,弹出子窗体2(赢了)'

EndIf

EndIf

Nextj

Nexti

EndSub

 

PrivateSubForm_Load()

k=0

Fori=1To10

Forj=1To10

d(i,j)=0'将数组元素置0'

Nextj

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

EndSub

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)'定义一个函数显示点击区域周围的情况(即边界)'

ForY=0To100

Ifv(Y)=Y+1Then

Command1.Item(Y).Enabled=False'如插上了红旗,则将按钮先设为不可用'

EndIf

NextY

Iff(i,j)<>0Then'函数嵌套,调用函数判断周围是否无地雷'

n=10*(i-1)

m=j-1

Command1.Item(m+n).Picture=LoadPicture()

Command1.Item(n+m).Caption=f(i,j)

Command1.Item(n+m).Enabled=False'清除图片,显示地雷数,设置按钮不可用'

Else

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(m+n).Picture=LoadPicture()

Command1.Item(n+m).Caption=f(a,b)

Command1.Item(n+m).Enabled=False'清除图片,显示地雷数,设置按钮不可用'

h=s(a,b)'调用函数本身,即实现递归'

EndIf

EndIf

Nextb

Nexta

EndIf

EndFunction

PrivateSubTimer1_Timer()'设计一个计时器'

Label2.Caption=Val(Label2.Caption)+1

Label3.Caption=Val(Label2.Caption)\60+Val(Label3.Caption)

Label2.Caption=Val(Label2.Caption)Mod60

EndSub

2、子窗体一(form1)界面如下:

子窗体一(form1)的代码:

PrivateSubCommand1_Click()

UnloadForm10

Unloadform1

Form10.Show

EndSub

PrivateSubCommand2_Click()

UnloadForm10

Unloadform1

EndSub

PrivateSubCommand3_Click()

Fori=0To99

Form10.Command1.Item(i).Picture=LoadPicture()

Form10.Command1.Item(i).Caption=""

Form10.Command1.Item(i).Enabled=True

Nexti

Form10.Label7.Caption=10

Form10.Label2.Caption=0

Form10.Label3.Caption=0

Unloadform1

EndSub

3、子窗体(form2)界面如下:

子窗体二(form2)的代码:

PrivateSubCommand1_Click()

UnloadForm10

Form10.Show

Unloadform2

EndSub

PrivateSubCommand2_Click()

UnloadForm10

Unloadform2

EndSub

PrivateSubCommand3_Click()

Fori=0To99

Form10.Command1.Item(i).Picture=LoadPicture()

Form10.Command1.Item(i).Caption=""

Form10.Command1.Item(i).Enabled=True

Nexti

Unloadform2

Form10.Label7.Caption=10

Form10.Label2.Caption=0

Form10.Label3.Caption=0

EndSub

注释:

共三个窗体(这里是form10、form1、form2)、三个标签(这里是label2、label3、label7)设计时,根据具体的情况对应修改即可。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1