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

📄 spriteed.bas

📁 超级C&C有没有搞错,VB还能编出这种即时策略游戏来!没错,这就是我们的超级C&C!虽然游戏经常无故退出,但是原码仍有很多可圈可点的地方.祝你早日编出中国的超级RA,超级KKND,超级星际,超级家园
💻 BAS
字号:
Attribute VB_Name = "Module1"
Global Const PICDEFFILE$ = "PictureDefs.Dat"
Global Const SPRITEDEFFILE$ = "Sprites.Dat"
Global Const CurrVers$ = "ION FORMAT VERSION: 1.0"
Type Spfs
  FrameName As String
  picname As String
  Duration As Integer
End Type
Type SpfGs
  GroupRepeats As Boolean
  SpriteGroupName As String
  SpriteFrames(100) As Spfs
  FrameMax As Integer
End Type
Type Sps
  SpriteName As String
  SpriteFrameGroups(20) As SpfGs
  GroupMax As Integer
End Type
Global Sprites(200) As Sps
Type pcz
  Masked As Boolean
  GraphicsLib As String
  picname As String
  X As Integer
  Y As Integer
  Width As Integer
  Height As Integer
End Type
Global Picz(500) As pcz
Global PicMax As Integer
Global SpriteMax As Integer
Type Lbs
  LibName As String
  picname As String
End Type
Global GraphicLibs(100) As Lbs
Global LibMax As Integer
Sub LoadPicInfo()
On Error GoTo ERR1
PicMax = 0
Open PICDEFFILE$ For Input As #1
  Line Input #1, a$
  If a$ <> CurrVers$ Then
    Call CurrVersError
  End If
  Do
    Line Input #1, a$
    If a$ = "[ENDOFFILE]" Then Exit Do
    If a$ = "[PICDEF]" Then
      'increments the current picture num
      PicMax = PicMax + 1
      
      'Picture name
      Line Input #1, a$
      fval$ = GetPropertyValue(a$)
      Picz(PicMax).picname = fval$
      
      'Graphics Library of the pic
      Line Input #1, a$
      fval$ = GetPropertyValue(a$)
      Picz(PicMax).GraphicsLib = fval$
      
      
      'X
      Line Input #1, a$
      fval$ = GetPropertyValue(a$)
      Picz(PicMax).X = Val(fval$)
      
      'Y
      Line Input #1, a$
      fval$ = GetPropertyValue(a$)
      Picz(PicMax).Y = Val(fval$)
      
      'Width
      Line Input #1, a$
      fval$ = GetPropertyValue(a$)
      Picz(PicMax).Width = Val(fval$)
      
      'Height
      Line Input #1, a$
      fval$ = GetPropertyValue(a$)
      Picz(PicMax).Height = Val(fval$)
    
    End If
  Loop
Close #1
Exit Sub
ERR1:
Close #1
PicMax = 0
End Sub
Sub CurrVersError()
MsgBox "Wrong file version"
End
End Sub
Public Function GetPropertyValue(TextString) As String
GetPropertyValue = Right$(TextString, Len(TextString) - InStr(1, TextString, " "))
If InStr(1, TextString, " ") = 0 Then GetPropertyValue = ""
End Function

Sub LoadAll()
Call LoadPicInfo
Call LoadSpriteInfo
End Sub
Sub LoadSpriteInfo()
On Error GoTo ERR2
SpriteMax = 0
Open SPRITEDEFFILE$ For Input As #1
  Line Input #1, a$
  If a$ <> CurrVers$ Then
    Call CurrVersError
  End If
  Do
    Line Input #1, a$
    If a$ = "[ENDOFFILE]" Then Exit Do
    If a$ = "[SPRITEDEF]" Then
      'increments the current sprite num
      SpriteMax = SpriteMax + 1
      
      'name of the sprite
      Line Input #1, a$
      fval$ = GetPropertyValue(a$)
      Sprites(SpriteMax).SpriteName = fval$
      
      'reset the group number
      Sprites(SpriteMax).GroupMax = 0
      Do
        Line Input #1, a$
        If a$ = "[ENDSPRITEDEF]" Then Exit Do
        If a$ = "-FRAMEGROUP-" Then
          Sprites(SpriteMax).GroupMax = Sprites(SpriteMax).GroupMax + 1
          'Group name
          Line Input #1, a$
          fval$ = GetPropertyValue(a$)
          Sprites(SpriteMax).SpriteFrameGroups(Sprites(SpriteMax).GroupMax).SpriteGroupName = fval$
          'group Repeats
          Line Input #1, a$
          fval$ = GetPropertyValue(a$)
          If fval$ = "True" Then
            YesNo = True
          Else
            YesNo = False
          End If
          Sprites(SpriteMax).SpriteFrameGroups(Sprites(SpriteMax).GroupMax).GroupRepeats = YesNo
          FrameMax = 0
          Do
            Line Input #1, a$
            If a$ = "-ENDFRAMEGROUP-" Then Exit Do
            If a$ = "-FRAME-" Then
              FrameMax = FrameMax + 1
              Sprites(SpriteMax).SpriteFrameGroups(Sprites(SpriteMax).GroupMax).FrameMax = FrameMax
              'Frame name
              Line Input #1, a$
              fval$ = GetPropertyValue(a$)
              Sprites(SpriteMax).SpriteFrameGroups(Sprites(SpriteMax).GroupMax).SpriteFrames(FrameMax).FrameName = fval$
              
              'Frame duration
              Line Input #1, a$
              fval$ = GetPropertyValue(a$)
              Sprites(SpriteMax).SpriteFrameGroups(Sprites(SpriteMax).GroupMax).SpriteFrames(FrameMax).Duration = Val(fval$)
              
              'Frame picture name
              Line Input #1, a$
              fval$ = GetPropertyValue(a$)
              Sprites(SpriteMax).SpriteFrameGroups(Sprites(SpriteMax).GroupMax).SpriteFrames(FrameMax).picname = fval$
            End If
          Loop
        End If
      Loop
    End If
  Loop
Close #1
Exit Sub
ERR2:
Close #1
SpriteMax = 0
End Sub
Sub updateSpritelist()
currindex = Form1.List1.ListIndex
Form1.List1.Clear
Form1.List1.AddItem "[NewSprite]"
For i = 1 To SpriteMax
  Form1.List1.AddItem Sprites(i).SpriteName
Next i
Form1.List1.ListIndex = currindex
Form1.Label1.Caption = Form1.List1.List(Form1.List1.ListIndex)
End Sub
Sub UpdateSpriteProperties()
snum = Form1.List1.ListIndex
If snum > 0 Then
  Form1.Text1.Text = Sprites(snum).SpriteName
Else
  Form1.Text1.Text = ""
End If
Form1.Label1.Caption = Form1.List1.List(Form1.List1.ListIndex)
End Sub

Sub UpdateGroupProperties()
snum = Form1.List1.ListIndex
gnum = Form1.List2.ListIndex

If snum > 0 Then
  Form1.Text2.Text = Sprites(snum).SpriteFrameGroups(gnum).SpriteGroupName
  If Sprites(snum).SpriteFrameGroups(gnum).GroupRepeats = True Then
    Form1.Check1.Value = 1
  Else
    Form1.Check1.Value = 0
  End If

Else
  
  Form1.Text2.Text = ""
  Form1.Check1.Value = 0
End If

End Sub

Sub UpdateGroupList()
currindex = Form1.List2.ListIndex
Form1.List2.Clear
Form1.List2.AddItem "[NewGroup]"
snum = Form1.List1.ListIndex
For i = 1 To Sprites(snum).GroupMax
  Form1.List2.AddItem Sprites(snum).SpriteFrameGroups(i).SpriteGroupName
Next i
Form1.List2.ListIndex = currindex
End Sub

Sub UpdateFrameList()
currindex = Form1.List3.ListIndex
Form1.List3.Clear
Form1.List3.AddItem "[NewFrame]"
snum = Form1.List1.ListIndex
gnum = Form1.List2.ListIndex
For i = 1 To Sprites(snum).SpriteFrameGroups(gnum).FrameMax
  Form1.List3.AddItem Sprites(snum).SpriteFrameGroups(gnum).SpriteFrames(i).FrameName
Next i
Form1.List3.ListIndex = currindex
End Sub

Sub UpdateFrameProperties()
snum = Form1.List1.ListIndex
gnum = Form1.List2.ListIndex
fnum = Form1.List3.ListIndex
If snum > 0 Then
  Form1.Text4.Text = Sprites(snum).SpriteFrameGroups(gnum).SpriteFrames(fnum).Duration
  For i = 0 To Form1.List4.ListCount - 1
    If Sprites(snum).SpriteFrameGroups(gnum).SpriteFrames(fnum).picname = Form1.List4.List(i) Then
      Form1.List4.ListIndex = i
      Exit For
    End If
  Next i
  Form1.Text3.Text = Sprites(snum).SpriteFrameGroups(gnum).SpriteFrames(fnum).FrameName
Else
  Form1.Text3.Text = ""
End If

End Sub
Sub updateSpritenamelist()
On Error Resume Next
Form1.List4.Clear
For i = 1 To PicMax
  Form1.List4.AddItem Picz(i).picname
Next i
For i = 0 To PicMax - 1
  If Form1.List4.List(i) = Sprites(Form1.List5.ListIndex).SpriteFrameGroups(Form1.List2.ListIndex).SpriteFrames(Form1.List3.ListIndex).picname Then
    Form1.List4.ListIndex = i
    Exit For
  End If
Next i
End Sub
Sub LoadGraphicLibs()
On Error GoTo err
LibMax = 0
Open "GraphicLibs.Dat" For Input As #1
Line Input #1, a$
Do
  Line Input #1, a$
  If a$ = "[ENDOFFILE]" Then Exit Do
  If a$ = "[GRAPHICSLIBRARYDEF]" Then
    LibMax = LibMax + 1
    Line Input #1, a$
    fval$ = GetPropertyValue(a$)
    GraphicLibs(LibMax).LibName = fval$
    Line Input #1, a$
    fval$ = GetPropertyValue(a$)
    GraphicLibs(LibMax).picname = fval$
  End If
Loop
Close #1
Exit Sub
err:
Close #1
Exit Sub
End Sub
Sub UpdatePicList()
CurrIndx = Form1.List5.ListIndex
Form1.List5.Clear
Form1.List5.AddItem "[NewPic]"
For i = 1 To PicMax
  Form1.List5.AddItem Picz(i).picname
Next i
Form1.List5.ListIndex = CurrIndx
End Sub
Sub UpdateLibList()
On Error Resume Next
Form1.List6.Clear
For i = 1 To LibMax
  Form1.List6.AddItem GraphicLibs(i).LibName
Next i
Form1.List6.ListIndex = 0
End Sub
Sub UpdatePicProperties()
snum = Form1.List5.ListIndex
If snum > 0 Then
  Form1.Text5.Text = Picz(snum).picname
  Form1.Text6.Text = Picz(snum).X
  Form1.Text8.Text = Picz(snum).Y
  Form1.Text7.Text = Picz(snum).Width
  Form1.Text9.Text = Picz(snum).Height
  Call UpdateLibs
Else
  Form1.Text5.Text = ""
  Form1.Text6.Text = ""
  Form1.Text7.Text = ""
  Form1.Text8.Text = ""
  Form1.Text9.Text = ""

End If
End Sub
Sub LoadLibPic()
On Error Resume Next
If Form1.List6.ListIndex <> -1 Then Form1.Picture2.Picture = LoadPicture(GraphicLibs(Form1.List6.ListIndex + 1).picname)


hnum = Form1.Picture2.ScaleWidth - Form1.Picture1.ScaleWidth
If hnum < 0 Then hnum = 0
hnum = hnum + 1
Form1.HScroll1.Max = hnum

vnum = Form1.Picture2.ScaleHeight - Form1.Picture1.ScaleHeight
If vnum < 0 Then vnum = 0
vnum = vnum + 1
Form1.VScroll1.Max = vnum
Call redrawpicview
End Sub
Sub redrawpicview()
Form1.Picture2.Cls
Form1.Picture2.Line (Picz(Form1.List5.ListIndex).X, Picz(Form1.List5.ListIndex).Y)-((Picz(Form1.List5.ListIndex).X + Picz(Form1.List5.ListIndex).Width) - 1, Picz(Form1.List5.ListIndex).Y + (Picz(Form1.List5.ListIndex).Height) - 1), RGB(255, 0, 255), B
End Sub
Sub UpdateLibs()
For i = 0 To LibMax - 1
  If Form1.List6.List(i) = Picz(Form1.List5.ListIndex).GraphicsLib Then
    Form1.List6.ListIndex = i
    Exit For
  End If
Next i
End Sub
Sub SaveSprites()
Open SPRITEDEFFILE$ For Output As #1
Print #1, CurrVers$
For i = 1 To SpriteMax
  Print #1, "[SPRITEDEF]"
  Print #1, "SpriteName: " & Sprites(i).SpriteName
  For i2 = 1 To Sprites(i).GroupMax
    Print #1, "-FRAMEGROUP-"
    Print #1, "GroupName: " & Sprites(i).SpriteFrameGroups(i2).SpriteGroupName
    Print #1, "Repeats: " & Sprites(i).SpriteFrameGroups(i2).GroupRepeats
    For i3 = 1 To Sprites(i).SpriteFrameGroups(i2).FrameMax
      Print #1, "-FRAME-"
      Print #1, "FrameName: " & Sprites(i).SpriteFrameGroups(i2).SpriteFrames(i3).FrameName
      Print #1, "Duration: " & Sprites(i).SpriteFrameGroups(i2).SpriteFrames(i3).Duration
      Print #1, "PicName: " & Sprites(i).SpriteFrameGroups(i2).SpriteFrames(i3).picname
      Print #1, "-ENDFRAME-"
    Next i3
    Print #1, "-ENDFRAMEGROUP-"
  Next i2
  Print #1, "[ENDSPRITEDEF]"
Next i
Print #1, "[ENDOFFILE]"
Close #1
End Sub

Sub SavePics()
Open PICDEFFILE$ For Output As #1
Print #1, CurrVers$
For i = 1 To PicMax
  Print #1, "[PICDEF]"
  Print #1, "PicName: " & Picz(i).picname
  Print #1, "GraphicsLib: " & Picz(i).GraphicsLib
  Print #1, "X: " & Picz(i).X
  Print #1, "Y: " & Picz(i).Y
  Print #1, "Width: " & Picz(i).Width
  Print #1, "Height: " & Picz(i).Height
  Print #1, "[ENDPICDEF]"
Next i
Print #1, "[ENDOFFILE]"
Close #1
End Sub

⌨️ 快捷键说明

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