📄 objecttype.bas
字号:
Attribute VB_Name = "ModObjectType"
Option Explicit
Public HeadStr As String * 20
Public AllCon As Integer '定义的文件头'AllCon 是包含的个数,而不是序数
Public N As Integer 'for Count
Public ConX() As Integer '''''''''' 作为存储与运行的通讯,编号为二者最大值
''以下声明相当于类模块,作为一个"物体"对象
Type AllSeat
X As Single
Y As Single
End Type
Type FireX
DelayFps As Integer
FireType As Byte
FireSeat As AllSeat
End Type
'''''''''''''''''''''''''''''''''''''''''''''''''
Type SaveObject 'Eobject的存储方式
SaveName As Integer ''与HdcE 联系用ConX()
AllFps As Byte '具有帧
Width As Single '以单帧计算
Height As Single
ExplodeType As Byte '爆炸方式(声音包含在爆炸方式中)
IsFlicker As Boolean '该项声明有误,改为是否往复,是即为往复,否则为循环
IsRotate As Boolean '是否自动转1,0
Life As Integer '生命值
MaskColor As Long '掩模色
NextDelay As Integer '变换到下一个物体的帧数;0 即不变换
NextEObject As Integer '下一个变换物体
DelayFps As Byte 'Fps 延迟
FireSet(1 To 3) As FireX 'delayfps 是前面的延迟,若遇到0,则开始循环
HdcE As Long
HdcBack As Long
Sound As Integer
Reserved As Integer
Reserved2 As Long
End Type
Type RunObject 'Eobject的运行方式
IndexR As Integer
CombParent As Integer '如果作为一个组合式一部分,则=CombEobject.EName;此时MoveX 将不起作用
CurLife As Integer
CurFps As Byte '具有帧当中的循环记数
CurTotFps As Integer '已经运行总帧 ’如果路径出错,可以避免溢出
CurX As Single '以左上角记
CurY As Single
StartX As Integer
StartY As Integer
MoveType As Byte
PackageType As Byte
CurSpeedX As Single '******Cur*两项要传到 NextObject
CurSpeedY As Single
CurAngle As Single
BasSpeed As Single
BasAngle As Integer
CurDelay As Byte
DelayFps As Byte
FollowPlayer As Byte
CurFireFps(1 To 3) As Integer
End Type
'**********以下为完全设计一个静态eobjec的存储,地图存储,读入,运行
Type SaveStaticEObject ''存储用
SaveName As Integer '仅存储时用
Width As Single
Height As Single
MaskColor As Long
Life As Integer
IsRotate As Boolean
IsFlick As Integer '该值已经无用,但作为 IsAutoRotate
FireSet(1 To 3) As FireX '如果FireDelayFps=0 ,表示不发射
HdcE As Long '读入用,存储是为0
HdcBack As Long
Sound As Integer
RotateWidth As Integer
Reserved2 As Long
End Type
Type RunStaticObject
IndexR As Integer
MoveType As Byte
PackageType As Byte
CurX As Single '以左上角计算
CurY As Single
StartX As Integer
StartY As Integer
CurSpeedX As Single
CurSpeedY As Single
CurAngle As Single '注意,该角度并非用来旋转
CurAutoAngle As Integer ''旋转的角度
BasSpeed As Single
BasAngle As Integer
RotateAngle As Integer
CurFps As Integer
CurTotFps As Integer
CurLife As Integer
CurDelay As Byte
FollowPlayer As Byte
CurFireFps(1 To 3) As Integer '用于计量特殊路径子弹
End Type
'**********以上为完全设计一个静态eobjec的存储,地图存储,读入,运行
'*************************因为飞机只有两个,存储和运行用同种方式
Type SavePlane '自己的飞机 Save=Run
SaveName As Integer
Width As Single
Height As Single
MaskColor As Long
Life As Integer
AllFps As Byte
ExplodeType As Byte
FireSeatX1 As Byte
FireSeatY1 As Byte
FireSeatX2 As Byte
FireSeatY2 As Byte
HdcE As Long '加
HdcBack As Long
Sound As Integer
Reserved As Integer
End Type
Type RunPlane
IndexR As Integer
HdcRun As Long
HdcBack As Long
CurLife As Integer
CurX As Single ''''''''''''
CurY As Single
CurSpeedX As Single ''''''''''''
'CurSpeedY As Single '在此可能无用
CurFps As Byte 'Fps 初始为中间值
CurFireType As Byte
CurPower As Byte '计量子弹的等级
CurBomb As Byte
CurBombNum As Byte
CurBombFps As Byte
CurDelay As Byte
End Type
'''''''''''''''''
Type SaveBackObject '背景物体,动态和静态
SaveName As Integer
AllFps As Byte
Width As Single
Height As Single
MaskColor As Long
DelayFps As Byte
HdcE As Long
HdcBack As Long
Reserved As Double
Reserved2 As Long
End Type
Type RunBackObject
IndexR As Integer
CurFps As Byte
CurTotFps As Integer
CurDelay As Byte
CurX As Single
CurY As Single
CurSpeedY As Single
End Type
'**********以下为完全设计一个子弹《静态》类型
Type SaveBullet
SaveName As Integer
Width As Byte '注意此为 byte
Height As Byte
MaskColor As Long
IsRotate As Boolean
Power As Integer
Sound As Integer
TypeMove As Byte '外加的
SpeedInit As Byte '外加的
TailColor As Long '如果不为0 ,则为拖尾子弹,其颜色是Tailcolor
IsFollow As Boolean
HdcE As Long
HdcBack As Long
RotateWidth As Integer
End Type
Type RunBullet
IndexR As Integer
CurX As Single
CurY As Single
CurSpeedX As Single
CurSpeedY As Single
CurAngle As Integer
IsRotate As Boolean
CurDelay As Byte
End Type
'**********以上为完全设计一个子弹类型
'以下为飞机用子弹
Type SaveMyBul
SaveName As Integer
Width As Byte
Height As Byte
MaskColor As Long
Power As Integer
Sound As Integer
HdcE As Long
HdcBack As Long '外加的
IsLeftToRight As Boolean
Reser As Integer
Reserved2 As Long
End Type
Type RunMyBul
IndexR As Integer
WhichPlayer As Byte 'p1=1,p2=2
MoveType As Byte '注意该项与 bullet 不同
CurX As Single
CurY As Single
CurSpeedX As Single
CurSpeedY As Single
CurAngle As Single '用于跟踪弹,不定路径子弹的角度,与 movetype 有关
'该角度以水平上垂直线为基线,左为负,右为正
CurDelay As Byte
End Type
'以下为爆炸
Type SaveExp ',随机调用
SaveName As Integer
Width As Single
Height As Single
MaskColor As Long
AllFps As Byte
HdcE As Long
HdcBack As Long '
DelayFps As Byte '''''外加的
Reser As Byte
Sound As Integer
Reserved2 As Long
End Type
Type RunExp
IndexR As Integer
CurX As Single
CurY As Single
CurFps As Byte
CurDelay As Byte
End Type
'*******************************子弹撞击时的火花
Type SaveCrash '只有 1 Fps
SaveName As Integer
Width As Byte
Height As Byte
MaskColor As Long
HdcE As Long
HdcBack As Long '外加的
AllFps As Byte
DelayFps As Byte
Sound As Integer
Reserved2 As Long
End Type
Type RunCrash
IndexR As Integer
CurX As Single
CurY As Single
CurFps As Byte
CurDelay As Byte
End Type
'以下为运动包裹
Type SavePac
SaveName As Integer
Width As Single
Height As Single
MaskColor As Long
AllFps As Byte
TypePac As Byte
DelayFps As Byte
HdcE As Long
HdcBack As Long '外加的
Sound As Integer
Reserved2 As Long
End Type
Type RunPac
IndexR As Integer
MoveType As Byte
CurX As Single
CurY As Single
CurSpeedX As Single
CurSpeedY As Single
CurAngle As Single
CurFps As Byte
CurTotalFps As Integer
CurDelay As Byte
End Type
'*******************************以上为包裹
'以下为雷
Type SaveBomb
SaveName As Integer
Width As Byte
Height As Byte
MaskColor As Long
IsDrawType As Byte '定义存储的是画法还是图象
HdcE As Long
HdcBack As Long '外加的
Sound As Long
Reserved2 As Long
End Type
Type RunBomb
IndexR As Integer
IsDrawType As Byte
HdcRun As Long
CurDelay As Byte
CurX As Single
CurY As Single
End Type
Type SaveSingleMapObject
IsUsed As Byte
TypeObj As Byte
IndexOjb As Integer
SeatX As Integer
MoveType As Byte
IsPac As Byte
Reserved As Long
End Type
Type MapDoubleObject ''''在同一线上最多有10个物体
SingleObj(1 To 40) As SaveSingleMapObject '' 需要改为 20 个,存背景时必须截成段
End Type '其中动态背景需要单独读入
Type MapHead
MapHeadStr As String * 20
NameMap As String * 30
PassWord(1 To 19) As Byte
PL As Byte '计量pw
MapDescription As String * 50
Editor As String * 50
Reserved1 As String * 60
WidthTotal As Integer
HeightTotal As Integer
WidthShow As Integer
IsDrawBack As Boolean
BackColor As Long
SpeedMap As Byte
RandomPicture(1 To 10) As Integer
IsRandom As Boolean
SpeedBack As Byte
Reserved2 As String * 19
End Type
Type SaveMap
HeadMapFile As MapHead
ObjMap() As MapDoubleObject '纵行每隔 20 位存一次,横行最多10个,估计 (6000*10\20)*12=*36 K
End Type '最多可以存 2500 个物体(除去最后1K 保留给ghost)
Public Function ReadPW(S As MapHead) As String
Dim Ls As Byte
Dim BufS As String
For Ls = 1 To S.PL
BufS = BufS & Chr((S.PassWord(Ls) + 156) Mod 256)
Next
ReadPW = BufS
End Function
'*******************************************
'Init
Public Sub InitSaveObject(NewE As SaveObject)
Dim NewObj As SaveObject
NewE = NewObj
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -