⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fcatch.frm

📁 一个用VB编的小游戏
💻 FRM
📖 第 1 页 / 共 2 页
字号:
    End If
  Next
Next
End Sub
Public Sub JustStart()
Randomize
For i = 1 To 8
  For j = 1 To 6
    gmSquare(i, j) = 0
  Next
Next
For i = 1 To 3
  X = Int(Rnd * 8) + 1
  Y = Int(Rnd * 6) + 1
  gmSquare(X, Y) = Int(Rnd * (i + 2)) + 1
Next
Call NewLevel
gameLevel = 1
End Sub

Private Sub Form_Unload(Cancel As Integer)
tmr.Enabled = False
fResult.Show
End Sub

Private Sub picSquare_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If tmr.Enabled = False Then Exit Sub
m = Int(X / 40) + 1
n = Int(Y / 40) + 1
If m < 1 Or m > 8 Then Exit Sub
If n < 1 Or n > 6 Then Exit Sub
hs = picTemp.hdc
hd = picSquare.hdc
If gmSquare(m, n) < 0 Then
  Call MarkCount(gameLevel * Abs(gmSquare(m, n)) + gameLevel, 22, True)
  gmSquare(m, n) = 0
  p = BitBlt(hd, m * 40 - 40, n * 40 - 40, 40, 40, hs, 0, 0, SRCCOPY)
  s = sndPlaySound(App.Path & "\snd\Pain" & Int(Rnd * 4 + 1) & ".wav", 1)
  Call FunTalk(1)
  NOToWin = NOToWin - 1
  If NOToWin <= 0 Then
    tmr.Enabled = False
    s = sndPlaySound(App.Path & "\snd\CSigh.wav", 0)
    MsgBox "这次抓到这么多呀!准备下一次考试。", vbOKOnly, "抓作弊"
    Call NewLevel
    tmr.Enabled = True
  End If
Else
  Call FunTalk(2)
  NOToWin = NOToWin + 1
  WrgNO = WrgNO + 1
  If WrgNO >= 10 Then
    WrgNO = WrgNO - 10
    s = sndPlaySound(App.Path & "\snd\CAngry.wav", 1)
  Else
    s = sndPlaySound(App.Path & "\snd\CMiss.wav", 1)
  End If
  If NOToWin > gameLevel * 10 Then NOToWin = gameLevel * 10
  Call MarkCount(5 * gameLevel, 22, False)
End If
Call ShowMark
End Sub

Private Sub tmr_Timer()
Call AboutToCheat
For i = 1 To 8
  For j = 1 To 6
    Select Case gmSquare(i, j)
    Case Is > 0
      gmSquare(i, j) = gmSquare(i, j) - 1
      If gmSquare(i, j) = 0 Then
        Randomize
        's = sndPlaySound(App.Path & "\snd\CCheat.wav", 1)
        gmSquare(i, j) = -Abs(Int(Rnd * (7 - gameLevel / 3))) - 3
      End If
    Case 0
    Case Is < 0
      gmSquare(i, j) = gmSquare(i, j) + 1
      If gmSquare(i, j) = 0 Then
        Call FunTalk(3)
        Call MarkCount(2 * gameLevel, 22, False)
        EscNO = EscNO + 1
        If EscNO >= 10 Then
          EscNO = EscNO - 10
          s = sndPlaySound(App.Path & "\snd\CLaugh.wav", 1)
        Else
          s = sndPlaySound(App.Path & "\snd\CEscape.wav", 1)
        End If
      End If
    End Select
  Next
Next
Call MarkCount(1, 23, True)
Call ShowMark
Call RoomDraw
Call GameOverQuest
Randomize
k = Int(Rnd * 5)
If k = 0 Then Call FunTalk(0)
End Sub
Public Sub AboutToCheat()
CDT = CDT + 1
If CDT >= 3 - gameLevel / 10 Then
Randomize
Do
X = Int(Rnd * 8) + 1
Y = Int(Rnd * 6) + 1
Loop Until gmSquare(X, Y) = 0
gmSquare(X, Y) = Int(Rnd * (9 - gameLevel / 3)) + 2
CDT = CDT - 3 + gameLevel / 10
End If
End Sub
Public Sub MarkCount(ByVal mkNumber As Integer, Location As Integer, Addition As Boolean)
If Addition Then
  gmMark(Location) = gmMark(Location) + (mkNumber Mod 10)
  mkNumber = Int(mkNumber / 10)
  If gmMark(Location) >= 10 Then
    mkNumber = mkNumber + 1
    gmMark(Location) = gmMark(Location) - 10
  End If
  If mkNumber > 0 Then
    If Location = 16 Then
      For i = 16 To 23
        gmMark(i) = 9
      Next
    Else
      Call MarkCount(mkNumber, Location - 1, True)
    End If
  End If
Else
  gmMark(Location) = gmMark(Location) - (mkNumber Mod 10)
  mkNumber = Int(mkNumber / 10)
  If gmMark(Location) < 0 Then
    mkNumber = mkNumber + 1
    gmMark(Location) = gmMark(Location) + 10
  End If
  If mkNumber > 0 Then
    If Location = 16 Then
      For i = 16 To 23
        gmMark(i) = 0
      Next
    Else
      Call MarkCount(mkNumber, Location - 1, False)
    End If
  End If
End If
End Sub
Public Sub ShowMark()
i = 16
Do While gmMark(i) = 0 And i < 23
  i = i + 1
Loop
lblNO(1).Caption = ""
For j = i To 23
  If (j / 3 = Int(j / 3)) And j <> i Then lblNO(1).Caption = lblNO(1).Caption & ","
  lblNO(1).Caption = lblNO(1).Caption & Str(gmMark(j))
Next
lblNO(0).Caption = gameLevel
End Sub
Public Sub NewLevel()
Call MarkCount(LeftTime * gameLevel, 23, True)
If gameLevel < 20 Then
  gameLevel = gameLevel + 1
Else
  MsgBox "您已经取得胜利!" & RL & "您可以继续游戏以得到高分,或者按下方按钮退出。", vbOKOnly, "……"
End If
LeftTime = 400 - gameLevel * 5
NOToWin = gameLevel * 10
End Sub
Public Sub GameOverQuest()
LeftTime = LeftTime - 1
shpTime.Height = Int(LeftTime / (400 - gameLevel * 5) * 244)
shpTime.Top = 252 - shpTime.Height
If gameLevel * 10 >= NOToWin Then shpClick.Height = Int((gameLevel * 10 - NOToWin) / (gameLevel * 10) * 244)
shpClick.Top = 252 - shpClick.Height
If shpTime.Height + shpClick.Height <= 244 Then
  shpTime.BackColor = vbRed
  shpClick.BackColor = vbRed
Else
  shpTime.BackColor = vbGreen
  shpClick.BackColor = vbGreen
End If
If LeftTime <= 0 Then
  tmr.Enabled = False
  MsgBox "考试时间到!", vbOKOnly, "抓作弊"
  Call DoSummary
End If
End Sub
Public Sub FunTalk(ByVal TheType As Integer)
Randomize
Select Case TheType
Case 0
  k = Int(Rnd * 6)
  Select Case k
  Case 0
    lblFun.Caption = "努力!"
  Case 1
    lblFun.Caption = "怎么这么难呀!"
  Case 2
    lblFun.Caption = "扔个硬币吧?"
  Case 3
    lblFun.Caption = "哎,怎么都看不懂。"
  Case 4
    lblFun.Caption = "管他呢!"
  Case 5
    lblFun.Caption = "上帝保佑!"
  End Select
Case 1
  k = Int(Rnd * 6)
  Select Case k
  Case 0
    lblFun.Caption = "对不起,我不是故意的。"
  Case 1
    lblFun.Caption = "那个……我只是想……"
  Case 2
    lblFun.Caption = "其实我没有……"
  Case 3
    lblFun.Caption = "饶了我吧,以后再也不敢了。"
  Case 4
    lblFun.Caption = "下次得小心了!"
  Case 5
    lblFun.Caption = "真倒霉,居然被发现。"
  End Select
Case 2
  k = Int(Rnd * 6)
  Select Case k
  Case 0
    lblFun.Caption = "不要冤枉好人!"
  Case 1
    lblFun.Caption = "拿出证据来!你有吗?"
  Case 2
    lblFun.Caption = "老师!你错怪我了!"
  Case 3
    lblFun.Caption = "作弊的不知道,不作弊的倒被抓!"
  Case 4
    lblFun.Caption = "天地也!只合把清浊分辨!"
  Case 5
    lblFun.Caption = "怎么可以这样乱说呢!"
  End Select
Case 3
  k = Int(Rnd * 6)
  Select Case k
  Case 0
    lblFun.Caption = "哈哈!原来选这个答案。"
  Case 1
    lblFun.Caption = "傻狗数学好,语文可不行。"
  Case 2
    lblFun.Caption = "嘻嘻,没发现!"
  Case 3
    lblFun.Caption = "这家伙的字好潦草!"
  Case 4
    lblFun.Caption = "这样写上就可以了吧!"
  Case 5
    lblFun.Caption = "老师的眼睛真大。"
  End Select
End Select
End Sub
Public Sub DoSummary()
GetMark = 0
temp = 1
For i = 23 To 16 Step -1
  GetMark = GetMark + gmMark(i) * temp
  temp = temp * 10
Next
CourseMark = gameLevel * 2 + Int(GetMark / 10000)
CourseLevel = gameLevel
MsgBox "您辛苦了!", vbOKOnly, ":P"
Unload Me
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -