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

📄 form1.vb

📁 VB.NET制作赛车游戏
💻 VB
📖 第 1 页 / 共 5 页
字号:
                    End If
                End If
            Else
                control.Enabled = False
                background.Enabled = False
                Begin.Interval = 50
                zhuche.Top -= 10 '最后让主车前进
            End If

            If zhuche.Top < Me.Top - zhuche.Height Then     '主车冲出屏幕
                Label2.Text = "GOAL"
                Label2.Visible = True
                background.Enabled = False
                meter.Enabled = False
                control.Enabled = False
                check.Enabled = False
                follow_avoid.Enabled = False
                Exit Sub
            End If
        End If
    End Sub
    Private Sub meter_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles meter.Tick '此事件对记时、记距离处理
        Static time As Int16 = 100
        meter.Interval = 1000
        If time <> -1 Then
            Label1.Text = CStr(time)
            time -= 1
        ElseIf destination.Visible = False Then
            Begin.Enabled = False : control.Enabled = False : background.Enabled = False
            check.Enabled = False
            follow_avoid.Enabled = False
            Label2.Visible = True
            Label2.Text = "FAIL" '游戏失败的判断
            Exit Sub
        End If

        If sp = 1 Then '按下或放开加速键后车辆的处理(缓慢加速和减速)
            background.Enabled = True
            Select Case space1
                Case 1
                    background.Interval = 60 : space1 = 2 : control.Interval = 200
                Case 2
                    background.Interval = 56 : space1 = 3 : control.Interval = 150
                Case 3
                    background.Interval = 52 : space1 = 4 : control.Interval = 100
                Case 4
                    background.Interval = 48 : space1 = 5 : control.Interval = 90
                Case 5
                    background.Interval = 44 : space1 = 6 : control.Interval = 80
                Case 6
                    background.Interval = 40 : space1 = 7 : control.Interval = 70
                Case 7
                    background.Interval = 35 : space1 = 8 : control.Interval = 60
                Case 8
                    background.Interval = 30 : space1 = 9 : control.Interval = 55
                Case 9
                    background.Interval = 25 : control.Interval = 50
            End Select
        Else
            Select Case space1
                Case 9
                    background.Interval = 35 : space1 = 8
                Case 8
                    background.Interval = 40 : space1 = 7
                Case 7
                    background.Interval = 44 : space1 = 6
                Case 6
                    background.Interval = 48 : space1 = 5
                Case 5
                    background.Interval = 52 : space1 = 4
                Case 4
                    background.Interval = 56 : space1 = 3
                Case 3
                    background.Interval = 60 : space1 = 2
                Case 2
                    space1 = 1 : background.Enabled = False : control.Interval = 200 '停止背景运动
            End Select
            up_speed(3, car)
        End If
    End Sub
    Private Sub check_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles check.Tick '碰撞后处理
        If Lt = 1 Then '用全局变量标志是哪方向撞车
            If l = 0 Then
                Select Case time0
                    Case 0 : check.Interval = 160 : zhuche.Image = left_zhuangche.Image : zhuche.Left -= 1 : time0 = 1
                    Case 1 : zhuche.Image = left_zhuangche.Image : time0 = 2
                    Case 2 : zhuche.Image = left_zhuangche.Image : time0 = 3
                    Case 3 : zhuche.Image = left_zhuangche.Image : time0 = 4
                    Case 4 : zhuche.Image = right_zhuangche.Image : time0 = 5
                    Case 5 : zhuche.Image = zhuangche5.Image : time0 = 6
                    Case 6 : zhuche.Image = zhuangche4.Image : time0 = 7
                    Case 7 : zhuche.Image = zhuangche3.Image : time0 = 8
                    Case 8 : zhuche.Image = zhuangche2.Image : time0 = 9
                    Case 9 : zhuche.Image = zhuangche1.Image : time0 = 3
                End Select
                zhuche.Left -= 5
                If car(k).Left <= AL Then
                    car(k).Left += 3
                End If
            Else
                zhuche.Image = me_car.Image
                time0 = 0
                check.Enabled = False
            End If
        End If

        If Rt = 1 Then
            If r = 0 Then
                Select Case time0
                    Case 0 : check.Interval = 160 : zhuche.Image = right_zhuangche.Image : time0 = 1
                    Case 1 : zhuche.Image = right_zhuangche.Image : time0 = 2
                    Case 2 : zhuche.Image = right_zhuangche.Image : time0 = 3
                    Case 3 : zhuche.Image = right_zhuangche.Image : time0 = 4
                    Case 4 : zhuche.Image = left_zhuangche.Image : time0 = 5
                    Case 5 : zhuche.Image = zhuangche1.Image : time0 = 6
                    Case 6 : zhuche.Image = zhuangche2.Image : time0 = 7
                    Case 7 : zhuche.Image = zhuangche3.Image : time0 = 8
                    Case 8 : zhuche.Image = zhuangche4.Image : time0 = 9
                    Case 9 : zhuche.Image = zhuangche5.Image : time0 = 3
                End Select
                zhuche.Left += 5
                If car(k).Left >= AR Then
                    car(k).Left -= 3
                End If
            Else
                zhuche.Image = me_car.Image
                time0 = 0
                check.Enabled = False
            End If
        End If
    End Sub
    '按键处理
    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        If e.KeyCode = Keys.Left Then l = 1
        If e.KeyCode = Keys.Right Then r = 1
        If e.KeyCode = Keys.Space Then sp = 1
    End Sub
    '按键处理
    Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
        If e.KeyCode = Keys.Left Then l = 0
        If e.KeyCode = Keys.Right Then r = 0
        If e.KeyCode = Keys.Space Then sp = 0
    End Sub
    '冲出下屏幕后的处理
    Private Sub d_outside(ByVal sender As System.Object, ByVal i As Int16)
        Dim Value, flag As Int32
        Randomize()
        Value = CInt(Int(10 * Rnd()))
        flag = CInt(Int(4 * Rnd()))
        Static MyValue% = 0
        MyValue += Value
        If i = 0 Then
            car(0).Top = track.Top - 14 * car(0).Height
            car(0).Image = yellow.Image
            Select Case MyValue Mod 6
                Case 0 : sender.Left = 75
                    If (start.Top >= 8000 And start.Top <= 12000) Or (start.Top > 13000 And start.Top < 14000) _
                     Or (start.Top > 6000 And 8000) And flag < 2 Then
                        car(2).Image = blue.Image
                        Lp = 0 : Rp = 0
                    Else
                        car(2).Image = yellow.Image
                    End If
                    car(2).Left = 101 : car(2).Top = sender.Top + 13 * car(2).Height : Lp = 0 : Rp = 0
                    car(1).Left = flag * 13 + 75 : car(1).Top = sender.Top + 5 * car(1).Height : car(1).Image = yellow.Image
                Case 1 : sender.Left = 88
                    If (start.Top >= 8000 And start.Top <= 12000) Or (start.Top > 13000 And start.Top < 14000) _
                     Or (start.Top > 6000 And 8000) And flag < 2 Then
                        car(2).Image = blue.Image
                        Lp = 0 : Rp = 0
                    Else
                        car(2).Image = yellow.Image
                    End If
                    car(2).Top = sender.Top + 12 * car(2).Height : Lp = 0 : Rp = 0
                    car(1).Left = 75 + flag * 13 : car(1).Top = sender.Top + 4 * car(1).Height : car(1).Image = yellow.Image
                Case 2 : sender.Left = 101
                    If (start.Top >= 8000 And start.Top <= 12000) Or (start.Top > 13000 And start.Top < 14000) _
                    Or (start.Top > 6000 And 8000) And flag < 2 Then
                        car(2).Image = blue.Image
                        Lp = 0 : Rp = 0
                    Else
                        car(2).Image = yellow.Image
                    End If
                    car(2).Left = 114 : car(2).Top = sender.Top + 11 * car(2).Height : Lp = 0 : Rp = 0
                    car(1).Left = 75 + flag * 13 : car(1).Top = sender.Top + 3 * car(1).Height : car(1).Image = yellow.Image
                Case 3 : sender.Left = 114
                    If (start.Top >= 8000 And start.Top <= 12000) Or (start.Top > 13000 And start.Top < 14000) _
                    Or (start.Top > 21000 And start.Top < 22000) Or (start.Top > 17000 And 18000) And flag >= 2 Then
                        car(1).Image = red.Image
                        Lm = 0 : Rm = 0
                    End If
                    car(3).Left = 75 : car(3).Top = sender.Top + 8 * car(3).Height : car(3).Image = yellow.Image
                    car(1).Left = 88 + flag * 13 : car(1).Top = sender.Top + 3 * car(1).Height
                Case 4 : sender.Left = 127
                    If (start.Top >= 8000 And start.Top <= 12000) Or (start.Top > 13000 And start.Top < 14000) _
                     Or (start.Top > 21000 And start.Top < 22000) Or (start.Top > 17000 And 18000) And flag >= 2 Then
                        car(1).Image = red.Image
                        Lm = 0 : Rm = 0
                    End If
                    car(3).Left = 88 : car(3).Top = sender.Top + 7 * car(3).Height : car(3).Image = yellow.Image
                    car(1).Left = 127 - flag * 13 : car(1).Top = sender.Top + 4 * car(1).Height
                Case 5 : sender.Left = 140
                    If (start.Top >= 8000 And start.Top <= 12000) Or (start.Top > 13000 And start.Top < 14000) _
                     Or (start.Top > 21000 And start.Top < 22000) Or (start.Top > 17000 And 18000) And flag >= 2 Then
                        car(1).Image = red.Image
                        Lm = 0 : Rm = 0
                    End If
                    car(3).Left = 75 : car(3).Top = sender.Top + 9 * car(3).Height : car(3).Image = yellow.Image
                    car(1).Left = 140 - flag * 13 : car(1).Top = sender.Top + 5 * car(1).Height
            End Select
        Else
            sender.top = -1000
            sender.left = 300
        End If
        MyValue += 3


    End Sub
    '撞车后调用具体时间控件调用函数
    Private Sub crash(ByVal sender1 As System.Object, ByVal sender2 As System.Object)
        If sender1.top + sender1.height >= sender2.top And sender1.top + sender1.height <= sender2.top + sender2.height + sender1.height Then
            If sender1.left > sender2.left And sender1.left < sender2.left + sender2.width Then
                AL = sender1.left + sender1.width
                Rt = 0
                Lt = 1
                check.Enabled = True
            End If
            If sender1.left <= sender2.left And sender1.left + sender1.width > sender2.left Then
                AR = sender1.left - sender1.width
                Lt = 0
                Rt = 1
                check.Enabled = True
            End If
        End If
    End Sub
    '让路车的具体时间控件调用函数
    Private Sub avoid(ByVal sender As System.Object)
        k = 2
        If sender.left >= zhuche.Left And sender.left < zhuche.Left + zhuche.Width Then
            ZR = sender.left + 2 * sender.width
            Rp = 1
            Lp = 0
            follow_avoid.Enabled = True
        End If
        If sender.left < zhuche.Left And sender.left + sender.width >= zhuche.Left Then
            ZL = sender.left - 2 * sender.width
            Lp = 1
            Rp = 0
            follow_avoid.Enabled = True
        End If
    End Sub
    '跟随车的处理
    Private Sub follow(ByVal sender As System.Object)
        k = 1
        If sender.left <= 140 Then
            If r = 1 Then
                ZR = sender.left + sender.width * 2
                Rm = 1
                Lm = 0
                follow_avoid.Enabled = True
            End If
        End If
        If sender.left >= 80 Then
            ZL = sender.left - sender.width * 2
            If l = 1 Then
                Lm = 1
                Rm = 0
                follow_avoid.Enabled = True
            End If
        End If
    End Sub
    '主车右边界爆炸效果处理
    Private Sub R_baozha()
        control.Interval = 500
        background.Enabled = False
        Static time% = 0
        Select Case time
            Case 0 : zhuche.Image = right_baozha1.Image : time = 1
            Case 1 : zhuche.Image = right_baozha2.Image : time = 2
            Case 2 : zhuche.Image = right_baozha3.Image : time = 3
            Case 3 : zhuche.Image = recover.Image : time = 4
            Case 4 : zhuche.Image = me_car.Image : zhuche.Left = 120 : control.Interval = 200 : time = 0 : space1 = 1
        End Select
    End Sub
    '主车左边界爆炸效果处理
    Private Sub L_baozha()
        control.Interval = 500
        background.Enabled = False
        Select Case time
            Case 0 : zhuche.Image = baozha1.Image : time = 1
            Case 1 : zhuche.Image = baozha2.Im

⌨️ 快捷键说明

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