📄 tankbproperty.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 + -