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

📄 tankproperty.bas

📁 有jsp写的坦克游戏
💻 BAS
字号:
Attribute VB_Name = "TankAProperty"
Type TankAProperties
    '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 TankA As TankAProperties


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




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

⌨️ 快捷键说明

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