扫雷游戏设计代码VB完善版_第1页
扫雷游戏设计代码VB完善版_第2页
扫雷游戏设计代码VB完善版_第3页
扫雷游戏设计代码VB完善版_第4页
扫雷游戏设计代码VB完善版_第5页
全文预览已结束

下载本文档

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

文档简介

-.z.扫雷游戏VB设计实现最终界面如下:显然只需完成三个窗体的设计即可,具体设计界面和代码如下:主窗体〔form10〕设计界面:主窗体〔form10〕的代码:Dimd(11,11)AsIntegerDimkAsIntegerDimv(100)AsInteger'定义全局变量'PrivateSubmand1_Click(Inde*AsInteger)Timer1.Enabled=True'当点击任意一个命令按钮时〔即开场游戏〕,则启动计时器'i=Inde*\10+1j=Inde*Mod10+1'将二维数组的元素与命令按钮一一对应'Ifd(i,j)=1Then'判断是否点到地雷'Timer1.Enabled=False'关闭计时器,游戏完毕'Fori=1To10Forj=1To10n=10*(i-1)m=j-1Ifd(i,j)=1Thenmand1.Item(m+n).Picture=LoadPicture(App.Path&"\2.jpg")'在按钮上显示地雷图片'EndIfForm1.Show'弹出子窗体1〔判断输赢〕'Ne*tjNe*tiElseIfv(Inde*)=Inde*+1Then'判断是否插上红旗或是问号图片'mand1.Item(Inde*).Picture=LoadPicture()'去除图片'mand1.Item(Inde*).Caption=f(i,j)'调用函数,显示周围地雷数'mand1.Item(Inde*).Enabled=False'将按钮设为不可用'Label7.Caption=Val(Label7.Caption)+1v(Inde*)=0EndIfh=s(i,j)'调用函数,显示周围的情况〔边界〕'ForY=0To99Ifv(Y)=Y+1Thenmand1.Item(Y).Enabled=True'如果是按钮插上了红旗则将按钮设置为可用'EndIfNe*tYEndIfFork=0To99Ifmand1.Item(k).Enabled=FalseThenp=p+1'统计扫过的按钮个数'Ifp=90ThenForY=0To100v(Y)=0Ne*tY'将数组v的元素重新置0〔此步目的为实现重玩而设〕'Form2.Show'如果等于90个则完毕游戏,弹出子窗体2〔赢了〕'EndIfEndIfNe*tkEndSubPrivateSubmand1_MouseUp(Inde*AsInteger,ButtonAsInteger,ShiftAsInteger,*AsSingle,YAsSingle)IfButton=2Then'右击鼠标'Ifv(Inde*)<>Inde*+1Then'判断是否已插上红旗'mand1.Item(Inde*).Picture=LoadPicture(App.Path&"\1.jpg")'插上红旗'v(Inde*)=Inde*+1'给数组元素赋值,以此实现按钮图片的切换或显示状态'Label7.Caption=Val(Label7.Caption)-1'在标签7中显示插上的红旗个数'Elsemand1.Item(Inde*).Picture=LoadPicture(App.Path&"\3.jpg")'将问号图片替换红旗'Label7.Caption=Val(Label7.Caption)+1v(Inde*)=0EndIfEndIfFori=1To10Forj=1To10Ifd(i,j)=1Thenn=10*(i-1)m=j-1Ifv(m+n)=m+n+1Thenc=c+1Ifc=10ThenForY=0To100v(Y)=0Ne*tY'将数组v的元素重新置0〔此步目的为实现重玩而设〕'Form2.Show'如果等于90个则完毕游戏,弹出子窗体2〔赢了〕'EndIfEndIfNe*tjNe*tiEndSubPrivateSubForm_Load()k=0Fori=1To10Forj=1To10d(i,j)=0'将数组元素置0'Ne*tjNe*tiDoWhilen<>10Randomizei=Int(10*Rnd+1)j=Int(10*Rnd+1)Ifd(i,j)=0Thend(i,j)=1:n=n+d(i,j)'产生十个随机数,即相当于十个地雷'LoopForm10.Label7.Caption=10Form10.Label2.Caption=0Form10.Label3.Caption=0EndSubFunctionf(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)EndFunctionFunctions(i,j)'定义一个函数显示点击区域周围的情况〔即边界〕'ForY=0To100Ifv(Y)=Y+1Thenmand1.Item(Y).Enabled=False'如插上了红旗,则将按钮先设为不可用'EndIfNe*tYIff(i,j)<>0Then'函数嵌套,调用函数判断周围是否无地雷'n=10*(i-1)m=j-1mand1.Item(m+n).Picture=LoadPicture()mand1.Item(n+m).Caption=f(i,j)mand1.Item(n+m).Enabled=False'去除图片,显示地雷数,设置按钮不可用'ElseFora=i-1Toi+1Forb=j-1Toj+1Ifa<>0Andb<>11Anda<>11Andb<>0Thenn=10*(a-1)m=b-1Ifmand1.Item(n+m).Enabled=TrueThenmand1.Item(m+n).Picture=LoadPicture()mand1.Item(n+m).Caption=f(a,b)mand1.Item(n+m).Enabled=False'去除图片,显示地雷数,设置按钮不可用'h=s(a,b)'调用函数本身,即实现递归'EndIfEndIfNe*tbNe*taEndIfEndFunctionPrivateSubTimer1_Timer()'设计一个计时器'Label2.Caption=Val(Label2.Caption)+1Label3.Caption=Val(Label2.Caption)\60+Val(Label3.Caption)Label2.Caption=Val(Label2.Caption)Mod60EndSub子窗体一〔form1〕界面如下:子窗体一〔form1〕的代码:PrivateSubmand1_Click()UnloadForm10Unloadform1Form10.ShowEndSubPrivateSubmand2_Click()UnloadForm10Unloadform1EndSubPrivateSubmand3_Click()Fori=0To99Form10.mand1.Item(i).Picture=LoadPicture()Form10.mand1.Item(i).Caption=""Form10.mand1.Item(i).Enabled=TrueNe*tiForm10.Label7.Caption=10Form10.Label2.Caption=0Form10.Label3.Caption=0Unloadform1EndSub子窗体〔form2〕界面如下:子窗体二〔form2〕的代码:PrivateSubmand1_Click()UnloadForm10Form10.ShowUnloadform2EndSubPrivateSubmand2_Click()UnloadForm10Unloadform2EndSubPrivateSubmand3_Click()Fori=0To99Form10.mand1.It

温馨提示

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

评论

0/150

提交评论