Its very easy using VB6 to create a simple yLib game.
yLib provides a class named GameEngine to create your games but you can't use this class directly,
Because of it is a abstract class and it want a IGame inherited class in the constructor.
You can use GameEngine like the code below.
Dim g As yLib.GameEngine
Set g = GameEngine(...)
But there is a problem with arguments which is that first argument is IGameInterface As IGame
You must put above code in a class that Implements yLib.IGame
See the code below ,its written in a class.
Implements yLib.IGame
Dim g As yLib.GameEngine
Public Sub Run() ' this method must call in sub Main()
Set g = GameEngine(Me,"Game_Name","800x600")
End Sub
Private Sub IGame_Initialize(ByVal e As yLib.GameEngineInitializationEventArgs)
calls when GameEngine method callingEnd Sub
Private Sub IGame_Load(ByVal e As yLib.GameEngineTimingEventArgs)
calls when GameEngine execution endsEnd Sub
Private Sub IGame_Update(ByVal e As yLib.GameEngineTimingEventArgs)
occures on each frame updateEnd Sub
Private Sub IGame_Draw(ByVal e As yLib.GameEngineTimingEventArgs)
occures on each frame after Update eventEnd Sub
Private Sub IGame_TimerTick(ByVal timer As yLib.GameTimer)
occures on each timer tick eventEnd Sub
Private Sub IGame_Terminating(Cancel As Boolean, UserRequested As Boolean)
occures when game is about to terminatingEnd Sub
Private Sub IGame_Terminated(ErrorsLogPath As String)
calls on game finish terminatingEnd Sub
Private Sub IGame_Debugger(Name As String, Description As String)
used for debug puposes ,application debug messages comes here to process.End Sub
Sub Main() Dim g As New mygame g.Run End End Sub
Implements yLib.IGame Dim ge As yLib.GameEngine Dim g As yLib.VideoDevice Dim a As yLib.AudioDevice Dim d As yLib.y3DGenerator Dim win As yLib.GameWindow Dim ks As yLib.KeyboardState provides information about keyboard and its keys. Dim lks As yLib.KeyboardState Public Sub Run() this method must call in sub Main() Set ge = GameEngine(Me, "Game_Name", "800x600", False) Call ge.Run() it freeze application till terminates Set ge = Nothing End Sub Private Sub IGame_Initialize(ByVal e As yLib.GameEngineInitializationEventArgs) calls when GameEngine method calling Set ge = e.GameEngine it requires because ge is not evaluated yet till end of execution of this method Set g = e.GraphicDevice Set a = e.AudioDevice Set win = e.GameWindow Set d = e.y3D End Sub Private Sub IGame_Load(ByVal e As yLib.GameEngineTimingEventArgs) calls when GameEngine execution ends win.Text = "Game Window Title" Set ks = ge.getKeyboardState Set lks = ks Call Randomize End Sub Private Sub IGame_Update(ByVal e As yLib.GameEngineTimingEventArgs) occures on each frame update If (ks.DownKeys.isExist(Key) And (Not lks.DownKeys.isExist(Key))) Then ge.Terminate this can cancel,but Exterminate cant. End If End Sub Private Sub IGame_Draw(ByVal e As yLib.GameEngineTimingEventArgs) occures on each frame after Update event Call ge.SuspendDrawings suspend drawings during updating data Call g.Clear(QBColor(Rnd * 15)) clear the screen with random colors 30 times per second you can specify the fps but default fps is 30 Call ge.ResumeDrawings deactive SuspendDrawings method actions End Sub Private Sub IGame_TimerTick(ByVal timer As yLib.GameTimer) occures on each timer tick event do nothing End Sub Private Sub IGame_Terminating(Cancel As Boolean, UserRequested As Boolean) occures when game is about to terminating you can cancel terminate state by set Cancel = True but it prevent termination of the application and may cause in non closing game form! End Sub Private Sub IGame_Terminated(ErrorsLogPath As String) calls on game finish terminating ErrorsLogPath = app.Path & "/log.txt" End Sub Private Sub IGame_Debugger(Name As String, Description As String) used for debug puposes ,application debug messages comes here to process. Debug.Print Name & ": " & Description End Sub
by Ali Mousavi Kherad