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

📄 tankbproperty.bas

📁 有jsp写的坦克游戏
💻 BAS
字号:
Attribute VB_Name = "TankBProperty"
Type TankBProperties
    'Tank action
    X As Integer
    Y As Integer
    Left As Integer
    Top As Integer
    Direction As Integer '0=stop 1=left 2=right 3=top 4=down
    StopDirection As Integer '0=stop 1=left 2=right 3=top 4=down
    Speed As Integer
    RunOnce As Boolean
    
    'Tank fire
    Fire As Integer '0=stop 1=active
    GunDirection As Integer '0=stop 1=left 2=right 3=top 4=down
    BombX As Integer
    BombY As Integer
    
    Score As Integer
    Life As Integer
End Type
Public TankB As TankBProperties


Public Function ControlTankBActive()
    If TankB.RunOnce = False Then
        Select Case TankB.Direction
            Case 1 'Left
                If Gp(TankB.X - 1, TankB.Y) = 0 Or Gp(TankB.X - 1, TankB.Y) = 4 Or Gp(TankB.X - 1, TankB.Y) = 3 Or Gp(TankB.X - 1, TankB.Y) = 6 Then
                    If TankB.X <> 1 Then
                        TankB.X = TankB.X - 1
                        TankB.RunOnce = True
                    End If
                End If
            Case 2 'Right
                If Gp(TankB.X + 1, TankB.Y) = 0 Or Gp(TankB.X + 1, TankB.Y) = 4 Or Gp(TankB.X + 1, TankB.Y) = 3 Or Gp(TankB.X + 1, TankB.Y) = 6 Then
                    If TankB.X <> 18 Then
                        TankB.X = TankB.X + 1
                        TankB.RunOnce = True
                    End If
                End If
            Case 3 'Top
                If Gp(TankB.X, TankB.Y - 1) = 0 Or Gp(TankB.X, TankB.Y - 1) = 4 Or Gp(TankB.X, TankB.Y - 1) = 3 Or Gp(TankB.X, TankB.Y - 1) = 6 Then
                    If TankB.Y <> 1 Then
                        TankB.Y = TankB.Y - 1
                        TankB.RunOnce = True
                    End If
                End If
            Case 4 'Down
                If Gp(TankB.X, TankB.Y + 1) = 0 Or Gp(TankB.X, TankB.Y + 1) = 4 Or Gp(TankB.X, TankB.Y + 1) = 3 Or Gp(TankB.X, TankB.Y + 1) = 6 Then
                    If TankB.Y <> 14 Then
                        TankB.Y = TankB.Y + 1
                        TankB.RunOnce = True
                    End If
                End If
        End Select
    End If
    
    If TankB.Left > TankB.X * 25 Then TankB.Left = TankB.Left - TankB.Speed
    If TankB.Left < TankB.X * 25 Then TankB.Left = TankB.Left + TankB.Speed
    If TankB.Top > TankB.Y * 25 Then TankB.Top = TankB.Top - TankB.Speed
    If TankB.Top < TankB.Y * 25 Then TankB.Top = TankB.Top + TankB.Speed
    
    If TankB.Left = TankB.X * 25 And TankB.Top = TankB.Y * 25 Then
        TankB.RunOnce = False
    End If
End Function




Public Function ControlTankBFire()
    If TankB.Fire = 1 Then
        TankSound "fire"
        Select Case TankB.StopDirection
            Case 1 'Bomb to Left
                TankB.BombX = (TankB.X - 1) * 25
                TankB.BombY = TankB.Y * 25
                TankB.GunDirection = 1
            Case 2 'Bomb to right
                TankB.BombX = (TankB.X + 1) * 25
                TankB.BombY = TankB.Y * 25
                TankB.GunDirection = 2
            Case 3 'Bomb to top
                TankB.BombX = TankB.X * 25
                TankB.BombY = (TankB.Y - 1) * 25
                TankB.GunDirection = 3
            Case 4 'Bomb to down
                TankB.BombX = TankB.X * 25
                TankB.BombY = (TankB.Y + 1) * 25
                TankB.GunDirection = 4
        End Select
        TankB.Fire = 2
    Else
            '防止炮弹位置在本程序内部使用数组Gp时溢出。
            If TankB.BombX = -25 Then TankB.BombX = 0: TankB.Fire = 0
            If TankB.BombY = -25 Then TankB.BombY = 0: TankB.Fire = 0
            If TankB.BombX = 525 Then TankB.BombX = 500: TankB.Fire = 0
            If TankB.BombY = 425 Then TankB.BombY = 400: TankB.Fire = 0
            
            '炮弹移动及遇到障碍物炮弹应作出的反应。
            If TankB.Fire = 2 And Gp(TankB.BombX \ 25, TankB.BombY \ 25) = 0 Or Gp(TankB.BombX \ 25, TankB.BombY \ 25) = 4 Or Gp(TankB.BombX \ 25, TankB.BombY \ 25) = 3 Then
                    Select Case TankB.GunDirection
                        Case 1
                            TankB.BombX = TankB.BombX - 25
                        Case 2
                            TankB.BombX = TankB.BombX + 25
                        Case 3
                            TankB.BombY = TankB.BombY - 25
                        Case 4
                            TankB.BombY = TankB.BombY + 25
                    End Select
            Else
                TankB.Fire = 0
            End If
            
            
            If TankB.Fire = 0 Then
                If Gp(TankB.BombX \ 25, TankB.BombY \ 25) <> 2 And Gp(TankB.BombX \ 25, TankB.BombY \ 25) <> 0 Then '如果炮弹没有碰上水泥墙
                    TankB.Score = TankB.Score + 10
                    Let Gp(TankB.BombX \ 25, TankB.BombY \ 25) = 0
                End If
                TankB.BombX = 20 * 25
                TankB.BombY = 16 * 25
            End If
    End If
End Function

⌨️ 快捷键说明

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