📄 frmgame.frm
字号:
End If
''Move the enemy tanks:
'Up
If enemytrack(Index).direction = 1 Then
'block1(Index).Picture = enemyup.Picture
'check borders
If block1(Index).top - 50 < map.top Then Exit Sub
'check for other conflicting objects (i.e. tanks, walls, or player)
getgrid block1(Index).left - map.left, block1(Index).top - map.top - 50
If (mainarr(grx + 1, gry + 1) <> 0) And (mainarr(grx + 1, gry + 1) <> 2) Then Exit Sub
getgrid block1(Index).Width + block1(Index).left - map.left, block1(Index).top - map.top - 50
If (mainarr(grx + 1, gry + 1) <> 0) And (mainarr(grx + 1, gry + 1) <> 2) Then Exit Sub
'move the tank
block1(Index).Picture = enemyup.Picture
block1(Index).ZOrder (0)
block1(Index).top = block1(Index).top - (gridheight / 18)
End If
'Right
If enemytrack(Index).direction = 2 Then
'block1(Index).Picture = enemyright.Picture
'check borders
If block1(Index).left + block1(Index).Width + 50 > map.left + map.Width Then Exit Sub
'check for other conflicting objects (i.e. tanks, walls, or player)
getgrid block1(Index).left + block1(Index).Width - map.left + 50, block1(Index).top - map.top
If (mainarr(grx + 1, gry + 1) <> 0) And (mainarr(grx + 1, gry + 1) <> 2) Then Exit Sub
getgrid block1(Index).Width + block1(Index).left - map.left + 50, block1(Index).top - map.top + block1(Index).Height
If (mainarr(grx + 1, gry + 1) <> 0) And (mainarr(grx + 1, gry + 1) <> 2) Then Exit Sub
'move the tank
block1(Index).Picture = enemyright.Picture
block1(Index).ZOrder (0)
block1(Index).left = block1(Index).left + (gridwidth / 18)
End If
'Down
If enemytrack(Index).direction = 3 Then
'block1(Index).Picture = enemydown.Picture
'check borders
If block1(Index).top + block1(Index).Height + 50 > map.top + map.Height Then Exit Sub
'check for other conflicting objects (i.e. tanks, walls, or player)
getgrid block1(Index).left - map.left, block1(Index).top - map.top + 50 + block1(Index).Height
If (mainarr(grx + 1, gry + 1) <> 0) And (mainarr(grx + 1, gry + 1) <> 2) Then Exit Sub
getgrid block1(Index).Width + block1(Index).left - map.left, block1(Index).top - map.top + 50 + block1(Index).Height
If (mainarr(grx + 1, gry + 1) <> 0) And (mainarr(grx + 1, gry + 1) <> 2) Then Exit Sub
'move the tank
block1(Index).Picture = enemydown.Picture
block1(Index).ZOrder (0)
block1(Index).top = block1(Index).top + (gridheight / 18)
End If
'Left
If enemytrack(Index).direction = 4 Then
'block1(Index).Picture = enemyleft.Picture
'check borders
If block1(Index).left - 50 < map.left Then Exit Sub
'check for other conflicting objects (i.e. tanks, walls, or player)
getgrid block1(Index).left - map.left - 50, block1(Index).top - map.top
If (mainarr(grx + 1, gry + 1) <> 0) And (mainarr(grx + 1, gry + 1) <> 2) Then Exit Sub
getgrid block1(Index).left - map.left - 50, block1(Index).top - map.top + block1(Index).Height
If (mainarr(grx + 1, gry + 1) <> 0) And (mainarr(grx + 1, gry + 1) <> 2) Then Exit Sub
'move the tank
block1(Index).Picture = enemyleft.Picture
block1(Index).ZOrder (0)
block1(Index).left = block1(Index).left - (gridwidth / 18)
End If
Errorhandler:
Exit Sub
End Sub
Private Sub timmissileenemy_Timer(Index As Integer)
Dim j As Integer
Dim avoidfor As Boolean
On Error GoTo Errorhandler
missileenemy(Index).ZOrder (0)
''Check borders
'Up
If missileenemy(Index).Picture = missup.Picture Then
If missileenemy(Index).top - 50 < map.top Then
missileenemy(Index).Visible = False
timmissileenemy(Index).Enabled = False
Unload missileenemy(Index)
Unload timmissileenemy(Index)
Exit Sub
End If
End If
'Right
If missileenemy(Index).Picture = missright.Picture Then
If missileenemy(Index).left + missileenemy(Index).Width + 50 > map.left + map.Width Then
missileenemy(Index).Visible = False
timmissileenemy(Index).Enabled = False
Unload missileenemy(Index)
Unload timmissileenemy(Index)
Exit Sub
End If
End If
'Down
If missileenemy(Index).Picture = missdown.Picture Then
If missileenemy(Index).top + missileenemy(Index).Height + 50 > map.top + map.Height Then
missileenemy(Index).Visible = False
timmissileenemy(Index).Enabled = False
Unload missileenemy(Index)
Unload timmissileenemy(Index)
Exit Sub
End If
End If
'Left
If missileenemy(Index).Picture = missleft.Picture Then
If missileenemy(Index).left - 50 < map.left Then
missileenemy(Index).Visible = False
timmissileenemy(Index).Enabled = False
Unload missileenemy(Index)
Unload timmissileenemy(Index)
Exit Sub
End If
End If
'Gets missile's grid block
getgrid missileenemy(Index).left - map.left, missileenemy(Index).top - map.top
If mainarr(grx + 1, gry + 1) = 0 Or mainarr(grx + 1, gry + 1) = 2 Then
getgrid missileenemy(Index).left + missileenemy(Index).Width - map.left, missileenemy(Index).top + missileenemy(Index).Height - map.top
If mainarr(grx + 1, gry + 1) = 0 Or mainarr(grx + 1, gry + 1) = 2 Then
avoidfor = True
End If
End If
If avoidfor = False Then
For j = 1 To blockcount
If (block1(j).Picture = wall1.Picture) Then
'top left corner
If (missileenemy(Index).top > block1(j).top) And (missileenemy(Index).top < block1(j).top + block1(j).Height) And (missileenemy(Index).left > block1(j).left) And (missileenemy(Index).left < block1(j).left + block1(j).Width) Then
missileenemy(Index).Visible = False
timmissileenemy(Index).Enabled = False
PlaySound App.Path + "\sounds\explode.wav", 0, SND_ASYNC
getgrid block1(j).left, block1(j).top
mainarr(grx + 1, gry + 1) = 0
'display the bomb
load timBomb(j)
timBomb(j).Enabled = True
Unload missileenemy(Index)
Unload timmissileenemy(Index)
'block1(j).Visible = False
Exit Sub
End If
'top right corner
If (missileenemy(Index).top > block1(j).top) And (missileenemy(Index).top < block1(j).top + block1(j).Height) And (missileenemy(Index).left + missileenemy(Index).Width > block1(j).left) And (missileenemy(Index).left + missileenemy(Index).Width < block1(j).left + block1(j).Width) Then
missileenemy(Index).Visible = False
timmissileenemy(Index).Enabled = False
PlaySound App.Path + "\sounds\explode.wav", 0, SND_ASYNC
getgrid block1(j).left, block1(j).top
mainarr(grx + 1, gry + 1) = 0
'display bomb
load timBomb(j)
timBomb(j).Enabled = True
Unload missileenemy(Index)
Unload timmissileenemy(Index)
'block1(j).Visible = False
Exit Sub
End If
'bottom left corner
If (missileenemy(Index).top + missileenemy(Index).Height > block1(j).top) And (missileenemy(Index).top + missileenemy(Index).Height < block1(j).top + block1(j).Height) And (missileenemy(Index).left > block1(j).left) And (missileenemy(Index).left < block1(j).left + block1(j).Width) Then
missileenemy(Index).Visible = False
timmissileenemy(Index).Enabled = False
PlaySound App.Path + "\sounds\explode.wav", 0, SND_ASYNC
getgrid block1(j).left, block1(j).top
mainarr(grx + 1, gry + 1) = 0
'display bomb
load timBomb(j)
timBomb(j).Enabled = True
Unload missileenemy(Index)
Unload timmissileenemy(Index)
'block1(j).Visible = False
Exit Sub
End If
'bottom right corner
If (missileenemy(Index).top + missileenemy(Index).Height > block1(j).top) And (missileenemy(Index).top + missileenemy(Index).Height < block1(j).top + block1(j).Height) And (missileenemy(Index).left + missileenemy(Index).Width > block1(j).left) And (missileenemy(Index).left + missileenemy(Index).Width < block1(j).left + block1(j).Width) Then
missileenemy(Index).Visible = False
timmissileenemy(Index).Enabled = False
PlaySound App.Path + "\sounds\explode.wav", 0, SND_ASYNC
getgrid block1(j).left, block1(j).top
mainarr(grx + 1, gry + 1) = 0
'display bomb
load timBomb(j)
timBomb(j).Enabled = True
Unload missileenemy(Index)
Unload timmissileenemy(Index)
'block1(j).Visible = False
Exit Sub
End If
End If
Next
End If
''Check if the missile hits the player
If avoidfor = False Then
numlives = numlives - 1
piclives(numlives + 1).Visible = False
missileenemy(Index).Visible = False
timmissileenemy(Index).Enabled = False
PlaySound App.Path + "\sounds\explode.wav", 0, SND_ASYNC
bombcount = 0
blowupplayer.Enabled = True
'If no more lives remain, make the tank dissapear
If numlives = 0 Then
gameover = True
getgrid missileenemy(Index).left - map.left, missileenemy(Index).top - map.top
If mainarr(grx + 1, gry + 1) = 3 Then mainarr(grx + 1, gry + 1) = 0
getgrid missileenemy(Index).left + missileenemy(Index).Width - map.left, missileenemy(Index).top + missileenemy(Index).Height - map.top
If mainarr(grx + 1, gry + 1) = 3 Then mainarr(grx + 1, gry + 1) = 0
tankup.Visible = False
tankright.Visible = False
tankdown.Visible = False
tankleft.Visible = False
endgame_Click
start.Enabled = False
MsgBox "Game Over!", , "Message"
End If
Unload missileenemy(Index)
Unload timmissileenemy(Index)
Exit Sub
End If
'move the missile in the appropriate direction
If missileenemy(Index).Picture = missup.Picture Then missileenemy(Index).top = missileenemy(Index).top - 300
If missileenemy(Index).Picture = missright.Picture Then missileenemy(Index).left = missileenemy(Index).left + 300
If missileenemy(Index).Picture = missdown.Picture Then missileenemy(Index).top = missileenemy(Index).top + 300
If missileenemy(Index).Picture = missleft.Picture Then missileenemy(Index).left = missileenemy(Index).left - 300
Errorhandler:
Exit Sub
missileenemy(Index).Visible = False
timmissileenemy(Index).Enabled = False
Unload missileenemy(Index)
Unload timmissileenemy(Index)
End Sub
Private Sub timplayer_Timer()
Dim j As Integer
Dim avoidfor As Boolean
On Error GoTo Errorhandler
missileplayer.ZOrder (0)
'Check borders
If dirplayer = 1 Then
If missileplayer.top - 50 < map.top Then
missileplayer.Visible = False
timplayer.Enabled = False
Exit Sub
End If
End If
If dirplayer = 2 Then
If missileplayer.left + missileplayer.Width + 50 > map.left + map.Width Then
missileplayer.Visible = False
timplayer.Enabled = False
Exit Sub
End If
End If
If dirplayer = 3 Then
If missileplayer.top + missileplayer.Height + 50 > map.top + map.Height Then
missileplayer.Visible = False
timplayer.Enabled = False
Exit Sub
End If
End If
If dirplayer = 4 Then
If missileplayer.left - 50 < map.left Then
missileplayer.Visible = False
timplayer.Enabled = False
Exit Sub
End If
End If
'Gets missile's grid block
getgrid missileplayer.left - map.left, missileplayer.top - map.top
If mainarr(grx + 1, gry + 1) = 0 Or mainarr(grx + 1, gry + 1) = 3 Then
getgrid missileplayer.left + missileplayer.Width - map.left, missileplayer.top + missileplayer.Height - map.top
If mainarr(grx + 1, gry + 1) = 0 Or mainarr(grx + 1, gry + 1) = 3 Then
avoidfor = True
End If
End If
If avoidfor = False Then
For j = 1 To blockcount
If block1(j).Picture <> emptyblock.Picture Then
'top left corner
If (missileplayer.top > block1(j).top) And (missileplayer.top < block1(j).top + block1(j).Height) And (missileplayer.left > block1(j).left) And (missileplayer.left < block1(j).left + block1(j).Width) Then
missileplayer.Visible = False
timplayer.Enabled = False
PlaySound App.Path + "\sounds\explode.wav", 0, SND_ASYNC
For i = 1 To enemycount
If enemytank(i) = j Then
enemytank(i) = -1
enemytrack(j).IndexOfTank = 0
timEnemy(j).Enabled = False
End If
Next
getgrid block1(j).left, block1(j).top
mainarr(grx + 1, gry + 1) = 0
'display the bomb
load timBomb(j)
timBomb(j).Enabled = True
'block1(j).Visible = False
Exit Sub
End If
'top right corner
If (missileplayer.top > block1(j).top) And (missileplayer.top < block1(j).top + block1(j).Height) And (missileplayer.left + missileplayer.Width > block1(j).left) And (missileplayer.left + missileplayer.Width < block1(j).left + block1(j).Width) Then
missileplayer.Visible = False
timplayer.Enabled = False
PlaySound App.Path + "\sounds\explode.wav", 0, SND_ASYNC
For i = 1 To enemycount
If enemytank(i) = j Then
enemytank(i) = -1
enemytrack(j).IndexOfTank = 0
timEnemy(j).Enabled = False
End If
Next
getgrid block1(j).left, block1(j).top
mainarr(grx + 1, gry + 1) = 0
'display bomb
load timBomb(j)
timBomb(j).Enabled = True
'block1(j).Visible = False
Exit Sub
End If
'bottom left corner
If (missileplayer.top + missileplayer.Height > block1(j).top) And (missileplayer.top + missileplayer.Height < block1(j).top + block1(j).Height) And (missileplayer.left > block1(j).left) And (missileplayer.left < block1(j).left + block1(j).Width) Then
missileplayer.Visible = False
timplayer.Enabled = False
PlaySound App.Path + "\sounds\explode.wav", 0, SND_ASYNC
For i = 1 To enemycount
If enemytank(i) = j Then
enemytank(i) = -1
enemytrack(j).IndexOfTank = 0
timEnemy(j).Enabled = False
End If
Next
getgrid block1(j).left, block1(j).top
mainarr(grx + 1, gry + 1) = 0
'display bomb
load timBomb(j)
timBomb(j).Enabled = True
'block1(j).Visible = False
Exit Sub
End If
'bottom right corner
If (missileplayer.top + missileplayer.Height > block1(j).top) And (missileplayer.top + missileplayer.Height < block1(j).top + block1(j).Height) And (missileplayer.left + missileplayer.Width > block1(j).left) And (missileplayer.left + missileplayer.Width < block1(j).left + block1(j).Width) Then
missileplayer.Visible = False
timplayer.Enabled = False
PlaySound App.Path + "\sounds\explode.wav", 0, SND_ASYNC
For i = 1 To enemycount
If enemytank(i) = j Then
enemytank(i) = -1
enemytrack(j).IndexOfTank = 0
timEnemy(j).Enabled = False
End If
Next
getgrid block1(j).left, block1(j).top
mainarr(grx + 1, gry + 1) = 0
'display bomb
load timBomb(j)
timBomb(j).Enabled = True
'block1(j).Visible = False
Exit Sub
End If
End If
Next
End If
'move the missile in the appropriate direction
If dirplayer = 1 Then missileplayer.top = missileplayer.top - 200
If dirplayer = 2 Then missileplayer.left = missileplayer.left + 200
If dirplayer = 3 Then missileplayer.top = missileplayer.top + 200
If dirplayer = 4 Then missileplayer.left = missileplayer.left - 200
Errorhandler:
Exit Sub
missileplayer.Visible = False
timplayer.Enabled = False
End Sub
Private Sub update_Timer()
On Error GoTo Errorhandler
'empties 'non-wall' blocks
For j = 1 To grdy
For i = 1 To grdx
If mainarr(i, j) > 1 Then mainarr(i, j) = 0
Next
Next
'updates the block array (enemy tanks)
For i = 1 To enemycount
If enemytank(i) > -1 Then
getgrid block1(enemytank(i)).left + (block1(enemytank(i)).Width / 2) - map.left, block1(enemytank(i)).top + (block1(enemytank(i)).Height / 2) - map.top
mainarr(grx + 1, gry + 1) = 2
End If
Next
'updates the block array (player's tank)
If tankright.Visible = True Then
getgrid tankright.left + (tankright.Width / 2) - map.left, tankright.top + (tankright.Height / 2) - map.TabIndex
End If
If tankdown.Visible = True Then
getgrid tankdown.left + (tankdown.Width / 2) - map.left, tankdown.top + (tankdown.Height / 2) - map.top
End If
If tankleft.Visible = True Then
getgrid tankleft.left + (tankleft.Width / 2) - map.left, tankleft.top + (tankleft.Height / 2) - map.top
End If
If tankup.Visible = True Then
getgrid tankup.left + (tankup.Width / 2) - map.left, tankup.top + (tankup.Height / 2) - map.top
End If
mainarr(grx + 1, gry + 1) = 3
'Shape1.Move (grx * block1(0).Width) + map.Left, (gry * block1(0).Height) + map.Top, Shape1.Width, Shape1.Height
'Shape1.Visible = True
'Shape1.ZOrder (0)
Errorhandler:
Exit Sub
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -