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

📄 program.bas

📁 超级C&C有没有搞错,VB还能编出这种即时策略游戏来!没错,这就是我们的超级C&C!虽然游戏经常无故退出,但是原码仍有很多可圈可点的地方.祝你早日编出中国的超级RA,超级KKND,超级星际,超级家园
💻 BAS
字号:
Attribute VB_Name = "Program"
Type ProgramDat
  UsesSystemMemoryForBackbuffer As Boolean
End Type
Global ProgramData As ProgramDat
Sub LoadVersion()
Open Directory_GameData & GameEngine.GameDataFile$ For Input As #1
  Line Input #1, a$
  VERSION = MiscFunctions.GetPropertyValue(a$)
Close #1
End Sub
Sub LoadGamePatch()
ProgramData.UsesSystemMemoryForBackbuffer = MiscFunctions.ConvertTrueFalse(FileFunctions.GetPropertyValueFromFile(File_Patch, "UsesSystemMemoryForBackBuffer:"))
End Sub
Sub Initialize_Program()
Call GameEngine.Initialize_GameEngine
Call GameEngine.Initialize_GameWindows
CHARACTER_QOUTE = Chr$(34)
GameEngine.GameDataFile$ = Directory_DefaultGameData
Call Math.InitializeTables
Call ProcessCommandLineArguements
Call LoadGamePatch
Call LoadGameINI
Call GraphicsEngine.OpenGraphicsDevice
Call Sound.InitializeSound
Call LoadJPIData
Call LoadInGameConstants
GameInterface.Mouse.CursorPic = SpriteStuff.GetPicIndex("CURSOR_SELECT")
Call LoadVersion
End Sub
Sub LoadInGameConstants()
InGameConstants(InGameConstant_PICINDEX_FontLib) = SpriteStuff.GetGraphicsLibIndex("Font")
InGameConstants(InGameConstant_PICINDEX_MessageWindowPic) = SpriteStuff.GetPicIndex("MessageWindowPic")
InGameConstants(InGameConstant_PICINDEX_ControlPanelBackground) = SpriteStuff.GetPicIndex("ControlPanelBackground")
InGameConstants(InGameConstant_PICINDEX_ClearBackground) = SpriteStuff.GetPicIndex("ProgramBackground")
InGameConstants(InGameConstant_PICINDEX_RadarBackground) = SpriteStuff.GetPicIndex("RadarBackground")
InGameConstants(InGameConstant_PICINDEX_JPILogoRed) = SpriteStuff.GetPicIndex("JPILogoRed")
InGameConstants(InGameConstant_PICINDEX_ProgramBackground) = SpriteStuff.GetPicIndex("InterfaceBackground")
InGameConstants(InGameConstant_PICINDEX_RadarButtonPic) = SpriteStuff.GetPicIndex("RadarButton")
InGameConstants(InGameConstant_PICINDEX_BuildDisabledPic) = SpriteStuff.GetPicIndex("BuildDisabledPic")
InGameConstants(InGameConstant_PICINDEX_BuildReadyPic) = SpriteStuff.GetPicIndex("BuildReadyPic")
InGameConstants(InGameConstant_PICINDEX_ButtonLarge) = SpriteStuff.GetPicIndex("INTERFACE_BUTTONLARGE")
End Sub
Sub LoadJPIData()
Call SpriteStuff.LoadGraphicLibData
Call SpriteStuff.LoadPictureData
Call SpriteStuff.LoadSpriteData
Call Music.InitializeMusic
Call Entities.LoadMapImprints
Call Sound.LoadSoundData
Call Entities.LoadObjectData
Call Map.LoadSeasonProfiles
End Sub
Sub Main()
Call ProgramScript
End Sub
Sub LaunchAboutScreen()
Call GameInterface.ClearMouseButtons
texty = ResolutionMidY - 100 + 3
Do
  TextPos = 0
  Call GraphicsEngine.ClearBackBuffer
  Call GraphicsEngine.SplashGraphic(InGameConstants(InGameConstant_PICINDEX_ProgramBackground))
  TextPos = TextPos + 1
  TextPos = TextPos + 1
  Call DisplayTextCenter("-xion is-", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  TextPos = TextPos + 1
  TextPos = TextPos + 1
  Call DisplayTextCenter("Michael " & CHARACTER_QOUTE & "ZBAD" & CHARACTER_QOUTE & " Jennings", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  TextPos = TextPos + 1
  Call DisplayTextCenter("Programmer", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  TextPos = TextPos + 1
  Call DisplayTextCenter("3D Graphics", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  TextPos = TextPos + 1
  TextPos = TextPos + 1
  Call DisplayTextCenter("John " & CHARACTER_QOUTE & "DARK" & CHARACTER_QOUTE & " Sampson", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  TextPos = TextPos + 1
  Call DisplayTextCenter("Game Design", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  TextPos = TextPos + 1
  Call DisplayTextCenter("Storyline", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  TextPos = TextPos + 1
  TextPos = TextPos + 1
  Call DisplayTextCenter("-EXTREMELY special Thanks to-", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  TextPos = TextPos + 1
  Call DisplayTextCenter("Incredible help: Mark Davis", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  TextPos = TextPos + 1
  Call DisplayTextCenter("Beta tester: Dave Scouten", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  Call GraphicsEngine.SwapScreen
  DoEvents
  If Mouse.ButtonStates(1) = True Then
    Call GameInterface.ClearMouseButtons
    Exit Do
  End If
Loop

Do
  TextPos = 0
  Call GraphicsEngine.ClearBackBuffer
  Call GraphicsEngine.SplashGraphic(InGameConstants(InGameConstant_PICINDEX_ProgramBackground))
  TextPos = TextPos + 1
  TextPos = TextPos + 1
  Call DisplayTextCenter("Very very special thanks:", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  TextPos = TextPos + 1
  TextPos = TextPos + 1
  Call DisplayTextCenter("Dave " & CHARACTER_QOUTE & "ZoneMaster" & CHARACTER_QOUTE & " Scouten", texty + (TextPos * FONT_SPACINGY), PALLETE_YELLOW)
  TextPos = TextPos + 1
  TextPos = TextPos + 1
  Call DisplayTextCenter("You have no idea how many times", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  TextPos = TextPos + 1
  Call DisplayTextCenter("he let me crash his computer and", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  TextPos = TextPos + 1
  Call DisplayTextCenter("didn't complain he he he", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  TextPos = TextPos + 1
  TextPos = TextPos + 1
  Call DisplayTextCenter("PATRICE SCRIBE", texty + (TextPos * FONT_SPACINGY), PALLETE_YELLOW)
  TextPos = TextPos + 1
  Call DisplayTextCenter("for bringing directx", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  TextPos = TextPos + 1
  Call DisplayTextCenter("to visual basic", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  TextPos = TextPos + 1
  TextPos = TextPos + 1
  Call DisplayTextCenter("-Xion-", texty + (TextPos * FONT_SPACINGY), PALLETE_YELLOW)
  
  
  Call GraphicsEngine.SwapScreen
  DoEvents
  If Mouse.ButtonStates(1) = True Then
    Call GameInterface.ClearMouseButtons
    Exit Do
  End If
Loop

End Sub
Sub ShowInformation()
WndTxt = ""
WndTxt = WndTxt & "          -XION-          "
WndTxt = WndTxt & "This is a beta version of "
WndTxt = WndTxt & "     Jump-Point: Ion.     "
WndTxt = WndTxt & "                          "
WndTxt = WndTxt & "       ICQ: 3565855       "
WndTxt = WndTxt & "   digital-zbad@usa.net   "
Call PopupMessageWindow("JPI " & VERSION, WndTxt)
End Sub
Sub ProgramScript()
Call Initialize_Program
Call ShowLoadingScreen
Call ShowInformation
ProgScript:
Call GameInterface.ClearMouseButtons
MenuItemPressed = LaunchMainMenu
Select Case MenuItemPressed
Case 3
  Call ShowLoadingScreen
  Call GameEngine.StartNewGame(1, 1, FACTION_EDF)
  GoTo ProgScript:
Case 7
  Call Internet.NewInternetGameConsole
  GoTo ProgScript:
Case 9
  Call LaunchAboutScreen
  GoTo ProgScript:
Case 10
  Call Program.QuitProgram
Case Else
  GoTo ProgScript:
End Select
End Sub
Sub ShowLoadingScreen()
Call GraphicsEngine.SplashGraphic(InGameConstants(InGameConstant_PICINDEX_ProgramBackground))
MessageWindow.Caption = "JPI"
MessageWindow.Text = "Loading..."
Call GraphicsEngine.DisplayMessageWindow
Call SwapScreen
End Sub

Function LaunchMainMenu() As Integer
Dim MenuInterface As GameInterface.InterfaceObj, ReturnedInterface As InterfaceReturnObj
texty = (GameInterface.HALFINTERFACEHEIGHT - 95) + 1
PicY = texty + (1 * FONT_SPACINGY) + (FONT_SPACINGY / 2)
FontX = GameInterface.HALFINTERFACEWIDTH - 58
FontY = (texty) + Pics(InGameConstants(InGameConstant_PICINDEX_JPILogoRed)).Height + 4
BTNSIZE = FONT_SPACINGY - 1
TEXTSPACING = FONT_SPACINGY + 3
MenuInterface.BackgroundPic = InGameConstants(InGameConstant_PICINDEX_ProgramBackground)
MenuInterface.Controls.ControlAmount = 13
ControlNumber = ControlNumber + 1
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(GameInterface.CONTROLTYPE_PICTUREBOX, GameInterface.HALFINTERFACEWIDTH, PicY, Pics(InGameConstants(InGameConstant_PICINDEX_JPILogoRed)).Width, Pics(InGameConstants(InGameConstant_PICINDEX_JPILogoRed)).Height, InGameConstants(InGameConstant_PICINDEX_JPILogoRed))
ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Single player"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_LABEL, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)

ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Start New Game"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)

ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Save Game"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)

ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Load Game"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)

linenumber = linenumber + 1

ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Multiplayer"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_LABEL, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)

ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Connect To Server"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)

ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Host A Game"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)

ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "About"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)

ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Exit"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
MenuInterface.BackgroundSound = "MainMenu"
ReturnedInterface = GameInterface.RunStaticInterface(MenuInterface)
For I = 1 To ReturnedInterface.Controls.ControlAmount
  If ReturnedInterface.Controls.ControlObjects(I).ControlProperties.Properties(CONTROLPROPERTY_STATE) = True Then
    ButtonPressed = I
    
    Exit For
  End If
  If ReturnedInterface.Canceled = True Then
    ButtonPressed = 10
    Exit For
  End If
Next I
LaunchMainMenu = ButtonPressed
End Function

Sub ProcessCommandLineArguements()
IsGameDiff = MiscFunctions.GetCommandLineArg("-game")
If IsGameDiff = "NULL" Then
  GameEngine.GameDataFile$ = DefaultGameDataFile$ & GameDataFileExtention$
  Directory_GameData = Directory_DefaultGameData
Else
  Directory_GameData = IsGameDiff
  GameEngine.GameDataFile$ = IsGameDiff & GameDataFileExtention$
End If
End Sub
Sub UnInitialize_Program()
Call Sound.UnInitializeSound
Call GraphicsEngine.CloseGraphicsDevice
Call Music.CloseMusicDevice
End Sub
Sub QuitProgram()
Call SaveGameINI
Call UnInitialize_Program
End
End Sub
Sub SaveGameINI()
Close
Open GameINIFile$ For Output As #1
Print #1, "Seed: " & 200 * Rnd
Print #1, "[Player Settings]"
Print #1, "Nickname: " & LocalPlayer.NickName
Print #1, "IP: " & Internet.ServerData.ServerIP
Print #1, "Port: " & Internet.ServerData.ServerPort
Print #1, "MusicOn: " & Music.MusicOn
Print #1, "SoundOn: " & Sound.SoundData.DeviceOn
Print #1, "[ENDOFFILE]"
Close #1
End Sub
Sub LoadGameINI()
On Error GoTo loaderr
'just checks and makes sure that the INI file
'is there. if it isn't, it writes a new one.
Open GameINIFile$ For Input As #1
Close #1
'getts the values from the file
Randomize FileFunctions.GetPropertyValueFromFile(GameINIFile$, "Seed:")
LocalPlayer.NickName = FileFunctions.GetPropertyValueFromFile(GameINIFile$, "Nickname:")
Internet.ServerData.ServerIP = FileFunctions.GetPropertyValueFromFile(GameINIFile$, "IP:")
Internet.ServerData.ServerPort = Val(FileFunctions.GetPropertyValueFromFile(GameINIFile$, "Port:"))
Music.MusicOn = MiscFunctions.ConvertTrueFalse(FileFunctions.GetPropertyValueFromFile(GameINIFile$, "MusicOn:"))
Sound.SoundData.DeviceOn = MiscFunctions.ConvertTrueFalse(FileFunctions.GetPropertyValueFromFile(GameINIFile$, "SoundOn:"))
Exit Sub
loaderr:
Call WriteDefaultINI
End Sub
Sub WriteDefaultINI()
LocalPlayer.NickName = "Player"
Internet.ServerData.ServerIP = ""
Internet.ServerData.ServerPort = Internet.DefaultPort
Music.MusicOn = True
Sound.SoundData.DeviceOn = True
Call SaveGameINI
End Sub

⌨️ 快捷键说明

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