IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Tutoriel Gdi+ : programmez un jeu de Pacman complet en VBA

Image non disponible


précédentsommairesuivant

VIII. Préparation des modules objets

Nous allons essayer d'utiliser au mieux les possibilités de VBA en matière de programmation orientée objet.
VBA est assez limité comparé à d'autres langages mais permet tout de même de créer des modules de classe et d'utiliser des interfaces grâce à l'instruction Implements.

Un maximum de code sera donc intégré à des modules de classe de manière à ne pas surcharger le code du formulaire principal.
Le code sera alors plus lisible et plus facile à modifier.

On bénéficie également dans les modules de classe VBA de deux événements : Initialize et Terminate que nous pouvons utiliser pour exécuter des actions à la création et à la destruction d'un objet.

VIII-A. Schemas des modules objets

Voici comment nos objets vont s'imbriquer :

  • FormGame est le formulaire principal.

    Il héberge le jeu (notons qu'un formulaire est un objet).
    Il contient un objet de type clGame.

  • clGame est la classe pour l'objet jeu.

    Cet objet est contenu dans le formulaire et contient :

    • Un objet de type clCommand pour gérer les commandes.

      Cet objet sera transmis entre les écrans afin de n'avoir qu'une seule instance de cet objet pour tout le jeu.
      Cela nous permet de conserver dans cet objet l'heure de dernier appui de touche détecté (utilisation du paramètre pTime que nous verrons plus loin).

    • un objet de type clSharedData pour y stocker les données communes à tous les écrans.

      Cela nous permet de partager par exemple le score entre l'écran de jeu et les écrans de fin de jeu.

  • un objet de type clScreen qui est l'écran en cours d'affichage.

    Chaque écran sera géré dans un module de classe qui hérite de l'interface de ce module clScreen.

    On aura ainsi dans l'objet jeu un seul objet de type clScreen.

    Chaque écran peut contenir :

    • un objet de type clGdiplus pour gérer le graphisme.
    • un objet de type clSound pour gérer le son.
    • un objet de type clCommand transmis par l'objet jeu.
    • un objet de type clSharedData transmis par l'objet jeu.

Ci-dessous le schéma qui résume tout ceci :

Image non disponible

Les différents écrans n'apparaissent pas sur ce schéma.
Chaque écran est indépendant et vient prendre la place de clScreen dans le schéma au fur et à mesure que l'on change d'écran.

VIII-B. Création des modules objets

Commençons par créer des nouveaux modules de classe vierges pour chacun des objets dont nous avons besoin.
En en-tête de chaque module on ajoute un commentaire d'information et, si nécessaire, l'instruction Option Explicit pour forcerla déclaration des variables.

module de jeu clGame
Sélectionnez
'***************************************************************************************
'*                                  OBJET JEU
'***************************************************************************************
Option Explicit
module pour données partagées clSharedData
Sélectionnez
'***************************************************************************************
'*                 OBJET POUR DONNEES PARTAGEES ENTRE LES ECRANS
'***************************************************************************************
Option Explicit
module pour interface d'écran clScreen
Sélectionnez
'***************************************************************************************
'*                             OBJET D'INTERFACE POUR ECRAN
'***************************************************************************************
Option Explicit
module pour écran de jeu clScreenGame
Sélectionnez
'***************************************************************************************
'*                             OBJET ECRAN DE JEU
'***************************************************************************************
Option Explicit
module pour écran de menu clScreenMenu
Sélectionnez
'***************************************************************************************
'*                             OBJET ECRAN DE MENU
'***************************************************************************************
Option Explicit
module pour écran de jeu perdu clScreenGameOver
Sélectionnez
'***************************************************************************************
'*                             OBJET ECRAN DE JEU PERDU
'***************************************************************************************
Option Explicit
module pour écran de jeu gagné clScreenGameEnd
Sélectionnez
'***************************************************************************************
'*                             OBJET ECRAN DE JEU GAGNE
'***************************************************************************************
Option Explicit
module pour écran des options clScreenOptions
Sélectionnez
'***************************************************************************************
'*                             OBJET ECRAN D'OPTIONS
'***************************************************************************************
Option Explicit
module pour écran des crédits clScreenCredits
Sélectionnez
'***************************************************************************************
'*                             OBJET ECRAN DES CREDITS
'***************************************************************************************
Option Explicit
module pour écran des scores clScreenScores
Sélectionnez
'***************************************************************************************
'*                             OBJET ECRAN DES SCORES
'***************************************************************************************
Option Explicit

précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.