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

📄 modmain.bas

📁 一款飞机射击游戏的源代码
💻 BAS
📖 第 1 页 / 共 4 页
字号:
Attribute VB_Name = "ModMain"
Option Explicit
'Public StartSky As ClsStart
Public GameSound As SoundEngine

Public IsBeforeStart As Boolean
Public MainTime As Long
Public IsPlaying As Boolean
Public IsPaused As Boolean
Public IsUnloadAll As Boolean
Public IsShowInsertPlay As Boolean
Public GameFps As Long
Public MapIndex As Byte

Public CountA As Integer
Public CountB As Integer
Public CountC As Integer
Public Jk As Byte
Public MapSpeed As Single
Public BackSpeed As Single

Public IsLoadP(1 To 2) As Boolean
'Public IsPause As Boolean

Public MapWid As Integer
Public MapHei As Single     '最长约10 分钟
Public CurMapSeat As Single  ' 只有高度
Public CurMapSeatObj As Integer


Public MaxLeft As Integer         'object 消失的位置
Public MaxRight As Integer
Public MidX As Integer          '中间位置
Public MidY As Integer
Public LR As Integer
Public StartDrawX0 As Integer
Public StartDrawX As Single

Public HdcView As Long
Public HdcViewBuf As Long
Public HdcMapRandom As Long
Public HdcMapObj As Long
Public HdcShowScore As Long
Public HwndShowScore As Long
Public HdcShowScoreBuf As Long

'Public FrmMimiHwnd As Long
'Public FrmMainHwnd As Long
'Public HdcRandom() As Long

Public Map As SaveMap

Public LoadObj() As SaveObject
Public LoadPla() As SavePlane      '因为一共只有两架
Public LoadSta() As SaveStaticEObject
Public LoadBackObj() As SaveBackObject
Public LoadBul() As SaveBullet
Public LoadMyBul() As SaveMyBul
Public LoadExp() As SaveExp
Public LoadCra() As SaveCrash
Public LoadPac() As SavePac
Public LoadBom() As SaveBomb            '这一项已不用,而是用画法

Public LoadMusicList() As String

Public CurContinueP(1 To 2) As Byte
Public FlashFpsP(1 To 2) As Byte
Public CurContinueAll As Byte


Public CtrlPlay(1 To 2) As Byte
Public KeyLeft(1 To 2) As Byte
Public KeyRight(1 To 2) As Byte
Public KeyUp(1 To 2) As Byte
Public KeyDown(1 To 2) As Byte
Public KeyFire(1 To 2) As Byte
Public KeyFireHold(1 To 2) As Byte
Public KeyBomb(1 To 2) As Byte

Public IsKeyLeft(1 To 2) As Boolean
Public IsKeyRight(1 To 2) As Boolean
Public IsKeyUp(1 To 2) As Boolean
Public IsKeyDown(1 To 2) As Boolean
Public IsKeyFire(1 To 2) As Boolean
Public IsKeyFireHold(1 To 2) As Boolean
Public IsKeyBomb(1 To 2) As Boolean

Public HoldFps(1 To 2) As Long

Public PlayPla(1 To 2) As RunPlane '因为一共只有两架
Public PlayObj() As RunObject
Public PlaySta() As RunStaticObject
Public PlayBackObj() As RunBackObject
Public PlayBul() As RunBullet
Public PlayMyBul() As RunMyBul
Public PlayExp() As RunExp
Public PlayCra() As RunCrash
Public PlayPac() As RunPac
Public PlayBom() As RunBomb

Public BacPixel() As PixelXY

Public BulTail() As RunBulletTail
Public BombStart() As TailBomb
Public RunBombTail() As TailBomb
Public PicRandom() As RunRandomPic

Public MaxObj As Byte
Public MaxSta As Byte
Public MaxBackObj As Byte
Public MaxBul As Byte
Public MaxMyBul As Byte
Public MaxExp As Byte
Public MaxCra As Byte
Public MaxPac As Byte
Public MaxBom As Byte
Public MaxPixel As Byte
Public MaxTail As Integer
Public MaxBombStart As Byte
Public MaxBombTail As Integer

Public CurObj As Byte   '''''与max thing 对应,用于优化循环
Public CurSta As Byte
Public CurBackObj As Byte
Public CurBul As Byte
Public CurMyBul As Byte
Public CurExp As Byte
Public CurCra As Byte
Public CurPac As Byte
Public CurBom As Byte
Public CurPixel As Byte
Public CurTail As Integer
Public CurBStart As Byte
Public CurBTail As Integer
'Public SetSound(0 To 4) As Byte
Public SoundObj As Byte
Public SoundSta As Byte
Public SoundBul As Byte
Public SoundMybul As Byte
Public SoundExp As Byte
Public SoundCra As Byte
Public SoundPac As Byte
Public SoundBom As Byte

Public MaxLoadObj As Integer '''被装载的最大值
Public MaxLoadSta As Integer
Public MaxLoadBackObj As Integer
Public MaxLoadBul As Integer
Public MaxLoadMyBul As Integer
Public MaxLoadExp As Integer
Public MaxLoadCra As Integer
Public MaxLoadPac As Integer
Public MaxLoadBom As Integer
Public MaxLoadRandom As Byte

Public Sub RedimAllThing()
MaxObj = 15
MaxSta = 15
MaxBackObj = 40     'debug
MaxBul = 60 ' 100  '50' 100''用100 调试
MaxMyBul = 160
MaxExp = 40
MaxCra = 20
MaxPac = 8
MaxBom = 2

MaxPixel = 10
MaxTail = 400 ' 250 '100 '
                '250 只做调试用
MaxBombStart = 20
MaxBombTail = 200

    ReDim PlayObj(1 To MaxObj)
    ReDim PlaySta(1 To MaxSta)
    ReDim PlayBackObj(1 To MaxBackObj)
    ReDim PlayBul(1 To MaxBul)
    ReDim PlayMyBul(1 To MaxMyBul)
    ReDim PlayExp(1 To MaxExp)
    ReDim PlayCra(1 To MaxCra)
    ReDim PlayPac(1 To MaxPac)
    ReDim PlayBom(1 To MaxBom)
    
    ReDim BacPixel(1 To MaxPixel)
    ReDim BulTail(1 To MaxTail)
    ReDim BombStart(1 To MaxBombStart)
    ReDim RunBombTail(1 To MaxBombTail)
    
'Reset Something
'IsBeforeStart = True
End Sub
Public Sub SetPlayKey()
    CtrlPlay(1) = 0
    CtrlPlay(2) = 0

    KeyUp(1) = CurOption.KeyP(1, 0)
    KeyLeft(1) = CurOption.KeyP(1, 1)
    KeyDown(1) = CurOption.KeyP(1, 2)
    KeyRight(1) = CurOption.KeyP(1, 3)
    KeyFire(1) = CurOption.KeyP(1, 4)
    KeyBomb(1) = CurOption.KeyP(1, 5)
    KeyFireHold(1) = CurOption.KeyP(1, 6)
    
    KeyUp(2) = CurOption.KeyP(2, 0)
    KeyLeft(2) = CurOption.KeyP(2, 1)
    KeyDown(2) = CurOption.KeyP(2, 2)
    KeyRight(2) = CurOption.KeyP(2, 3)
    KeyFire(2) = CurOption.KeyP(2, 4)
    KeyBomb(2) = CurOption.KeyP(2, 5)
    KeyFireHold(2) = CurOption.KeyP(2, 6)
End Sub
Public Sub InitPlayer()
    Call SetPlayKey
    IsPlaying = True
    IsPaused = False
    IsBomb(1) = False
    IsBomb(2) = False
    IsTailBombStart = False
    BombStarted(1) = False
    BombStarted(2) = False
    CurMyFpsP(1) = 4
    CurMyXp(2) = MidX + 80 ' 300
    CurMyYp(2) = 400
    CurMyFpsP(2) = 4
    CurMyXp(1) = MidX - 80 ' 140
    CurMyYp(1) = 400
    
    PlayPla(1).CurLife = LoadPla(1).Life
    PlayPla(2).CurLife = LoadPla(2).Life
    PlayPla(1).CurFireType = 1
    PlayPla(2).CurFireType = 1
    PlayPla(1).CurPower = 0
    PlayPla(2).CurPower = 0
    PlayPla(1).CurBombNum = 3
    PlayPla(2).CurBombNum = 3
    For N = 1 To 2
        With BombStart(N)
            .ColorTail = 0
            .CurFps = 0
            .SpeedX = 0
            .SpeedY = 0
            .StyleBomb = 2
            .WhichPla = 0
            .X = 0
            .Y = 0
        End With
    Next N
    
End Sub
Private Sub ResetCurThing()
     CurObj = 0
     CurSta = 0
     CurBackObj = 0
     CurBul = 0
     CurMyBul = 0
     CurExp = 0
     CurCra = 0
     CurPac = 0
     CurBom = 0
     CurPixel = 0
     CurTail = 0
     CurBStart = 0
     CurBTail = 0
     'For N = 0 To 4
     '   SetSound(N) = 0
     'Next N
     'SetSound(0) = 0
     'SetSound(1) = 0
     'SetSound(2) = 0 '(SetSound(2) + 1) Mod 2 '4
     'SetSound(3) = 0
     'SetSound(4) = 0
     SoundObj = 0
     SoundSta = 0
     SoundBul = 0
     SoundMybul = 0
     SoundExp = 0
     SoundCra = 0
     SoundPac = 0
     SoundBom = 0

End Sub
Public Sub Play()

Dim KT As Long
    Call RedimAllThing
    'debug
    Call InitPlayer
    GameFps = 0
    
    Do While IsPlaying ' DoEvents And IsPlaying
        KT = timeGetTime()
        GameFps = IIf(GameFps <> 200, GameFps + 1, 1)
        Call ResetCurThing
        
        Call DrawMapToViewBuf
        Call DrawPixel
        Call LoadMapObject '
        
        Call DrawBackObject
        Call DrawObject
        
        Call DrawStaticObject '
        Call DrawPackage
        Call DrawBulletTail '''''
        Call DrawBullet
        If IsLoadP(1) Then Call DrawPlane(1)
        If IsLoadP(2) Then Call DrawPlane(2)
        If IsBomb(1) Or IsBomb(2) Or IsTailBombStart Then Call DrawBomb
        
        Call DrawMyBullet
        Call DrawCrash
        Call DrawExplode
        
        Call LeftToRight(StartDrawX0)
        Call DrawText

⌨️ 快捷键说明

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