在1.0中,仔细看CODE的朋友能发现,我引入了“生命值”这个个概念。这个概念在该款游戏的2.0中得到更加彻底的应用。因为,2.0的游戏已经不再单单是个“扫雷”游戏了。
在2.0中,如果你遇到了地雷,你不一定会失去你的HP。事实上,在这里遇到“地雷”意味着的是你要与这枚“地雷”进行战斗!对,这就是2.0游戏一大特点:引入了战斗系统。事实上,在2.0中还引入了“宝物”和“陷阱”两大系统。而这两个系统的引入点,就是在1.0中用以区分地雷和非地雷GRID的判定值。这个值现在被拓宽到了宝物和陷阱中。
2.0中的宝物包括了“金刚罩”、“冲击波”和“HP”。其分别作用是标出左右一圈中所有的地雷士兵、扫除某一个方向上指定GRID的地雷士兵(由游戏的难度等级LEVEL决定)和得到一点HP。
陷阱包括了“触发”、“迷惑”和“魔王”。其作用分别是触发周围一圈所有的地雷士兵、一个用以迷惑的无法消除的GRID和一个HP、AP、DP都是正常士兵指定倍的魔王(由游戏难度等级决定)。基本上,碰上了魔王你也就等于注定要失去一个HP了。
此外,2.0中还引入了积分这么一个概念。积分和许多东西都有关联,大家玩了就知道了。
FRMMAIN.FRM:
Dim Win As Boolean
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 113 Then
If Num = 0 Then
MnuStart_Click
Else
MnuRestart_Click
End If
End If
If KeyCode = 112 Then MnuStart_Click
End Sub
Private Sub Form_Load()
Me.Top = (Screen.Height – Me.Height) / 2
Me.Left = (Screen.Width – Me.Width) / 2
GridsOn(0).Height = GridsOn(0).Width
GridsOff(0).Height = GridsOn(0).Width
GridsOff(0).Width = GridsOn(0).Width
WNum = GetSetting("乐趣扫雷游戏II", "游戏设置", "WNum", 10)
HNum = GetSetting("乐趣扫雷游戏II", "游戏设置", "HNum", 10)
BombRate = GetSetting("乐趣扫雷游戏II", "游戏设置", "Hard", 16)
Level = GetSetting("乐趣扫雷游戏II", "游戏设置", "Level", 1)
ShowBomb = False
FirstGame = True
Win = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
SaveSetting "乐趣扫雷游戏II", "游戏设置", "WNum", WNum
SaveSetting "乐趣扫雷游戏II", "游戏设置", "HNum", HNum
SaveSetting "乐趣扫雷游戏II", "游戏设置", "Hard", BombRate
SaveSetting "乐趣扫雷游戏II", "游戏设置", "Level", Level
End Sub
Private Sub GridsOff_DblClick(Index As Integer)
Dim TmpA, TmpB As Integer
TmpA = GetSurround(Index)
TmpB = GetOut(Index)
If Grids(Index).Environment = TmpA Then
If GetNum(Grids(Index).X – 1, Grids(Index).Y) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y), 1, 1, 1, 1)
If GetNum(Grids(Index).X – 1, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y – 1), 1, 1, 1, 1)
If GetNum(Grids(Index).X – 1, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y + 1), 1, 1, 1, 1)
If GetNum(Grids(Index).X, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X, Grids(Index).Y – 1), 1, 1, 1, 1)
If GetNum(Grids(Index).X, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X, Grids(Index).Y + 1), 1, 1, 1, 1)
If GetNum(Grids(Index).X + 1, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y – 1), 1, 1, 1, 1)
If GetNum(Grids(Index).X + 1, Grids(Index).Y) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y), 1, 1, 1, 1)
If GetNum(Grids(Index).X + 1, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y + 1), 1, 1, 1, 1)
End If
If Grids(Index).Environment = TmpA + TmpB Then
If GetNum(Grids(Index).X – 1, Grids(Index).Y) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y), 2, 1, 1, 1)
If GetNum(Grids(Index).X – 1, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y – 1), 2, 1, 1, 1)
If GetNum(Grids(Index).X – 1, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y + 1), 2, 1, 1, 1)
If GetNum(Grids(Index).X, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X, Grids(Index).Y – 1), 2, 1, 1, 1)
If GetNum(Grids(Index).X, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X, Grids(Index).Y + 1), 2, 1, 1, 1)
If GetNum(Grids(Index).X + 1, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y – 1), 2, 1, 1, 1)
If GetNum(Grids(Index).X + 1, Grids(Index).Y) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y), 2, 1, 1, 1)
If GetNum(Grids(Index).X + 1, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y + 1), 2, 1, 1, 1)
End If
End Sub
Private Sub GridsOff_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
If Grids(Index).Checked = 1 Then
GridsOn(Index).Visible = True
GridsOff(Index).Visible = False
GridsOff(Index).BackColor = &H8000000F
Bombs = Bombs + 1
Grids(Index).Checked = 0
If Grids(Index).IsBomb Then BombsLeft = BombsLeft + 1
End If
MnuBombLeft.Caption = "炸弹:" & Bombs
End If
End Sub
Private Sub GridsOn_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
If KeyCode = 113 Then MnuRestart_Click
If KeyCode = 112 Then MnuStart_Click
End Sub
Private Sub GridsOn_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
LeftClick Index
ElseIf Button = 2 Then
RightClick Index
End If
MnuBombLeft.Caption = "炸弹:" & Bombs
If Life = 0 And Not ShowBomb Then
MsgBox "抱歉,你已经死了。", vbOKOnly, "乐趣扫雷游戏II"
End If
End Sub
Private Sub MnuClear_Click()
If MsgBox("您确定要清除乐趣扫雷游戏II积分榜上的所有积分记录?", vbYesNo, "乐趣扫雷游戏II") = vbYes Then
For I = 1 To 5
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No" & I & "Name", "乐趣扫雷游戏II"
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No" & I & "Size", "30*30:21"
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No" & I & "Point", 100
Next I
End If
End Sub
Private Sub MnuExit_Click()
Form_Unload True
End
End Sub
Private Sub MnuHelp_Click()
MsgBox "在界面中,凸起的格子为尚为探明的区域,凹下的格子为已经探索或者已经标号的区域。" & Chr(10) & _
"在凸起的格子上点击左键来探索该区域,点击右键来为该区域标号。" & Chr(10) & _
"若所探索的格子中存在地雷,则格子凹下同时显示红色,表示该处地雷已炸,同时玩家丧失一条性命。" & Chr(10) & _
"标号的格子会凹下显示蓝色。若时候认为该处不应标号,可通过在该处再次点击右键来消除标号。" & Chr(10) & _
"一个区域已经探索,并且周围已经具有了如其显示的标号数以后,可以通过双击该处进行自动探索。" & Chr(10) & _
"同时,若在某已探索区域周围剩下的未探索区域就是其所显示的雷数,则对这些区域自动标号。" & Chr(10) & _
"游戏以往家的性命全部丧失或者地图上所有地雷被标号作为结束。" & Chr(10) & _
"如果胜利结束,则显示玩家积分和排行榜。" & Chr(10) & Chr(10) & _
"特殊颜色的格子具有不同意义:" & Chr(10) & _
"白色:气劲保护罩" & Chr(10) & _
"湖蓝:触动周围所有机关" & Chr(10) & _
"黑色:遇到恶魔" & Chr(10) & _
"黄色:得到一条命" & Chr(10) & _
"粉红:得到一个冲击波" & Chr(10) & _
"绿色:1000点加分" & Chr(10) & _
"土黄:丢失大量分数" & Chr(10) & Chr(10) & _
"II代中还引入了阻碍玩家视线的“云雾”系统,希望能给大家带来推理上的新体验!" & Chr(10) & Chr(10) & _
"感谢您对梦幻工作室游戏的支持,谢谢!", vbOKOnly, "乐趣扫雷游戏II"
End Sub
Private Sub MnuPoint_Click()
MsgBox Goal + Gift + Points * (1 + Int(Level / 3) * (Life / 10) ^ 0.2), vbOKOnly, "乐趣扫雷游戏II"
End Sub
Private Sub MnuQR_Click()
If Bombs = 0 And BombsLeft = 0 Then
MnuLifeLeft.Caption = "生命:" & Life
Points = Int(Num * BombRate / (1 + ((Num * BombRate / Num – 0.25) * 10) ^ 2) / Time * (Life / (Level * 2 + 3) * 10) * 1000 * Num ^ 0.55 * BombRate ^ 0.75)
TmrTime.Enabled = False
Goal = Goal + Points * (1 + Int(Level / 3) * (Life / 10) ^ 0.2) + Gift
MsgBox "您的级别:" & Level & Chr(13) & Chr(10) & "您的积分:" & Points & Chr(13) & Chr(10) & "您得到的额外点数:" & Gift & Chr(13) & Chr(10) & "您现在的总点数:" & Goal, vbOKOnly
LblInfo.Caption = "您现在的点数为:" & Goal & "点"
CheckRecord
Tmp1 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Point", 0)
Tmp2 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Point", 0)
Tmp3 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Point", 0)
Tmp4 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Point", 0)
Tmp5 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Point", 0)
Smp1 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Size", 0)
Smp2 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Size", 0)
Smp3 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Size", 0)
Smp4 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Size", 0)
Smp5 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Size", 0)
strTmp = "乐趣扫雷积分榜" & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Name", "") & ":" & Tmp1 & "@" & Smp1 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Name", "") & ":" & Tmp2 & "@" & Smp2 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Name", "") & ":" & Tmp3 & "@" & Smp3 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Name", "") & ":" & Tmp4 & "@" & Smp4 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Name", "") & ":" & Tmp5 & "@" & Smp5 & Chr(10)
MsgBox strTmp, vbOKOnly, "乐趣扫雷排行榜"
LblInfo.Caption = "您现在的点数为:" & Goal
Win = True
FirstGame = False
Else
MsgBox "抱歉,游戏还没有结束呢!", vbOKOnly, "乐趣扫雷游戏II"
End If
End Sub
Private Sub MnuRestart_Click()
Dim Tmp As Long
If Win Then
Level = Level + 1
If Int(Level / 3) * 3 = Level Then
HNum = HNum + 1
WNum = WNum + 1
Num = HNum * WNum
End If
If Int(Level / 4) * 4 = Level Then
BombRate = BombRate + 1
End If
End If
If Not Win Then Tmp = MsgBox("您确定您要重新开始游戏吗?这会让您损失一半以上的点数。", vbYesNo, "乐趣扫雷游戏II")
If Win Or Tmp = vbYes Then
ShowBomb = False
For I = 1 To GridsOn().Count – 1
Unload GridsOn(I)
Unload GridsOff(I)
Next I
ReDim Grids(Num)
For I = 1 To Num
Load GridsOn(I)
Load GridsOff(I)
Grids(I).IsBomb = False
Grids(I).Checked = 0
GridsOff(I).BackColor = &H8000000F
Next I
Bombs = Int(Num * (BombRate + Rnd() * 10 – 5) / 100)
If Bombs = 0 Then Bombs = Int(Num * BombRate / 100)
BombsLeft = Bombs
Time = 0
Life = Life + Level * 2 + 3
TmrTime.Enabled = True
MnuLifeLeft.Caption = "生命:" & Life
Grids(0).Checked = -1
FrmShow.Height = MnuBombLeft.Height + LblInfo.Height + 150
FrmShow.Left = 0
Me.Height = WNum * GridsOn(0).Width
FrmShow.Width = WNum * GridsOn(0).Width
FrmShow.Top = WNum * GridsOn(0).Width + 100
Me.Height = 2 * Me.Height – Me.ScaleHeight + 200 + FrmShow.Height
Me.Width = HNum * GridsOn(0).Width
Me.Width = 2 * Me.Width – Me.ScaleWidth
Me.Top = (Screen.Height – Me.Height) / 2
Me.Left = (Screen.Width – Me.Width) / 2
PutGrids HNum, WNum
PutBomb
PutGift
If Not Win Then Goal = Goal / 2 – 100
If Goal < 0 Then Goal = 0
Points = 0
End If
End Sub
Private Sub MnuShow_Click()
Dim Tmp1, Tmp2, Tmp3, Tmp4, Tmp5 As Integer
Dim Smp1, Smp2, Smp3, Smp4, Smp5 As String
Dim strTmp As String
Tmp1 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Point", 0)
Tmp2 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Point", 0)
Tmp3 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Point", 0)
Tmp4 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Point", 0)
Tmp5 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Point", 0)
Smp1 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Size", 0)
Smp2 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Size", 0)
Smp3 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Size", 0)
Smp4 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Size", 0)
Smp5 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Size", 0)
strTmp = "乐趣扫雷积分榜" & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Name", "") & ":" & Tmp1 & "@" & Smp1 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Name", "") & ":" & Tmp2 & "@" & Smp2 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Name", "") & ":" & Tmp3 & "@" & Smp3 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Name", "") & ":" & Tmp4 & "@" & Smp4 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Name", "") & ":" & Tmp5 & "@" & Smp5 & Chr(10)
MsgBox strTmp, vbOKOnly, "乐趣扫雷排行榜"
End Sub
Private Sub MnuShowBomb_Click()
Dim I As Integer
ShowBomb = True
For I = 1 To Num
LeftClick I
Next I
End Sub
Private Sub MnuStart_Click()
On Error Resume Next
Dim I, J As Integer
ShowBomb = False
For I = 1 To GridsOn().Count
Unload GridsOn(I)
Unload GridsOff(I)
Next I
FrmLogin.Show vbModal
Life = Level * 2 + 3
If BombRate > 80 Then
MsgBox "炸弹比例设置太高,考虑到您的智慧,我们不推荐您这么做。我们将帮您设置为80。", vbOKOnly, "乐趣扫雷游戏II"
BombRate = 80
End If
If BombRate < 10 Then
MsgBox "炸弹比例设置太低,考虑到您的智慧,我们不推荐您这么做。我们将帮您设置为10。", vbOKOnly, "乐趣扫雷游戏II"
BombRate = 10
End If
If WNum = 0 Then WNum = 10
If HNum = 0 Then HNum = 10
Num = WNum * HNum
ReDim Grids(Num)
For I = 1 To Num
Load GridsOn(I)
Load GridsOff(I)
Next I
Grids(0).Checked = -1
MnuTimeUsed.Left = 0
MnuTimeUsed.Top = 50
LblInfo.Left = MnuTimeUsed.Width + 100
LblInfo.Top = 50
MnuBombLeft.Left = 0
MnuBombLeft.Top = LblInfo.Height + 100
MnuLifeLeft.Left = MnuBombLeft.Width + 50
MnuLifeLeft.Top = LblInfo.Height + 100
FrmShow.Height = MnuBombLeft.Height + LblInfo.Height + 150
FrmShow.Left = 0
Me.Height = WNum * GridsOn(0).Width
FrmShow.Width = WNum * GridsOn(0).Width
FrmShow.Top = WNum * GridsOn(0).Width + 100
Me.Height = 2 * Me.Height – Me.ScaleHeight + 200 + FrmShow.Height
Me.Width = HNum * GridsOn(0).Width
Me.Width = 2 * Me.Width – Me.ScaleWidth
Me.Top = (Screen.Height – Me.Height) / 2
Me.Left = (Screen.Width – Me.Width) / 2
PutGrids HNum, WNum
Randomize
Bombs = Int((BombRate + Rnd() * 10 – 5) / 100)
If Bombs = 0 Then Bombs = Int(Num * BombRate / 100)
BombsLeft = Bombs
PutBomb
PutGift
Time = 0
Goal = 0
TmrTime.Enabled = True
MnuLifeLeft.Caption = "生命:" & Life
Win = False
End Sub
Private Sub TmrTime_Timer()
MnuTimeUsed.Caption = "时间:" & Time
Time = Time + 1
End Sub
Private Sub PutGrids(ByVal HNum As Integer, ByVal WNum As Integer)
Dim I, J, TmpNum As Integer
On Error Resume Next
For I = 1 To HNum
For J = 1 To WNum
TmpNum = (I – 1) * WNum + J
Grids(TmpNum).X = I
Grids(TmpNum).Y = J
Grids(TmpNum).Checked = 0
Grids(TmpNum).Sort = 0
GridsOn(TmpNum).Left = (I – 1) * GridsOn(0).Width
GridsOn(TmpNum).Top = (J – 1) * GridsOn(0).Width
GridsOff(TmpNum).Left = (I – 1) * GridsOn(0).Width
GridsOff(TmpNum).Top = (J – 1) * GridsOn(0).Width
GridsOn(TmpNum).Visible = True
GridsOff(TmpNum).Visible = False
Next J
Next I
End Sub
Private Sub PutBomb()
Dim I, J As Integer
J = Bombs
BOMBSETTINGSTART:
Randomize
I = Int(Rnd() * Num)
If I = 0 Then I = 1
If Grids(I).IsBomb = False Then
Grids(I).IsBomb = True
J = J – 1
End If
If J > 0 Then GoTo BOMBSETTINGSTART
MnuBombLeft.Caption = "炸弹:" & Bombs
For I = 1 To Num
Grids(I).Environment = GetEnvironment(I)
Next I
End Sub
Private Sub PutGift()
‘Checked:-1:边界;0:还没有被探索;1:已经被标记;2:已经爆炸;3:已经按下的格子
‘Sort:1:四周气劲;2:四周陷阱;3:恶魔;4:奖一条命;5:直线标号器;6:加点数1000;7:点数大灾难
Dim Edge, RoundSave, RoundKill, SuperBomb, LifeUp, LineCleaner, PointUp, Killer As Integer
Dim IntTmp As Integer
Randomize
Edge = Int(Level * 5 * Rnd() * Sqr(Num) / 30)
If Edge > Num * 0.3 Then Edge = Num * 0.3
RoundSave = Int((Level – 1) * 1.3)
RoundKill = Int((Level – 1) * 1.3)
SuperBomb = Int((Level – 1) * 1.1)
LifeUp = Int(Level * 1.2) – 1
LineCleaner = Int(Level * 1.3) – 1
PointUp = (Level – 1) * 2
Killer = Int((Level – 1) * 1.1)
CHECKS:
If RoundSave + RoundKill + SuperBomb + LifeUp + LineCleaner + PointUp > Num * 0.7 Then
RoundSave = IIf(RoundSave – 1 > 0, RoundSave – 1, 0)
RoundKill = IIf(RoundKill – 1 > 0, RoundKill – 1, 0)
SuperBomb = IIf(SuperBomb – 1 > 0, SuperBomb – 1, 0)
LifeUp = IIf(LifeUp – 1 > 0, LifeUp – 1, 0)
LineCleaner = IIf(LineCleaner – 1 > 0, LineCleaner – 1, 0)
PointUp = IIf(PointUp – 1 > 0, PointUp – 1, 0)
Killer = IIf(Killer – 1 > 0, Killer – 1, 0)
GoTo CHECKS
End If
‘Set Items
SETS:
‘Set Edge
If Edge > 0 Then
IntTmp = Int(Rnd() * Num)
If Not (Grids(IntTmp).IsBomb) And Grids(IntTmp).Checked = 0 Then Grids(IntTmp).Checked = -1: Edge = Edge – 1
End If
‘Set RoundSave
If RoundSave > 0 Then
IntTmp = Int(Rnd() * Num)
If Grids(IntTmp).Sort = 0 Then Grids(IntTmp).Sort = 1: RoundSave = RoundSave – 1
End If
‘Set RoundKill
If RoundKill > 0 Then
IntTmp = Int(Rnd() * Num)
If Grids(IntTmp).Sort = 0 Then Grids(IntTmp).Sort = 2: RoundKill = RoundKill – 1
End If
‘Set BEelzebub
If SuperBomb > 0 Then
IntTmp = Int(Rnd() * Num)
If Grids(IntTmp).Sort = 0 Then Grids(IntTmp).Sort = 3: SuperBomb = SuperBomb – 1
End If
‘Set LifeUp
If LifeUp > 0 Then
IntTmp = Int(Rnd() * Num)
If Grids(IntTmp).Sort = 0 Then Grids(IntTmp).Sort = 4: LifeUp = LifeUp – 1
End If
‘Set LineCleaner
If LineCleaner > 0 Then
IntTmp = Int(Rnd() * Num)
If Grids(IntTmp).Sort = 0 Then Grids(IntTmp).Sort = 5: LineCleaner = LineCleaner – 1
End If
‘Set PointUp
If PointUp > 0 Then
IntTmp = Int(Rnd() * Num)
If Grids(IntTmp).Sort = 0 Then Grids(IntTmp).Sort = 6: PointUp = PointUp – 1
End If
If Edge > 0 Or RoundSave > 0 Or RoundKill > 0 Or SuperBomb > 0 Or LifeUp > 0 Or LineCleaner > 0 Or PointUp > 0 Then GoTo SETS
End Sub
Private Function GetNum(ByVal A As Integer, ByVal B As Integer) As Integer
If A <= 0 Or B <= 0 Or A >= HNum + 1 Or B >= WNum + 1 Then
GetNum = 0
Else
GetNum = (A – 1) * WNum + B
End If
End Function
Private Function GetEnvironment(ByVal Num As Integer) As Integer ‘察看给定格子周围有多少炸弹
GetEnvironment = 0
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y – 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y + 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y – 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y + 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y – 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y + 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
End Function
Private Function GetSurround(ByVal Num As Integer) As Integer ‘察看给定格子周围已经有多少格子被察看过
GetSurround = 0
‘察看有多少是标上雷的
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y – 1)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y + 1)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y – 1)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y + 1)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y – 1)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y + 1)).Checked = 1 Then GetSurround = GetSurround + 1
‘察看有多少雷已经炸开
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y – 1)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y + 1)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y – 1)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y + 1)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y – 1)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y + 1)).Checked = 2 Then GetSurround = GetSurround + 1
End Function
Private Function GetOut(ByVal Num As Integer) As Integer ‘察看给定格子周围有多少格子没有察看
GetOut = 0
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y – 1)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y + 1)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y – 1)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y + 1)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y – 1)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y + 1)).Checked = 0 Then GetOut = GetOut + 1
End Function
Private Sub CheckRecord()
Dim Tmp1, Tmp2, Tmp3, Tmp4, Tmp5, Tmp As Integer
Dim strTmp As String
Tmp1 = Val(GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Point", 0))
Tmp2 = Val(GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Point", 0))
Tmp3 = Val(GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Point", 0))
Tmp4 = Val(GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Point", 0))
Tmp5 = Val(GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Point", 0))
If Points >= Tmp1 Then
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Name", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Name", strTmp
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Point", Tmp4
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Size", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Size", strTmp
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Name", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Name", strTmp
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Point", Tmp3
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Size", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Size", strTmp
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Name", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Name", strTmp
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Point", Tmp2
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Size", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Size", strTmp
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Name", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No2Name", strTmp
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No2Point", Tmp1
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Size", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No2Size", strTmp
strTmp = InputBox("请输入您的名字:", "乐趣扫雷游戏II", "乐趣扫雷游戏II")
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No1Name", strTmp
strTmp = HNum & "*" & WNum & ":" & BombRate
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No1Size", strTmp
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No1Point", Points
GoTo ENDS
End If
If Points >= Tmp2 Then
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Name", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Name", strTmp
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Point", Tmp4
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Size", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Size", strTmp
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Name", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Name", strTmp
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Point", Tmp3
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Size", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Size", strTmp
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Name", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Name", strTmp
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Point", Tmp2
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Size", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Size", strTmp
strTmp = InputBox("请输入您的名字:", "乐趣扫雷游戏II", "乐趣扫雷游戏II")
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No2Name", strTmp
strTmp = HNum & "*" & WNum & ":" & BombRate
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No2Size", strTmp
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No2Point", Points
GoTo ENDS
End If
If Points >= Tmp3 Then
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Name", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Name", strTmp
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Point", Tmp4
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Size", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Size", strTmp
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Name", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Name", strTmp
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Point", Tmp3
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Size", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Size", strTmp
strTmp = InputBox("请输入您的名字:", "乐趣扫雷游戏II", "乐趣扫雷游戏II")
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Name", strTmp
strTmp = HNum & "*" & WNum & ":" & BombRate
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Size", strTmp
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Point", Points
GoTo ENDS
End If
If Points >= Tmp4 Then
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Name", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Name", strTmp
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Point", Tmp4
strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Size", 0)
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Size", strTmp
strTmp = InputBox("请输入您的名字:", "乐趣扫雷游戏II", "乐趣扫雷游戏II")
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Name", strTmp
strTmp = HNum & "*" & WNum & ":" & BombRate
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Size", strTmp
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Point", Points
GoTo ENDS
End If
If Points >= Tmp5 Then
strTmp = InputBox("请输入您的名字:", "乐趣扫雷游戏II", "乐趣扫雷游戏II")
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Name", strTmp
strTmp = HNum & "*" & WNum & ":" & BombRate
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Size", strTmp
SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Point", Points
End If
ENDS:
End Sub
Private Sub LeftClick(ByVal Index As Integer)
Dim IntTmp As Integer
If (Life <= 0 And Not ShowBomb) Or Grids(Index).Checked = -1 Then GoTo OUT
GridsOn(Index).Visible = False
GridsOff(Index).Visible = True
Grids(Index).Checked = 3
If Grids(Index).IsBomb Then
GridsOff(Index).BackColor = vbRed
Opp = 1
If Not ShowBomb Then FrmFight.Show vbModal
If FightResult = False Then
Life = Life – 1
MnuLifeLeft.Caption = "生命:" & Life
End If
Bombs = Bombs – 1
Grids(Index).Checked = 2
BombsLeft = BombsLeft – 1
Else
GridsOff(Index).Caption = Grids(Index).Environment
If Grids(Index).Environment = 0 Then
IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y – 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y + 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X, Grids(Index).Y – 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X, Grids(Index).Y + 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y – 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y + 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
End If
End If
Dim strTmp As String
Select Case Grids(Index).Sort
Case 1
LblInfo.Caption = "您得到了气劲保护罩!"
GridsOff(Index).BackColor = vbWhite
FunRoundSave Index
Case 2
LblInfo.Caption = "您触动了周围所有的机关!"
GridsOff(Index).BackColor = vbCyan
FunRoundKill Index
Case 3
LblInfo.Caption = "您遇到了恶魔!"
Opp = 2 + Int((Level – 1) * 0.25)
GridsOff(Index).BackColor = vbBlack
If Not ShowBomb Then FrmFight.Show vbModal
If FightResult = False Then
Life = Life – 1
MnuLifeLeft.Caption = "生命:" & Life
End If
Case 4
LblInfo.Caption = "您得到了一条奖励生命!"
GridsOff(Index).BackColor = vbYellow
Life = Life + 1
MnuLifeLeft.Caption = "生命:" & Life
Case 5
LblInfo.Caption = "您得到了一个冲击波!"
GridsOff(Index).BackColor = &HFF00FF
INPUTSET:
strTmp = LCase(InputBox("请输入您要释放冲击波的方向(上u下d左l右r):", "乐趣扫雷游戏II", "n"))
If strTmp = "n" Then GoTo INPUTSET
If Not ShowBomb Then FunLineCleaner Index, strTmp
Case 6
LblInfo.Caption = "您得到了1000点的加分!"
GridsOff(Index).BackColor = vbGreen
On Error Resume Next
Gift = Gift + 1000
Case 7
LblInfo.Caption = "您遇到了点数大灾难!"
GridsOff(Index).BackColor = &H80C0FF
Gift = (0 – Abs(Gift)) * 10
Goal = Goal / 3
End Select
OUT:
End Sub
Private Sub RightClick(ByVal Index As Integer)
Dim Tmp1, Tmp2, Tmp3, Tmp4, Tmp5 As Integer
Dim Smp1, Smp2, Smp3, Smp4, Smp5 As String
Dim strTmp As String
If Life <= 0 And Not ShowBomb Then GoTo OUT
If Grids(Index).Checked = 0 Then
GridsOn(Index).Visible = False
GridsOff(Index).Visible = True
GridsOff(Index).BackColor = vbBlue
Bombs = Bombs – 1
Grids(Index).Checked = 1
If Grids(Index).IsBomb Then BombsLeft = BombsLeft – 1
If Bombs = 0 Then
If BombsLeft = 0 Then
MsgBox "恭喜您获得胜利!", vbOKOnly, "乐趣扫雷游戏II"
Else
MsgBox "抱歉,您把一些不是地雷的地方给扫了。作为补偿,您陪上了您的生命!", vbOKOnly, "乐趣扫雷游戏II"
Life = Life – BombsLeft
If Life < 0 Then Life = 0
End If
MnuLifeLeft.Caption = "生命:" & Life
Points = Int(Num * BombRate / (1 + ((Num * BombRate / Num – 0.25) * 10) ^ 2) / Time * Life * 1000 * Num ^ 0.55 * BombRate ^ 0.75)
TmrTime.Enabled = False
Goal = Goal + Points * (1 + Int(Level / 3) * (Life / 10) ^ 0.2) + Gift
MsgBox "您的级别:" & Level & Chr(13) & Chr(10) & "您的积分:" & Points & Chr(13) & Chr(10) & "您得到的额外点数:" & Gift & Chr(13) & Chr(10) & "您现在的总点数:" & Goal, vbOKOnly
LblInfo.Caption = "您现在的点数为:" & Goal & "点"
CheckRecord
Tmp1 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Point", 0)
Tmp2 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Point", 0)
Tmp3 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Point", 0)
Tmp4 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Point", 0)
Tmp5 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Point", 0)
Smp1 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Size", 0)
Smp2 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Size", 0)
Smp3 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Size", 0)
Smp4 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Size", 0)
Smp5 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Size", 0)
strTmp = "乐趣扫雷积分榜" & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Name", "") & ":" & Tmp1 & "@" & Smp1 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Name", "") & ":" & Tmp2 & "@" & Smp2 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Name", "") & ":" & Tmp3 & "@" & Smp3 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Name", "") & ":" & Tmp4 & "@" & Smp4 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Name", "") & ":" & Tmp5 & "@" & Smp5 & Chr(10)
MsgBox strTmp, vbOKOnly, "乐趣扫雷排行榜"
LblInfo.Caption = "您现在的点数为:" & Goal
Win = True
FirstGame = False
End If
End If
OUT:
End Sub
Private Sub FunRoundSave(ByVal Index As Integer)
Dim IntTmp As Integer
IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y – 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
Grids(IntTmp).Sort = 0
If Grids(IntTmp).IsBomb Then
RightClick IntTmp
Else
LeftClick IntTmp
End If
End If
IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
Grids(IntTmp).Sort = 0
If Grids(IntTmp).IsBomb Then
RightClick IntTmp
Else
LeftClick IntTmp
End If
End If
IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y + 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
Grids(IntTmp).Sort = 0
If Grids(IntTmp).IsBomb Then
RightClick IntTmp
Else
LeftClick IntTmp
End If
End If
IntTmp = GetNum(Grids(Index).X, Grids(Index).Y – 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
Grids(IntTmp).Sort = 0
If Grids(IntTmp).IsBomb Then
RightClick IntTmp
Else
LeftClick IntTmp
End If
End If
IntTmp = GetNum(Grids(Index).X, Grids(Index).Y + 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
Grids(IntTmp).Sort = 0
If Grids(IntTmp).IsBomb Then
RightClick IntTmp
Else
LeftClick IntTmp
End If
End If
IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y – 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
Grids(IntTmp).Sort = 0
If Grids(IntTmp).IsBomb Then
RightClick IntTmp
Else
LeftClick IntTmp
End If
End If
IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
Grids(IntTmp).Sort = 0
If Grids(IntTmp).IsBomb Then
RightClick IntTmp
Else
LeftClick IntTmp
End If
End If
IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y + 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
Grids(IntTmp).Sort = 0
If Grids(IntTmp).IsBomb Then
RightClick IntTmp
Else
LeftClick IntTmp
End If
End If
End Sub
Private Sub FunRoundKill(ByVal Index As Integer)
Dim IntTmp As Integer
IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y – 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y + 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X, Grids(Index).Y – 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X, Grids(Index).Y + 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y – 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y + 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
End Sub
Private Sub FunLineCleaner(ByVal Index As Integer, ByVal Direct As String)
Dim I As Integer
Dim Tmp As Integer
Dim A, B As Integer
Select Case Direct
Case "u"
A = 0
B = 1
Case "d"
A = 0
B = -1
Case "r"
A = -1
B = 0
Case "l"
A = 1
B = 0
End Select
For I = 1 To 10
Tmp = GetNum(Grids(Index).X – I * A, Grids(Index).Y – I * B)
If Tmp > 0 And Grids(Tmp).Checked = 0 Then
Grids(Tmp).Sort = 0
If Grids(Tmp).IsBomb Then
RightClick Tmp
Else
LeftClick Tmp
End If
End If
Next I
End Sub
FRMLOGIN.FRM:
Private Sub CmdOK_Click()
HNum = Val(TxtH.Text)
WNum = Val(TxtW.Text)
BombRate = Val(TxtRate.Text)
Level = Val(TxtLevel.Text)
Unload Me
End Sub
Private Sub Form_Load()
TxtH.Text = HNum
TxtW.Text = WNum
TxtRate.Text = BombRate
If FirstGame Then
TxtLevel.Text = Level
Else
TxtLevel.Text = Level + 1
TxtLevel.Enabled = False
End If
Me.Top = (Screen.Height – Me.Height) / 2
Me.Left = (Screen.Width – Me.Width) / 2
End Sub
FRMFIGHT.FRM:
Dim YL, YD, YA, OL, OD, OA As Integer
Dim TT As Integer
Private Sub CmdCQ_Click(Index As Integer)
Dim YC, OC As Integer
YC = Index
Randomize
CC:
OC = Int(Rnd() * 3)
If OC = 3 Then GoTo CC
Fight YC, OC
If YL < 0 Then
MsgBox "您已经被恶魔派出的小楼楼干掉了。回去准备后事吧!哈哈哈哈哈哈哈哈哈哈……", vbOKOnly, "乐趣扫雷游戏II之对战竞技场"
Gift = Gift + (YL – OL) / 4 / Opp ^ 2
Unload Me
End If
On Error Resume Next
If OL < 0 Then
If Opp >= 2 Then
MsgBox "你……你竟然把恶魔开路掉了!你果然传说中的圣骑士,黄金骑士……那个你叫什么?", vbOKOnly, "乐趣扫雷游戏II之对战竞技场"
Life = Life + 1
Gift = Gift + 1000
Else
MsgBox "您竟然将恶魔派出的小楼楼干掉了。不愧是白银骑士,伟大的……那个谁?", vbOKOnly, "乐趣扫雷游戏II之对战竞技场"
End If
FightResult = True
Gift = Gift + (YL – OL) / 4 * Opp
Unload Me
End If
End Sub
Private Sub CmdQGP_Click()
If TT > 0 Then
OL = OL – Goal / 5
Goal = Goal / 5 * 2
MsgBox "看招:" & Chr(13) & Chr(10) & "耶稣神拳——" & Chr(13) & Chr(10) & "…酥神拳——" & Chr(13) & Chr(10) & "……神拳——" & Chr(13) & Chr(10) & "………拳——" & Chr(13) & Chr(10) & "………拳——" & Chr(13) & Chr(10) & "………拳!!!!", vbOKOnly, "乐趣扫雷游戏II之对战竞技场"
TxtSaying.Text = "哇(吐血中)~~~~~你竟然还有这么强大的招数,果然厉害,佩服佩服!" & Chr(13) & Chr(10) & Chr(13) & Chr(10) & TxtSaying.Text
ShowInfo 3
TT = TT – 1
Else
MsgBox "糟糕!没有能量了!", vbOKOnly, "乐趣扫雷游戏II之对战竞技场"
End If
End Sub
Private Sub Form_Load()
YL = 1000
YD = 100
YA = 100
OL = 1000 * Opp
OD = 51 * (Opp + 1)
OA = 51 * (Opp + 1)
YourLife.Text = YL
YourDef.Text = YD
YourAtt.Text = YA
OppLife.Text = OL
OppDef.Text = OD
OppAtt.Text = OA
FightResult = False
If Opp = 2 Then
Label1(0).Caption = "恶魔出:"
End If
TT = Opp * 3 – 3
End Sub
Private Sub Fight(ByVal Yours As Integer, ByVal Opp As Integer)
Dim Result As Integer
If Yours = Opp Then
Result = 0
GoTo RR
End If
If Yours = 0 And Opp = 2 Then
Result = 1
GoTo RR
End If
If Yours = 2 And Opp = 0 Then
Result = -1
GoTo RR
End If
If Yours > Opp Then
Result = 1
Else
Result = -1
End If
RR:
Randomize
Select Case Result
Case 0
YL = YL – FF(OA * Rnd(), YD * Rnd())
OL = OL – FF(YA * Rnd(), OD * Rnd())
TxtSaying.Text = "我们接着打!" & Chr(13) & Chr(10) & Chr(13) & Chr(10) & TxtSaying.Text
Case -1
YL = YL – FF(OA * 2 * Rnd(), YD * 2 * Rnd())
TxtSaying.Text = ShowSaying(False) & Chr(13) & Chr(10) & Chr(13) & Chr(10) & TxtSaying.Text
Case 1
OL = OL – FF(YA * 2 * Rnd(), OD * 2 * Rnd())
TxtSaying.Text = ShowSaying(True) & Chr(13) & Chr(10) & Chr(13) & Chr(10) & TxtSaying.Text
End Select
ShowInfo Opp
End Sub
Private Function FF(ByVal ATT As Integer, ByVal DEF As Integer) As Integer
If ATT > DEF + 10 Then
FF = ATT – DEF
Else
FF = 10
End If
End Function
Private Sub ShowInfo(ByVal OC As Integer)
YourLife.Text = YL
YourDef.Text = YD
YourAtt.Text = YA
OppLife.Text = OL
OppDef.Text = OD
OppAtt.Text = OA
Select Case OC
Case 0
OppCQ.Text = "剪刀脚"
Case 1
OppCQ.Text = "石头拳"
Case 2
OppCQ.Text = "铁布掌"
Case Else
OppCQ.Text = "发呆中"
End Select
End Sub
Private Function ShowSaying(ByVal Result As Boolean) As String
Dim IntTmp As Integer
Randomize
IntTmp = Int(Rnd() * 5)
If IntTmp = 5 Then IntTmp = 0
If Result Then
Select Case IntTmp
Case 0
ShowSaying = "可恶,我怎么可能会输给这个小样呢!郁闷啊啊啊啊啊啊啊啊……………………"
Case 1
ShowSaying = "今天早上起来碰到一个人,姓“彭”,叫“德实”。嗨~~~~~~~~~~~"
Case 2
ShowSaying = "难道今天是玄天吉日?难怪我的魔力衰减得这么厉害。"
Case 3
ShowSaying = "不好,今天我肚子痛,让你钻空子了……"
Case 4
ShowSaying = "哼,你别误会,我是故意让你的。"
End Select
Else
Select Case IntTmp
Case 0
ShowSaying = "哈哈哈哈哈哈哈哈哈哈!现在知道我的厉害了吧!哇哈哈哈哈哈哈哈哈哈哈……呃~~(一个气没有接上来,送医院ing)"
Case 1
ShowSaying = "你别误会,我才用了一成功力。现在知道我的厉害了吧~"
Case 2
ShowSaying = "看看,看看,这就是传说中的正义朋友,这么不经打。"
Case 3
ShowSaying = "哟,输啦?别溜,让我接着揍你!"
Case 4
ShowSaying = "看我的绝招!天下无敌宇宙第一超级威力霹雳奶油蛋糕!"
End Select
End If
End Function
MDMAIN.BAS:
Public Type Grid
X As Integer
Y As Integer
Checked As Integer
Environment As Integer
IsBomb As Boolean
Sort As Integer
End Type
Public Grids() As Grid
Public Num, HNum, WNum, BombRate, Life, Time, Bombs, BombsLeft, Points, Goal, Level, Gift As Integer
Public ShowBomb, FirstGame, FightResult As Boolean
Public Opp As Integer
最后的介绍:战斗系统取自我的另一个小游戏:《问天大战玄天邪帝》。