Programmer en Visual Basic.Net avec MonoGame

Suite à mon précédent article sur l’utilisation de MonoGame avec C++/CLI je vous propose le même genre mais cette fois le langage Visual Basic.Net. Il faut savoir que ce langage a de l’histoire chez Microsoft et c’est pour ça qu’on le trouve toujours parmi les langages disponibles dans Visual Studio. Historiquement on notera 2 grandes versions de Visual Basic, la version classique jusqu’à la version 6 et la version .Net qui fonctionne sur machine virtuelle et qui permet de travailler avec les composants de cette dernière. Pourquoi utiliser Visual Basic ? Et bien il y a des gens qui aiment encore ce langage et puis il y a les nostalgiques comme moi qui aiment bien programmer avec des « vieux » trucs remis au gout du jour, alors même si Locomotive Basic et Turbo Basic sont bien loin, aujourd’hui nous jouerons avec MonoGame en Visual Basic.Net.

Mise en place du projet

Contrairement à C++/CLI la mise en place du projet est relativement plus simple, vous devez dans un premier temps créer un projet Visual Basic vide et ajouter les bonnes références. Ici comme dans l’article précedent nous utiliserons MonoGame pour OpenGL qui sera dans un dossier ThirdParty dans le dossier du projet. Pour ajouter une référence il faut faire un clic droit sur le projet puis choisir ajouter une référence, de là on choisis dans parcourir les références à ajouter.

Le code

Oui nous y sommes déjà 🙂 Je vous propose de créer 2 fichiers, Program.vb contiendra le code de lancement avec la procédure main et un autre nommé très fièrement Game1.vb contiendra le code template que nous connaissons tous très bien désormais.

Program.vb

Module MyMonoGameInVBNet
    Sub Main(ByVal args() As String)
        Using game As Game1 = New Game1()
            game.Run()
        End Using
    End Sub
End Module

Game1.vb

Imports Microsoft.Xna.Framework
Imports Microsoft.Xna.Framework.Graphics
Imports Microsoft.Xna.Framework.Input

Public Class Game1
    Inherits Game

    Private graphics As GraphicsDeviceManager
    Private spriteBatch As SpriteBatch

    Public Sub New()
        graphics = New GraphicsDeviceManager(Me)
        graphics.PreferredBackBufferWidth = 800
        graphics.PreferredBackBufferHeight = 600
        Window.Title = "MonoGame with Visual Basic .Net"
        Content.RootDirectory = "Content"
    End Sub

    Protected Overrides Sub Initialize()
        MyBase.Initialize()
    End Sub

    Protected Overrides Sub LoadContent()
        MyBase.LoadContent()
    End Sub

    Protected Overrides Sub Update(gameTime As GameTime)
        MyBase.Update(gameTime)

        If Keyboard.GetState().IsKeyDown(Keys.Escape) Or GamePad.GetState(PlayerIndex.One).IsButtonDown(Buttons.Back) Then
            Me.Exit()
        End If
    End Sub

    Protected Overrides Sub Draw(gameTime As GameTime)
        GraphicsDevice.Clear(Color.CornflowerBlue)
        MyBase.Draw(gameTime)
    End Sub
End Class

Je n’irais pas jusqu’à dire « Que c’est beau » mais ça me rappel de très bons souvenirs. On notera quelques points particuliers du Visual Basic.Net à savoir que l’appel à une  méthode parente se fait avec l’objet MyBase.MethodeParent() et le mot clé this en C# est remplacé par Me, on ne peut pas non plus appeler une méthode Exit directement et c’est pour ça que dans la méthode Update j’ai ajouté un appel au pointeur de la classe pour référencer la méthode Exit de la classe Game de MonoGame. Désormais vous pouvez vous aussi vous lancer à l’aventure en créant vos jeux en Visual Basic.Net avec MonoGame ! Vous pouvez retrouver les sources dans un projet fonctionnel sur ma page github dédiée à ce blog.