📄 form1.frm
字号:
End Sub
Sub PaintMaZiDan() '表现己方子弹
Dim destRect As RECT
Dim srcRect As RECT
Dim i As Integer
With srcRect
.Left = 0
.Top = 0
.Right = ddsdZiDan.lWidth
.Bottom = ddsdZiDan.lHeight
End With
For i = 0 To 30
If Ma_ZiDan_Date(i).Shotting = True Then
With destRect '子弹的屏幕位置,子弹没有做裁剪
.Left = Ma_ZiDan_Date(i).CurPosX - Ma_Date.CurPosX + DisplayWidth / 2 + BackgroundTile_Width - ddsdZiDan.lWidth / 2
.Top = -(Ma_ZiDan_Date(i).CurPosY - Ma_Date.CurPosY) + DisplayHeight / 2 + BackgroundTile_Height - ddsdZiDan.lHeight / 2
.Right = Ma_ZiDan_Date(i).CurPosX - Ma_Date.CurPosX + DisplayWidth / 2 + BackgroundTile_Width + ddsdZiDan.lWidth / 2
.Bottom = -(Ma_ZiDan_Date(i).CurPosY - Ma_Date.CurPosY) + DisplayHeight / 2 + BackgroundTile_Height + ddsdZiDan.lHeight / 2
End With
Call BackbufferSurface.Blt(destRect, ZiDan, srcRect, DDBLT_WAIT Or DDBLT_KEYSRC)
End If
Next i
End Sub
Sub PaintEnemyZidan() '表现敌方子弹
Dim destRect As RECT
Dim srcRect As RECT
Dim i As Integer
With srcRect
.Left = 0
.Top = 0
.Right = ddsdZiDan.lWidth
.Bottom = ddsdZiDan.lHeight
End With
For i = 0 To 30
If Enemy_ZiDan_Date(i).Shotting = True Then
With destRect '子弹的屏幕位置,子弹没有做裁剪
.Left = Enemy_ZiDan_Date(i).CurPosX - Ma_Date.CurPosX + DisplayWidth / 2 + BackgroundTile_Width - ddsdZiDan.lWidth / 2
.Top = -(Enemy_ZiDan_Date(i).CurPosY - Ma_Date.CurPosY) + DisplayHeight / 2 + BackgroundTile_Height - ddsdZiDan.lHeight / 2
.Right = Enemy_ZiDan_Date(i).CurPosX - Ma_Date.CurPosX + DisplayWidth / 2 + BackgroundTile_Width + ddsdZiDan.lWidth / 2
.Bottom = -(Enemy_ZiDan_Date(i).CurPosY - Ma_Date.CurPosY) + DisplayHeight / 2 + BackgroundTile_Height + ddsdZiDan.lHeight / 2
End With
Call BackbufferSurface.Blt(destRect, ZiDan, srcRect, DDBLT_WAIT Or DDBLT_KEYSRC)
End If
Next i
End Sub
Sub PaintHit()
Dim destRect As RECT
Dim srcRect As RECT
Dim i As Integer
For i = 0 To 9
With Hit_Date(i)
If .Hitted = True Then
Select Case .State
Case 0
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 1
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 2
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 3
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 4
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 5
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 6
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 7
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 8
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 9
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
End Select
'destRect表示的范围可随意缩放
destRect.Left = .CurPosX - Ma_Date.CurPosX + DisplayWidth / 2 + BackgroundTile_Width - SpriteTileSize / 6
destRect.Right = .CurPosX - Ma_Date.CurPosX + DisplayWidth / 2 + BackgroundTile_Width + SpriteTileSize / 6
destRect.Top = -(.CurPosY - Ma_Date.CurPosY) + DisplayHeight / 2 + BackgroundTile_Height - SpriteTileSize / 6
destRect.Bottom = -(.CurPosY - Ma_Date.CurPosY) + DisplayHeight / 2 + BackgroundTile_Height + SpriteTileSize / 6
Call BackbufferSurface.Blt(destRect, Hit, srcRect, DDBLT_WAIT Or DDBLT_KEYSRC)
End If
End With
Next i
End Sub
Sub PaintDestroy()
Dim destRect As RECT
Dim srcRect As RECT
Dim i As Integer
For i = 0 To 9
With Destroy_Date(i)
If .Hitted = True Then
Select Case .State
Case 0
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 1
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 2
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 3
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 4
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 5
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 6
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 7
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 8
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
Case 9
srcRect.Left = SpriteTileSize * .State
srcRect.Right = SpriteTileSize * (.State + 1)
srcRect.Top = 0
srcRect.Bottom = SpriteTileSize
End Select
'destRect表示的范围可随意缩放
destRect.Left = .CurPosX - Ma_Date.CurPosX + DisplayWidth / 2 + BackgroundTile_Width - SpriteTileSize / 2
destRect.Right = .CurPosX - Ma_Date.CurPosX + DisplayWidth / 2 + BackgroundTile_Width + SpriteTileSize / 2
destRect.Top = -(.CurPosY - Ma_Date.CurPosY) + DisplayHeight / 2 + BackgroundTile_Height - SpriteTileSize / 2
destRect.Bottom = -(.CurPosY - Ma_Date.CurPosY) + DisplayHeight / 2 + BackgroundTile_Height + SpriteTileSize / 2
Call BackbufferSurface.Blt(destRect, Hit, srcRect, DDBLT_WAIT Or DDBLT_KEYSRC)
End If
End With
Next i
End Sub
Sub Hit_Date_Change() '爆炸效果
Dim i As Integer
For i = 0 To 9
With Hit_Date(i)
If .Hitted = True Then
.State = .State + 1
If .State > 9 Then
.Hitted = False
.State = 0
End If
End If
End With
Next i
End Sub
Sub Destroy_Date_Change() '爆炸效果
Dim i As Integer
For i = 0 To 9
With Destroy_Date(i)
If .Hitted = True Then
.State = .State + 1
If .State > 9 Then
.Hitted = False
.State = 0
End If
End If
End With
Next i
End Sub
Sub PaintRadar()
Dim destRect As RECT
Dim srcRect As RECT
Dim i As Integer
If Radar = True Then
With srcRect
.Left = 0
.Top = 0
.Right = SpriteTileSize - 1
.Bottom = SpriteTileSize - 1
End With
For i = 0 To 9 '战术雷达 表现敌机(红点)
If Enemy1_Date(i).Hp > 0 Then
With destRect
.Left = Enemy1_Date(i).CurPosX / RADAR_RATE + BackgroundTile_Width - ddsdRadar_Red.lWidth / 2
.Right = Enemy1_Date(i).CurPosX / RADAR_RATE + BackgroundTile_Width + ddsdRadar_Red.lWidth / 2
.Top = -Enemy1_Date(i).CurPosY / RADAR_RATE + BackgroundTile_Height - ddsdRadar_Red.lHeight / 2
.Bottom = -Enemy1_Date(i).CurPosY / RADAR_RATE + BackgroundTile_Height + ddsdRadar_Red.lHeight / 2
End With
Call BackbufferSurface.Blt(destRect, Radar_Red, srcRect, DDBLT_WAIT Or DDBLT_KEYSRC)
End If
Next i
If Ma_Date.Hp > 0 Then
With destRect '自己(绿点)
.Left = Ma_Date.CurPosX / RADAR_RATE + BackgroundTile_Width - ddsdRadar_Red.lWidth / 2
.Right = Ma_Date.CurPosX / RADAR_RATE + BackgroundTile_Width + ddsdRadar_Red.lWidth / 2
.Top = -Ma_Date.CurPosY / RADAR_RATE + BackgroundTile_Height - ddsdRadar_Red.lHeight / 2
.Bottom = -Ma_Date.CurPosY / RADAR_RATE + BackgroundTile_Height + ddsdRadar_Red.lHeight / 2
End With
Call BackbufferSurface.Blt(destRect, Radar_Green, srcRect, DDBLT_WAIT Or DDBLT_KEYSRC)
End If
End If
End Sub
Sub SpeedControl() '使用暂停来控制游戏速度,用于各种性能的计算机
If SleepNum > 0 Then '减小SleepNum以加快游戏速度
If diStateMouse.buttons(0) = 128 Then SleepNum = SleepNum - 1
End If
If SleepNum < 20 Then '增加SleepNum以降低游戏速度
If diStateMouse.buttons(1) = 128 Then SleepNum = SleepNum + 1
End If
Sleep (SleepNum)
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -