Création de jeux avec Game Maker
Les Instances
Dans un jeu, les unités de base sont les instances des différents objets. Pendant le jeu, il vous est possible de modifier certains aspects de ces instances. Ainsi, vous pouvez créer de nouvelles instances ou en détruire d'autres. En plus des variables propres aux mouvements, abordées plus en avant et de celles relatives à l'affichage décrites plus loin, chaque instance posséde les variables suivantes :
object_index* L'index de l'objet d'une instance. Cette variable ne peut être modifiée.
id* L'unique identificateur de l'instance (>= 100 000) (veuillez noter que lors de la définition de rooms, l'ID de l'instance est toujours signalé en plaçant la souris au dessus de cette instance.)
mask_index L'index du sprite utilisé comme masque de collisions. Donnez à cet index la valeur -1 pour lui affecter la même valeur que sprite_index.
solid Indique si l'instance est de type solide. Ceci peut être modifié durant le jeu.
persistent Indique si l'instance est persistante et doit réapparaître lorsque vous changez de room. Vous souhaiterez souvent mettre la persistence à off à certains moments (par exemple si vous retournez à la première room.)
Il subsiste un problème avec les instances. Il n'est pas très facile d'identifier les instances de manière individuelle. Elles ne possédent pas de nom. En présence d'une unique instance d'un objet particulier, il vous est possible d'utiliser le nom de l'objet mais dans les autres cas, il est nécessaire d'employer l'ID de l'instance. C'est l'unique identifiant de l'instance. Vous pouvez l'utiliser dans les instructions with en tant qu'identificateur d'objet. Heureusement, il existe un certain nombre de variables et de routines qui vous aideront à localiser les ID des instances.
instance_count* Nombre d'instances qui existent actuellement dans la room.
instance_id[0..n-1]* L'ID d'une instance particulière. n représente ici le numéro de l'instance.
Veuillez prendre note que l'affectation des ID aux instances varie à chaque step. Aussi, vous ne pouvez pas utiliser les valeurs issues des steps précédents. Voici un exemple afin de mieux comprendre. Supposons que chaque unité de votre jeu posséde une puissance particulière et que vous souhaitiez localiser la plus résistante, vous pourriez écrire alors le code suivant :
{ maxid = -1; maxpower = 0; for (i=0; i<instance_count; i+=1) { iii = instance_id[i]; if (iii.object_index == unit) { if (iii.power > maxpower) {maxid = iii; maxpower = iii.power;} } } }
Après exécution de la boucle, la variable maxid contiendra l'ID de l'unité la plus puissante (ne supprimez jamais les instances lors de l'exécution de boucles car elles seraient automatiquement supprimées du tableau et vous obtiendriez comme résultat des instances manquantes).
instance_find(obj, n) Retourne l'ID de l'instance (n+1) de type obj. obj peut être un objet ou le mot-clé all. S'il n'existe pas, l'objet spécial noone sera retourné. Notez que l'affectation des ID aux instances varie à chaque step. Aussi, vous ne pouvez pas utiliser les valeurs issues des steps précédents.
instance_exists(obj) Retourne s'il existe une instance de type obj. obj peut être un objet, un ID d'instance ou le mot-clé all.
instance_number(obj) Retourne le nombre d'instances de type obj. obj peut être un objet ou le mot-clé all.
instance_position(x, y, obj) Retourne l'ID de l'instance de type obj à la position (x,y). Lorsque plusieurs instances sont à la même position, seule la première est retournée. obj peut être un objet ou le mot-clé all. Si celui n'existe pas, l'objet spécial noone sera retourné.
instance_nearest(x, y, obj) Retourne l'ID de l'instance de type obj la plus proche de (x,y). obj peut être un objet ou le mot-clé all.
instance_furthest(x, y, obj) Retourne l'ID de l'instance de type obj la plus éloignée de (x,y). obj peut être un objet ou le mot-clé all.
instance_place(x, y, obj) Retourne l'ID de l'instance de type obj rencontré quand l'instance courante est placée à la position (x,y). obj peut être un objet ou le mot-clé all. S'il n'existe pas, l'objet spécial noone sera retourné.
Les fonctions suivantes peut être utilisées pour la création et la destruction d'instances.
instance_create(x, y, obj) Crée une instance de obj à la position (x,y). La fonction retourne l'ID de la nouvelle instance.
instance_copy(performevent) Crée une copie de l'instance courante. L'argument indique si l'événement de création doit être exécuté pour la copie. La fonction retourne l'ID de la nouvelle copie.
instance_destroy() Détruie l'instance courante.
instance_change(obj, perf) Change l'instance en obj. perf indique si l'on doit effectuer les événements de destruction et de création.
position_destroy(x, y) Détruie toutes les instances pour lesquelles le sprite se situe à la position (x,y).
position_change(x, y, obj, perf) Change toutes les instances à la position (x,y) en obj. perf signifie que l'on doit effectuer les événements de destruction et de création.
<< Traduction française par Philippe Ragni - (2005) >>
Alternative versions
Also available in:
Download helpfile