Vb扫雷程序代码Word文档下载推荐.docx
- 文档编号:21615878
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:26
- 大小:19.90KB
Vb扫雷程序代码Word文档下载推荐.docx
《Vb扫雷程序代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Vb扫雷程序代码Word文档下载推荐.docx(26页珍藏版)》请在冰豆网上搜索。
IffrmCustomDlg、mblnEscapeThenExitSub
objMine、SetMineFieldDimensionVal(frmCustomDlg、txtRows),Val(frmCustomDlg、txtColumns),Val(frmCustomDlg、txtMines),True
卸载隐藏的对话框
UnloadfrmCustomDlg
做好准备开始新游戏
PrivateSubmnuExit_Click()
调用terminate事件
SetobjMine=Nothing
退出游戏
End
PrivateSubmnuExpert_Click()
mnuExpert、Checked=True
高级模式
objMine、SetMineFieldDimension16,30,100,False
PrivateSubmnuIntermediate_Click()
mnuIntermediate、Checked=True
自定义模式
objMine、SetMineFieldDimension16,16,40,False
PrivateSubmnuNew_Click()
开始新游戏
objMine、NewGame
OptionExplicit
'
判断左键就是否按下
PrivateConstLEFT_BUTTONAsByte=1
标记没有地雷的区域
PrivateConstNONEAsByte=0
标记就是否触雷
PrivateConstMINEAsByte=243
已经清除地雷的区域
PrivateConstBEENAsByte=244
标记确定已经有地雷的区域
PrivateConstFLAGGEDAsByte=2
标记可疑区域
PrivateConstQUESTIONAsByte=1
最大、最小行列数
PrivateConstMIN_MINESAsByte=10
PrivateConstMAX_MINESAsByte=99
PrivateConstMIN_ROWSAsInteger=8
PrivateConstMAX_ROWSAsInteger=24
PrivateConstMIN_COLSAsInteger=8
PrivateConstMAX_COLSAsInteger=36
宽
PrivateConstmintButtonWidthAsByte=16
高
PrivateConstmintButtonHeightAsByte=16
总地雷数
PrivatembytNumMinesAsByte
尚未标记的地雷数
PrivatembytCorrectHitsAsByte
已经标记出的雷数(包括错误的)
PrivatembytTotalHitsAsByte
不同等级游戏的总行列数
PrivatemintRowsAsInteger
PrivatemintColsAsInteger
PrivatemintRowAsInteger
PrivatemintColAsInteger
标记就是否开始新游戏
PublicmblnNewGameAsBoolean
标记一个鼠标单击事件正在进行
PrivatemblnHitTestBegunAsBoolean
PrivatemfrmDisplayAsForm
PrivatembytMineStatus()AsByte
PrivatembytMarked()AsByte
PrivatembytMineLocations()AsByte
PrivatemcolWrongLocationsAsNewCollection
PublicSubBeginHitTest(intButtonAsInteger,intXAsSingle,intYAsSingle)
如果当前游戏结束则开始新的游戏
IfmblnNewGameThen
NewGame
EndIf
mblnHitTestBegun=True
根据位图计算栅格大小
intX=Int(intX/mintButtonWidth)
intY=Int(intY/mintButtonHeight)
退出
IfintX>
=mintCols_
OrintY>
=mintRows_
OrintX<
0_
OrintY<
0Then
ExitSub
mintCol=intX*mintButtonWidth
mintRow=intY*mintButtonHeight
IfmbytMineStatus(intY,intX)>
=BEENThenExitSub
DimblnLeftDownAsBoolean
blnLeftDown=(intButtonAndLEFT_BUTTON)>
0
如果左键单击
IfblnLeftDownThen
如果该区域已经清除干净,则单击无效
IfmbytMarked(intY,intX)>
=FLAGGEDThenExitSub
IfmbytMarked(intY,intX)=QUESTIONThen
mfrmDisplay、imgPressed、Visible=False
mfrmDisplay、imgQsPressed、Visible=False
mfrmDisplay、imgQsPressed、Left=mintCol
mfrmDisplay、imgQsPressed、Top=mintRow
mfrmDisplay、imgQsPressed、Visible=True
Else
mfrmDisplay、imgPressed、Left=mintCol
mfrmDisplay、imgPressed、Top=mintRow
mfrmDisplay、imgPressed、Visible=True
如果右键单击
DimMsgAsString
DimCRLFAsString
CRLF=Chr$(13)&
Chr$(10)
SelectCasembytMarked(intY,intX)
CaseNONE:
IfmbytTotalHits=mbytNumMinesThen
Msg="
不能标记更多的雷!
"
&
CRLF
Msg=Msg&
"
一个或多个雷标记错误。
单击鼠标右键取消某些雷的标记。
MsgBoxMsg,vbCritical,"
WinMine:
Error!
如果不做标记,则显示一个准备标记的图标
mfrmDisplay、PaintPicturemfrmDisplay、imgFlag,mintCol,mintRow
增加已标记地雷的总数
mbytTotalHits=mbytTotalHits+1
mfrmDisplay、lblMinesLeft=_
MinesLeft:
mbytNumMines-mbytTotalHits
如果标记正确
IfmbytMineStatus(intY,intX)=MINEThen
mbytCorrectHits=mbytCorrectHits+1
mbytMarked(intY,intX)=FLAGGED
Else'
如果标记错误
DimobjCoordsAsNewclsCoords
objCoords、mintX=intX
objCoords、mintY=intY
mcolWrongLocations、AddobjCoords
mbytMarked(intY,intX)=_
mbytTotalHits-mbytCorrectHits+2
如果所有地雷都正确的标记出来
IfmbytCorrectHits=mbytNumMinesThen
太棒了!
您赢了!
MsgBoxMsg,vbInformation,"
WinMine"
准备开始新游戏
mblnNewGame=True
CaseQUESTION:
如果标记位置已做其她标记
mbytMarked(intY,intX)=NONE
显示区域不变
mfrmDisplay、PaintPicture_
mfrmDisplay、imgButton,mintCol,mintRow
CaseElse:
mfrmDisplay、imgQuestion,mintCol,mintRow
总数减1
mbytTotalHits=mbytTotalHits-1
刷新
如果当前标记区域有地雷
mbytCorrectHits=mbytCorrectHits-1
mcolWrongLocations、RemovembytMarked(intY,intX)-2
DimintXwmAsInteger
DimintYwmAsInteger
DimiAsInteger
Fori=mbytMarked(intY,intX)-2_
TomcolWrongLocations、Count
intXwm=mcolWrongLocations(i)、mintX
intYwm=mcolWrongLocations(i)、mintY
mbytMarked(intYwm,intXwm)=_
mbytMarked(intYwm,intXwm)-1
Next
mbytMarked(intY,intX)=QUESTION
EndSelect
PublicSubEndHitTest(intButtonAsInteger,intXAsSingle,intYAsSingle)
IfmblnHitTestBegunThen
重置标记
mblnHitTestBegun=False
如果鼠标左键按下
计算行列数
=mintColsOrintY>
0OrintY<
intX=mintCol\mintButtonWidth
intY=mintRow\mintButtonHeight
SelectCasembytMineStatus(intY,intX)
CaseIs>
=BEEN:
OpenBlanksintX,intY
CaseMINE:
DimintXmAsInteger
DimintYmAsInteger
DimvntCoordAsVariant
Fori=0TombytNumMines-1
intYm=mbytMineLocations(i,0)
intXm=mbytMineLocations(i,1)
IfmbytMarked(intYm,intXm)<
FLAGGEDThen
mfrmDisplay、PaintPicturemfrmDisplay、imgMine,_
intXm*mintButtonWidth,intYm*mintButtonHeight
mfrmDisplay、imgBlown,mintCol,mintRow
ForEachvntCoordInmcolWrongLocations
intYm=vntCoord、mintY
intXm=vntCoord、mintX
mfrmDisplay、imgWrongMine,_
intXm*mintButtonWidth,_
intYm*mintButtonHeight
MsgBox"
您输了!
vbExclamation,"
mfrmDisplay、imgPressed,mintCol,mintRow
mfrmDisplay、CurrentX=mintCol
mfrmDisplay、CurrentY=mintRow
mfrmDisplay、ForeColor=QBColor(mbytMineStatus(intY,intX))
mfrmDisplay、PrintmbytMineStatus(intY,intX)
标记已经清除
mbytMineStatus(intY,intX)=_
mbytMineStatus(intY,intX)+BEEN
PublicPropertySetfrmDisplay(frmDisplayAsForm)
SetmfrmDisplay=frmDisplay
mfrmDisplay、FontBold=True
为了适应游戏级别,改变窗体大小
ResizeDisplay
EndProperty
获取当前雷区的大小
PublicSubGetMineFieldDimensions(frmDialogAsForm)
frmDialog、txtRows=mintRows
frmDialog、txtColumns=mintCols
frmDialog、txtMines=mbytNumMines
frmDialog、txtRows、SelLength=Len(frmDialog、txtRows)
frmDialog、txtColumns、SelLength=Len(frmDialog、txtColumns)
frmDialog、txtMines、SelLength=Len(frmDialog、txtMines)
初始化雷区
PrivateSubInitializeMineField()
ReDimmbytMineStatus(mintRows-1,mintCols-1)
ReDimmbytMarked(mintRows-1,mintCols-1)
ReDimmbytMineLocations(mbytNumMines-1,1)
Randomize
DimrAsInteger
DimcAsInteger
DimintXAsInteger
DimintYAsInteger
intX=Int(Rnd*mintCols)
intY=Int(Rnd*mintRows)
WhilembytMineStatus(intY,intX)=MINE
Wend
mbytMineStatus(intY,intX)=MINE
mbytMineLocations(i,0)=intY
mbytMineLocations(i,1)=intX
Forr=-1To1
Forc=-1To1
DimblnDxAsBoolean
DimblnDyAsBoolean
blnDy=intY+r>
=0AndintY+r<
mintRows
blnDx=intX+c>
=0AndintX+c<
mintCols
IfblnDyAndblnDxThen
IfmbytMineStatus(intY+r,intX+c)<
>
MINEThen
mbytMineStatus(intY+r,intX+c)=_
mbytMineStatus(intY+r,intX+c)+1
PublicSubNewGame()
清除窗体
mfrmDisplay、Cls
重置所有变量
mbytCorrectHits=0
mbytTotalHits=0
mintRow=-1
mintCol=-1
mblnNewGame=False
Fori=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Vb 扫雷 程序代码
![提示](https://static.bdocx.com/images/bang_tan.gif)