Night.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker


Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Jeux: puie z / Jeux: Citymaime - Chapitre 1 / Jeux: Mer, îles et fous / News: Du neuf dans le making / News: Muma|Rope est disponible en (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

348 connectés actuellement

30734308 visiteurs
depuis l'ouverture

1273 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Lumen

Level Up!

Guelnika & E-magination

Zarok

Tous nos partenaires

Devenir
partenaire



Boucles, étiquette et pointeurs : conseils d'utilisation

Comment utiliser la programmation évenementielle de Rpg Maker le plus efficacement possible, par l'utilisation de pointeurs et de boucles

Ecrit par Masthiks le 04/03/2007


❤ 0

Il existe plusieurs manières de programmer sous Rpg Maker. Cependant, il existe des méthodes plus ou moins compliquées qui permettent d'alléger facilement le code. Ces méthodes sont rarement utilisées, pour une utilisation plus rudimentaire des evenements.

Pointeurs de variable

J'appelle cette fonction de cette manière car elle s'apparente aux pointeurs en c++.
Mais c'est quoi un pointeur, alors?
C'est une variable toute simple dont le contenu représente une autre variable.
Par exemple, si A vaut 10, alors le fait de l'utiliser comme un pointeur de variable va appeler la variable à la position 10, comme le montre ce shéma:

image

Il ne reste plus qu'à utiliser ces variables, par le menu "Modifier variable(s)" du menu des commandes d'évènements.

image

Il y a deux champs où nous pouvons les utiliser.

1 - Ici, c'est le champ pour l'affectation.
Par exemple, si la variable entrée vaut 1, c'est la variable à la position 1 qui sera modifiée, et non pas la variable entrée.

2 - Ici le champ permettant de modifier la valeur affectée.
Par exemple si la variable entrée vaut 1, a sera la variable à la position 1 qui sera affectée, et pas celle entrée.

L'intérêt des pointeurs peut sembler superficiel. Cependant, il permet grandement de simplifier les algorithmes.
On peut imaginer un script de a-rpg, qui gère 4 ennemis, qui possèdent chacun des statistiques différentes. Pour traiter le fonctionnement des ennemis (leur déplacement, enlever des hps...), on pourrait faire 4 scripts différents, qui gèrent chacun un monstre. Cependant la solution est très lourde, et la reutisabilité du ode en est amoindrie, si on veut ajouter un 5eme monstre par exemple.
Le problème est facile a régler avec l'utilisation des pointeurs. Il suffit de créer plusieurs variables génériques, qui vont pointer tour a tour vers les statistiques des monstres. Ces valeurs seront directement modifiées par l'appel des pointeurs. un seul script suffira (il faut juste modifier la valeur des pointeurs pour qu'ils pointent vers les bonnes valeurs), et la reutisabilité est bien meilleure.

Boucles et étiquettes

il est important de faire la distinction entre ces 2 notions, car les étiquettes sont utilisées bien trop souvent lorsque des boucles seraient nettement plus efficaces.
Les boucles trouvent leur véritable utilité avec l'utilisation des pointeurs.
Comment?
Une variable quelconque doit servir d'indice, qui sera incrémentée (sa valeur augmente de 1) a chaque tour de boucle.
Ainsi, la pointeur (l'indice) pointera sur une variable différente a chaque tour de boucle.

Pour revenir a l'exmple sur les 4 monstres, on peut imaginer que les HP du monstre 1 soient à la position 1, ceux du monstre 2 a la position 2, ceux du monstre 3 à la position 3, et ceux du monstre 4 à la position 4.
On veut faire un script qui va ajouter vérifier l'état de chacun d'eux, pour les retirer de la carte si leurs HP sont en dessous de 0, par exemple.
Plutot que de traiter les 4 monstre à la suite (traiter le monstre 1, traiter le monstre 2, etc.), on va créer une boucle et un indice. L'indice va pointer sur la position 1 (il contient donc 1), et sera incrémenté tous les tours de boucles. Quand il vaut 5, on sort de la boucle.
L'indice va donc pointer en premier sur 1, et va traiter les Hps du monstre 1, puis enuite sur 2, et va traiter les infos du monstres, etc.
Si on veut ajouter un monstre il suffit de modifier la condition de sortie de la boucle.
Voici le code pour cet exemple:

image

Difficulté d'utilisation des boucles

On ne peut pas toujours utiliser les boucles, car elles provoquent parfois un effet de lag: elles sont mal optimisées pour Rpg Maker.
Ainsi, il vaut mieux les utiliser en processus parallèle, ou en appel, car elles sont plus adaptées dans ces cas là, et pas pour l'automatique.

Différences avec les étiquettes

N'utilisez pas d'étiquettes quand une boucle peut être utilisée. L'étiquette (le goto) est une opération réputée pour être très lourde a gérer (horrible et monstrueuse selon mon prof d'algorithmique) pour le processeur. Cet effet est moindre sous rpg maker qu'avec un vrai langage, mais est tout de même présent.

Combinaison des boucles et pointeurs

Nous avons vu plus haut que les pointeurs sont à utiliser conjointement avec les boucles. Voici un exemple concret les combinant:

image

Ici, les variables 1 à 10 sont initialisées à 10 positions selon l'axe X. Le script permet de récupérer un pointeur qui pointe vers la position maximale, entre ces 10 positions.
Pour cela, on initialise 2 variables à 1. "Indice", qui représente la position dans la boucle, et "Indice Max", qui est le pointeur qui pointe vers la valeur maximale. On le fait pointer vers 1 pour ne provoquer de bugs.
A chaque tour de boucle, on vérifie si la valeur pointer par "Indice" est supérieure à celle pointée par "Indice Max".
Si c'est le cas, on modifie "Indice Max" pour qu'il pointe vers cette nouvelle valeur.
Quand le traitement est fini, on sort de la boucle.


Aucun commentaire n'a été posté pour le moment.

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers