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

📄 frmmain.frm

📁 大家来找茬 0.90版 漂亮
💻 FRM
字号:
VERSION 5.00
Object = "{C1A8AF28-1257-101B-8FB0-0020AF039CA3}#1.1#0"; "MCI32.OCX"
Begin VB.Form FrmMain 
   BorderStyle     =   1  'Fixed Single
   ClientHeight    =   5955
   ClientLeft      =   150
   ClientTop       =   435
   ClientWidth     =   8460
   Icon            =   "FrmMain.frx":0000
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   5955
   ScaleWidth      =   8460
   StartUpPosition =   1  '所有者中心
   Begin VB.Timer TmrMidi 
      Interval        =   5000
      Left            =   8025
      Top             =   4050
   End
   Begin VB.Timer TmrPlus 
      Enabled         =   0   'False
      Interval        =   50
      Left            =   8025
      Top             =   4500
   End
   Begin VB.Timer TmrMain 
      Enabled         =   0   'False
      Interval        =   1000
      Left            =   8025
      Top             =   4950
   End
   Begin VB.PictureBox PicB 
      AutoRedraw      =   -1  'True
      AutoSize        =   -1  'True
      BorderStyle     =   0  'None
      Height          =   5055
      Left            =   4200
      MouseIcon       =   "FrmMain.frx":3072
      ScaleHeight     =   5055
      ScaleWidth      =   3735
      TabIndex        =   0
      Top             =   360
      Width           =   3735
   End
   Begin MCI.MMControl MCL_MIDI 
      Height          =   315
      Left            =   2475
      TabIndex        =   9
      Top             =   4800
      Visible         =   0   'False
      Width           =   1200
      _ExtentX        =   2117
      _ExtentY        =   556
      _Version        =   393216
      PrevVisible     =   0   'False
      NextVisible     =   0   'False
      BackVisible     =   0   'False
      StepVisible     =   0   'False
      RecordVisible   =   0   'False
      EjectVisible    =   0   'False
      DeviceType      =   ""
      FileName        =   ""
   End
   Begin VB.Label LblTotle 
      ForeColor       =   &H80000002&
      Height          =   240
      Left            =   1200
      TabIndex        =   8
      Top             =   75
      Width           =   2040
   End
   Begin VB.Label LblChance 
      ForeColor       =   &H8000000D&
      Height          =   240
      Left            =   3675
      TabIndex        =   7
      Top             =   5610
      Width           =   1365
   End
   Begin VB.Label LblFinished 
      ForeColor       =   &H8000000D&
      Height          =   255
      Left            =   5250
      TabIndex        =   6
      Top             =   5610
      Width           =   3060
   End
   Begin VB.Label Label1 
      Caption         =   "在右图中选出5处与左图不同的地方"
      ForeColor       =   &H80000002&
      Height          =   255
      Left            =   4200
      TabIndex        =   5
      Top             =   75
      Width           =   3135
   End
   Begin VB.Label LblTime 
      Alignment       =   1  'Right Justify
      ForeColor       =   &H8000000D&
      Height          =   255
      Left            =   3000
      TabIndex        =   4
      Top             =   5610
      Width           =   270
   End
   Begin VB.Label LbltimeInt 
      Caption         =   "剩余时间:"
      ForeColor       =   &H8000000D&
      Height          =   255
      Left            =   1950
      TabIndex        =   3
      Top             =   5610
      Width           =   960
   End
   Begin VB.Label LblScore 
      Alignment       =   1  'Right Justify
      Caption         =   "0"
      ForeColor       =   &H8000000D&
      Height          =   255
      Left            =   1125
      TabIndex        =   2
      Top             =   5610
      Width           =   645
   End
   Begin VB.Label LblScoreInt 
      Caption         =   "当前分数:"
      ForeColor       =   &H8000000D&
      Height          =   255
      Left            =   150
      TabIndex        =   1
      Top             =   5625
      Width           =   915
   End
   Begin VB.Image ImgA 
      Height          =   5175
      Left            =   225
      Top             =   360
      Width           =   3855
   End
   Begin VB.Menu M_File 
      Caption         =   "文件(&F)"
      Begin VB.Menu M_New 
         Caption         =   "重新开始(&N)"
      End
      Begin VB.Menu M_Exit 
         Caption         =   "退出(&X)"
      End
   End
   Begin VB.Menu M_Help 
      Caption         =   "帮助(&H)"
      Begin VB.Menu M_About 
         Caption         =   "关于(&A)"
      End
   End
End
Attribute VB_Name = "FrmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Public Sub Form_Load()
If Not First Then '第一次玩游戏
    Randomize
    '====================================================
    '读取最高分
    Open App.Path + "\dat\score.txt" For Input As #1
     Input #1, Totle '从文件中读入图片总数
     For I = 0 To 4
     Input #1, Record(I).Na
     Input #1, Record(I).Sc
    Next I
    Close #1
    '====================================================
    First = True '标记已不是初次游戏
    Me.Caption = Pname + "版本" + Ver '显示标题
    ReDim Played(Totle) '重新定义数组
    PicB.DrawWidth = 4
    Init_Mid '初始化背景音乐
End If
   For I = 0 To Totle - 1 '新游戏中没有1张图片被玩过
     Played(I) = False
   Next I
   Fin = 1 '完成的图片数初始化
   GameOver = False '游戏没有结束
   Score = 0 '分数初始化
   LblScore.Caption = 0 '显示分数
   Init '初始化新的一版
End Sub
Private Sub Form_Unload(Cancel As Integer) '退出程序过程
rt = MsgBox("是否要结束游戏", vbYesNo, Pname & Ver)
 If rt = vbNo Then
    Cancel = 1
    If GameOver Then Form_Load '如果游戏结束了,重新开始
 Else '如果结束游戏,则把分数写入文件
    Open App.Path + "\dat\score.txt" For Output As #1
     Print #1, Totle
     For I = 0 To 4
      Print #1, Record(I).Na
      Print #1, Record(I).Sc
     Next I
    Close #1
 Unload FrmAbout
 Unload FrmHighScore
 End If
End Sub

'==========================游戏过程=================================
Private Sub PicB_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
 Dim Right As Boolean '判断是否选中
 Dim Num As Byte '点的序号

 Right = False '假设没有选中
 For I = 0 To 4 '对所有的点进行分析
    If (X - Px(I)) * (X - Px(I)) + (Y - Py(I)) * (Y - Py(I)) < MaxP And Flag(I) Then
    '在允许的误差分为之内,且该点未被选中
     Right = True '标记有点被选中
     Flag(I) = False '这个点已被选中
     Num = I '记录序号
     Exit For '有一点被选中就退出
    End If
 Next I
If Right Then '选择正确
    Score = Score + 1000 '加分
    Finished = Finished + 1 '完成点数++
    LblScore.Caption = Score '显示分数
    PicB.Circle (Px(Num), Py(Num)), 200, RGB(255, 0, 0) '在正确的地方画一个圈
  Select Case Finished '根据完成的点数鼓励玩家
    Case 1, 2
        st = "呵呵,不错嘛!"
    Case 3, 4
        st = "再努力一点!"
    Case 5
        st = "恭喜你过版!"
  End Select
   LblFinished.Caption = "进度 " & Finished & "/5" & " " & st '显示当前进度
  If Finished = 5 Then  '这版已经完成了
    MsgBox "    恭喜你过关", , Pname & Ver
    TmrMain.Enabled = False '主计时器暂停
    Next_Pic '进入下一张图片
  End If
Else '选择错误
    Chance_Left = Chance_Left - 1 '剩余机会数--
    LblChance.Caption = "还剩" & Chance_Left & "次机会" '显示剩余机会数
    '============================在鼠标的附近画一个大差==================================
    PicB.Line (X - 200, Y - 200)-(X + 200, Y + 200), RGB(255, 0, 0)
    PicB.Line (X + 200, Y - 200)-(X - 200, Y + 200), RGB(255, 0, 0)
    '====================================================================================
    If Chance_Left = 0 Then Game_Over '剩余机会为0时结束游戏
End If
End Sub
Private Sub Init() '初始化新的一版
   N = Int(Rnd * Totle) + 1
   Do While Played(N) '随机产生一张没有玩过的图片
    N = Int(Rnd * Totle) + 1
   Loop
   Nth = Trim(Str(N)) '文件序号
   Played(N) = True '标记这张图片已被玩过
   '=======================读取文件===============================
   FileName = App.Path + "\pic\" + Nth + "a.jpg" '原图
   ImgA.Picture = LoadPicture(FileName)
   ImgA.Left = (FrmMain.ScaleWidth / 2 - ImgA.Width) / 2 '……
   FileName = App.Path + "\pic\" + Nth + "b.jpg" '现图
   PicB.Picture = LoadPicture(FileName)
   PicB.Left = 2 * ImgA.Left + ImgA.Width '……
   FileName = App.Path + "\dat\" + Nth + ".txt" '读取坐标文件
   Open FileName For Input As #1
     For I = 0 To 4
      Flag(I) = True '初始化点
      Input #1, Px(I), Py(I) '将点的坐标读入变量
     Next I
   Close #1
   '========================初始化设置==============================
   Chance_Left = MaxChance '设置剩余机会数
   LblChance.Caption = "还剩" & MaxChance & "次机会" '显示剩余机会数
   LblFinished.Caption = "进度 0/5 仔细看看!还有很多呢!" '显示进度
   Finished = 0 '完成的点数
   Time_Left = MaxTime '设置剩余时间
   LblTime.Caption = Time_Left '显示剩余时间
   Chance_Left = MaxChance '设置剩余机会数
   LblChance.Caption = "还剩" & MaxChance & "次机会" '显示剩余机会数
   LblTotle.Caption = "这是第" & Fin & "关,共" & Totle & "关" '显示当前状态
   PicB.Enabled = True
   TmrMain.Enabled = True '主计时器开始
   '=================================================================
End Sub

'============================计时器相关==============================

Private Sub TmrMain_Timer() '主时间器
If DoEvents = 1 Then
   If Time_Left > 0 Then
    Time_Left = Time_Left - 1 '剩余时间--
    LblTime.Caption = Time_Left '显示剩余时间
   Else
    TmrMain.Enabled = False
    Game_Over '时间到了就gameover
   End If
End If
End Sub
Private Sub TmrMidi_Timer() '用于检测背景音乐是否播放完毕
    If MCL_MIDI.Mode = mciModeStop Then
     MCL_MIDI.From = 0
     MCL_MIDI.Command = "Play" '循环播放音乐
    End If
End Sub
Private Sub TmrPlus_Timer() '加分系统
    If Time_Left > 0 Then
     Time_Left = Time_Left - 1 '扣剩余时间
     LblTime.Caption = Time_Left '显示剩余时间
     Score = Score + 50 '根据剩余的时间加分,1s=50分
     LblScore.Caption = Score '显示分数
    ElseIf Fin < Totle Then '还没有全部完成
     Fin = Fin + 1 '完成的图片数++
     Init '完成加分,初始化新图片
     TmrPlus.Enabled = False
    Else '全部完成
     Game_Over '结束游戏
     TmrPlus.Enabled = False
    End If
End Sub

'=============================菜单相关==================================
Private Sub M_Exit_Click() '菜单退出
  Unload Me
End Sub
Private Sub M_About_Click() '菜单关于
  Unload FrmAbout
  FrmAbout.Show '显示关于
End Sub
Private Sub M_New_Click() '重新开始游戏
    rt = MsgBox("是否要重新开始游戏?", vbYesNo, Pname & Ver)
 If rt = vbYes Then
     TmrPlus.Enabled = False
     TmrMain.Enabled = False
     Game_Over
 End If
End Sub
'======================================================================

'==========================其他过程====================================
Private Sub Next_Pic() '下一版
    TmrMain.Enabled = False '停止主计时器
    If Fin <= Totle Then '如果还没全部完成
     PicB.Enabled = False
     TmrPlus.Enabled = True '加分系统
   ' Else
     'TmrPlus.Enabled = True
     'Game_Over '结束游戏过程
    End If
End Sub
Private Sub Game_Over() '游戏结束过程
    GameOver = True '游戏结束了
    MsgBox "游戏结束,感谢你的使用!", , Pname & Ver
    If Score > Record(4).Sc Then '分数进入排行榜
     ch = InputBox("你已经成为五大高手之一,请输入你的姓名", "输入姓名", "No.1")
     If ch = "" Then ch = "无名氏"
     Record(4).Sc = Score '假设为最后一位
     Record(4).Na = ch
     Sort_Score '对分数进行排序
    End If
    FrmHighScore.Show '显示最高分
End Sub
Public Sub Init_Mid() '初始化背景音乐
    FileName = App.Path + "\sound\1.mid" '背景音乐路径
    MCL_MIDI.DeviceType = "sequencer" 'Mid
    MCL_MIDI.FileName = FileName '建立文件关联
    MCL_MIDI.Command = "OPEN" '打开
    MCL_MIDI.Command = "PLAY" '播放
End Sub
Private Sub Sort_Score() '分数排序过程
'数据较小,采用插入排序法
    For I = 1 To 4
        tsc = Record(I).Sc
        tna = Record(I).Na
        J = I
        Do While J > 0 And tsc > Record(J - 1).Sc
         Record(J).Sc = Record(J - 1).Sc
         Record(J).Na = Record(J - 1).Na
         J = J - 1
        Loop
        Record(J).Sc = tsc
        Record(J).Na = tna
    Next I
End Sub

⌨️ 快捷键说明

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