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 :
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.
'***************************************************************************************
'* OBJET JEU
'***************************************************************************************
Option
Explicit
'***************************************************************************************
'* OBJET POUR DONNEES PARTAGEES ENTRE LES ECRANS
'***************************************************************************************
Option
Explicit
'***************************************************************************************
'* OBJET D'INTERFACE POUR ECRAN
'***************************************************************************************
Option
Explicit
'***************************************************************************************
'* OBJET ECRAN DE JEU
'***************************************************************************************
Option
Explicit
'***************************************************************************************
'* OBJET ECRAN DE MENU
'***************************************************************************************
Option
Explicit
'***************************************************************************************
'* OBJET ECRAN DE JEU PERDU
'***************************************************************************************
Option
Explicit
'***************************************************************************************
'* OBJET ECRAN DE JEU GAGNE
'***************************************************************************************
Option
Explicit
'***************************************************************************************
'* OBJET ECRAN D'OPTIONS
'***************************************************************************************
Option
Explicit
'***************************************************************************************
'* OBJET ECRAN DES CREDITS
'***************************************************************************************
Option
Explicit
'***************************************************************************************
'* OBJET ECRAN DES SCORES
'***************************************************************************************
Option
Explicit