Création de jeux avec Game Maker
Constructeur With
Comme indiqué précédemment, il est possible de lire et de changer la valeur des variables appartenant à d'autres instances. Mais dans de nombreux cas, vous souhaiterez également effectuer davantage de choses avec ces instances. Par exemple, imaginez que vous vouliez déplacer toutes les balles de 8 pixels vers le bas. Vous pourriez penser que ceci peut simplement être réalisé avec le programme suivant
ball.y = ball.y + 8;
Mais ceci n'est pas correct. La partie droite de l'affectation reçoit la valeur d'ordonnée y de la première balle puis y ajoute 8. Ensuite, cette nouvelle valeur est assignée à l'ordonnée y de toutes les balles. Ce qui entraîne que toutes les balles possédent désormais la même ordonnée y. L'instruction
ball.y += 8;
produira exactement le même résultat car elle ne constitue simplement qu'une abréviation de la première instruction. Comment donc résoudre ce problème ? En utilisant l'instruction with spécialement conçue pour cela. La forme globale de l'instruction est la suivante :
with (<expression>) <instruction>
<expression> indique une ou plusieurs instances. Vous pouvez utiliser l'ID d'une instance, le nom d'un objet (pour mentionner toutes les instances de cet objet) ou l'un des objets spéciaux (all, self, other, noone). <instruction> sera maintenant exécutée pour chacune des instances indiquées comme si cette instance était l'instance courante (self). Ainsi, pour déplacer toutes les balles de 8 pixels vers le bas, vous devrez par exemple taper ceci :
with (ball) y += 8;
Si vous voulez exécuter plusieurs instructions, entourez-les avec des accolades. Par exemple, pour déplacer toutes les balles vers une position aléatoire, vous pouvez écrire :
with (ball) { x = random(room_width); y = random(room_height); }
Veuillez noter que, pendant ces instructions, l'instance mentionnée devient l'instance self. De la même manière, l'instance originale self devient l'instance other (l'autre instance). Par exemple, pour déplacer toutes les balles vers une position de l'instance courante, tapez ceci :
with (ball) { x = other.x; y = other.y; }
L'utilisation de l'instruction With est extrémement puissante. Vous trouverez ci-dessous quelques exemples. Pour détruire toutes les balles, vous taperez :
with (ball) instance_destroy();
Si une bombe explose et que vous souhaitez détruire toutes les instances touchées, vous pourrez utiliser :
with (all) { if (distance_to_object(other) < 50) instance_destroy(); }
<< Traduction française par Philippe Ragni - (2005) >>
Alternative versions
Also available in:
Download helpfile