Collection d'objets personnalisée

Leçons de programmation Visual Basic

Lors de la programmation d'un jeu par exemple, on désire créer des personnages (comme Espion, cf ici) et stocker leurs caractéristiques en mémoire. Cependant, Espion n'utilise pas les collections d'objets personnalisés pour la simple et bonne raison que je ne connaissais pas ce procédé lorsque j'ai programmé ce jeu.

L'utilisation d'une collection d'objets personnalisée simplifie grandement la compréhension du code et la rapidité en mémoire. Je vais illustrer ce procédé par la programmation d'un jeu type Espion (mais un peu différent...).

On désire créer les personnages : le héros et les ennemis ainsi :

Héros Ennemi
Points de vie Points de vie
Position dans le tableau de jeu  Position dans le tableau de jeu  
Possède une arme ? Vitesse de déplacement
Quantité de munitions  
Points accumulés Direction du déplacement

On peut stocker dans des variables publiques toutes ces propriétés ainsi : une variable pour chaque propriété du héros, une variable tableau dynamique pour chaque propriétés des ennemis. Cependant, ceci devient très compliqué et une autre méthode s'impose :

• On aura besoin de définir un nouveau type de variable pour la direction du héros (haut, bas, gauche ou droite), pour l'arme possédée (aucune, ak47, kalachnikov, deserteagle50, sniper).

Pour cela, on utilise la commande Enum comme suit :

Enum Direct
Haut
Bas
Gauche
Droite
End Enum
Enum Arme
Aucune
Couteau
DesertEagle
AK47
M51
Mauser
Rocket
Grenade
End Enum

Dès lors, quand on définit une variable comme étant de type Arme, on a :

L'intérêt de cette définition de variable n'est alors plus à démontrer ! De plus, si besoin, on peut attribuer une valeur numérique à chaque possibilité dans l'énumération :

Enum Direct
Haut = 0
Bas = 1
Gauche = 2
Droite = 3
End Enum
Enum Arme
Aucune = 0
Couteau = 1
DesertEagle = 2
AK47 = 3
M51 = 4
Mauser = 5
Rocket = 6
Grenade
= 7
End Enum

On va ensuite définir une collection d'objet personnalisée :

Héros Type var Ennemi
Points de vie Entier Points de vie
Position dans le tableau de jeu   Entier Position dans le tableau de jeu  
Possède une arme ? Entier (Arme) Vitesse de déplacement
Quantité de munitions Entier  
Points accumulés Entier (Direct)   Direction du déplacement

Pour cela, on définit comme objets personnalisés Ennemi et Héro comme suit :

Type Hero
PointsDeVie As Integer
Position As Integer
Vitesse As Integer
Direction As Direct
Arme As Arme
End Type
Type Ennemi
PointsDeVie As Integer
Position As Integer
Vitesse As Integer
Direction As Direct
End Type

On peut alors créer autant de héros ou d'ennemis que l'on veut à l'aide de Dim Espion As Hero. On accède ensuite très facilement à ses propriétés ainsi :