Oniromancie: Tutoriels - Simplification I : Vérifier des variables avec un interrupteur


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Forstale
Par Ødd Clock

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Lije
Par Gaetz

LoveMaster
Par Cuddlefox

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

News: Concours des Alex d'Or 2017-18: (...) / News: MegaMaker : créez votre propre (...) / News: Test de Tinker Quarry / Sorties: Leave the Room / Jeux: Leave the Room /

Chat  (52 connectés)

Bienvenue
visiteur !






publicité RPG Maker!

Statistiques

Liste des
membres


Contact

71 connectés actuellement

9180189 visiteurs
depuis l'ouverture

1260 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires




TOP
GAMEMAKING


Les 5 plus
visités

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Pixelandgame

Tashiroworld

HeyMakeGames

Au hasard

Le Comptoir du Clikeur

Magic-mangas

RPG Maker VX Communauté

Les deux derniers

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs





Simplification I : Vérifier des variables avec un interrupteur
Ecrit par hellper

Note : Ce tutoriel fonctionne à la fois avec 2k, 2K3, XP et VX. Mais il vous sera surement plus utile avec 2K et 2k3 qui utilisent plus de programmation évènementielle.
Notebis : Ce tutoriel nécessite un minimum de connaissance en programmation évènementielle ou vous risquez de ne pas le comprendre.

Imaginons que vous fassiez un rpg pouvant accepter jusqu'à six héros dans l'équipe. Pour cela, vous êtes obligé de passer outre le système d'équipe de base puisque limité à 4 héros. Vous décidez alors d'utiliser un système de variable utilisant l'identifiant du héros de cette manière :







Portion de code : Tout sélectionner





1
2
3
4
5
6
Vhéros1 = Idhéros
Vhéros2 = Idhéros
Vhéros3 = Idhéros
Vhéros4 = Idhéros
Vhéros5 = Idhéros
Vhéros6 = Idhéros


Note : Idhéros correspond à chaque fois à l'identifiant d'un héros différent.Maintenant, si vous voulez vérifier la présence d'un héros, vous devrez faire un code ressemblant à peu près à ceci :







Portion de code : Tout sélectionner





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Si Vhéros1 = IdX (pour un Id donné)
  Faire action1 (ce que vous faîtes s'il est là)
Sinon
 Si Vhéros2 = IdX
   Faire action1
 Sinon
   Si Vhéros3 = IdX
     Faire action1
   Sinon
     Si Vhéros4 = IdX
       Faire action1
     Sinon
         Si Vhéros5 = IdX
       Faire action1
       Sinon
           Si Vhéros6 = IdX
         Faire action1
         Sinon
           Faire action2 (ce que vous faîtes s'il n'est pas là)



Vous avez là un code de 19 lignes. Si vous le faîtes pour 3 héros et en admettant que le code Faire action1 et faire action2 prenne 5 ligne, ce qui est peu, ce la vous fait donc un total de 153 lignes. Et si dans Faire action1, vous vérifiez la présence d'un autre héros, c'est de l'ordre de900 à 1000 lignes, voire plus.

Le problème de ce code de vérification est qu'il n'est pas universel et doit être géré au cas par cas. Maintenant, je vais vous montrer comment simplifier efficacement ce code en utilisant le vérification par interrupteur. Je m'explique. Dans ce cas là, nous devons vérifier si un héros est dans une situation parmi les deux possible, c'est-à-dire :
- Soit il est présent.
- Soit il est absent.
Il est donc intéressant d'utiliser un interrupteur en faisant l'association désactivé/absent et activé/présent.

Maintenant, passons au code :
Tout d'abord, "créez" une variable, un interrupteur et un event commun activé par appel que vous nommez comme vous voulez. Ici, je les nommerai Vid, Intverif et Eventcom. L'event commun contiendra la partie principale du code. Mais avant, voici le code à placer pour vérifier :







Portion de code : Tout sélectionner





1
2
3
4
5
6
Vid =IdX (toujours pour un Id donné.)
Appeller un event commun : Eventcom
Si Intverif est activé
  Faire action1
Sinon
  Faire action2


Vous noterez que l'utilisation de la variable pour l'Id sert à la fois à garder la donnée pour Eventcom mais aussi à le rendre plus souple.

Voici ensuite le code à mettre dans Eventcom :







Portion de code : Tout sélectionner





1
2
3
4
5
6
7
8
9
10
11
12
13
Désactiver Intverif 
Si Vhéros1 = Vid
Activer Intverif
Si Vhéros2 = Vid
Activer Intverif
Si Vhéros3 = Vid
Activer Intverif
Si Vhéros4 = Vid
Activer Intverif
Si Vhéros5 = Vid
Activer Intverif
Si Vhéros6 = Vid
Activer Intverif


Vous noterez que l'interrupteur doit être désactivé pour mettre le cas absent par défaut, c'est-à-dire qu'il est absent si aucune des condition qui suit ne marche c'est-à-dire s'il n'est pas présent.
Ce qui nous fait donc un total de 6 lignes de base, soit en reprenant les 3 vérifications et les 5 lignes pour Faire action1 et Faire action2 un total de 42 lignes, soit un 111 lignes économisées.

Et vous pouvez enregistrer le position du héros dans un variable Vplace en rajoutant 6 lignes de code pour obtenir :







Portion de code : Tout sélectionner





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Désactiver Intverif 
Si Vhéros1 = Vid
Activer Intverif
Vplace=1
Si Vhéros2 = Vid
Activer Intverif
Vplace=2
Si Vhéros3 = Vid
Activer Intverif
Vplace=3
Si Vhéros4 = Vid
Activer Intverif
Vplace=4
Si Vhéros5 = Vid
Activer Intverif
Vplace=5
Si Vhéros6 = Vid
Activer Intverif
Vplace=6



Et voilà, c'est fini. N'hésitez pas à poser des question.


mtarzaim - posté le 08/01/2011 à 12:18:28. (2926 messages postés)

Anaxagoras -500 BC

C'est quoi la valeur de IdX exactement ?

Parce que, si c'est un nombre de 1 à 6, il suffit de faire dans EventCom

Desactiver intverif
Si Vid != 0
Activer intverif
Vplace = Vid
fin si

Il me semble aussi que ce serait plus simple de gérer tout ça à travers un tableau.
Ca permettrait de faire des traitements incrémentifs de quelques lignes.

ex :
Pour i de 0 à 5
faire TableauHeros(i).action1
Fin pour

Projets terminés : DIX Life Precious - TheFrogStudio.Net


hellper - posté le 08/01/2011 à 17:43:16. (4531 messages postés)

Tonton Hellper

mtarzaim a dit:


C'est quoi la valeur de IdX exactement ?


C'est l'ID du héros concerné par la vérification. Ça peut être n'importe quelle valeur.

Parce que, si c'est un nombre de 1 à 6, il suffit de faire dans EventCom

mtarzaim a dit:


Desactiver intverif
Si Vid != 0
Activer intverif
Vplace = Vid
fin si


Ce code ne signifie rien, puisque Vid ne sert qu'a enregistrer l'id du héros. Donc dès que tu chage sa valeur, puisqu'elle n'est pas remise a 0, la condition n'a plus d'intérêt.

mtarzaim a dit:


Il me semble aussi que ce serait plus simple de gérer tout ça à travers un tableau.
Ca permettrait de faire des traitements incrémentifs de quelques lignes.


Sauf qu'on ne peux pas faire de tableau en programmation évènementielle. Mais en désignant les variables Vhéros, on devrait pouvoir raccourcir encore un peu l'évènement commun.


AristA - posté le 11/01/2011 à 17:07:27. (4362 messages postés)

CACA dans les RAVIOLIS.

Pour ce genre d'opération, il est encore plus recommandé d'utiliser des pointeurs, débutant. Tu ne fais ici que découvrir les fonctions.

image


10 lignes qu'importe le nombre de variable à traiter, échec et mat et as de pique.

On peut encore plus simplifier ça en mettant ça dans un commom event, et rendre ça encore plus flexible pour vérifier d'après une variable quelle variable on vérifiera. Ensuite modification en plus d'une variable qui pointe une autre variable qui est celle qu'on cherche.
C'est très peu concret, n'est ce pas ?

Mob blog super, mes musiques, une carte ! | Tutos : Écran titre Custom, Anim de Marche fluide, Manuel du Power Mode 2003, Faire un bouton cliquable avec ce dernier, Éditer tout en jouant... Et d'autres trucs qui viendront.


hellper - posté le 16/01/2011 à 18:07:01. (4531 messages postés)

Tonton Hellper

Et si la valeur de la variable n'est nulle part, on se retrouve dans une boucle infinie.
Bel echec et mat...


AristA - posté le 24/01/2011 à 19:08:54. (4362 messages postés)

CACA dans les RAVIOLIS.

hellper a dit:


Et si la valeur de la variable n'est nulle part, on se retrouve dans une boucle infinie.
Bel echec et mat...


Et alors ?

Les boucles sont infinies.

Mob blog super, mes musiques, une carte ! | Tutos : Écran titre Custom, Anim de Marche fluide, Manuel du Power Mode 2003, Faire un bouton cliquable avec ce dernier, Éditer tout en jouant... Et d'autres trucs qui viendront.

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

Plan du site:

Activité: Accueil | News | Forum | Flash-news | Chat | Commentaires | Galerie | Screen de la semaine | Sorties | Articles perso | Livre d'or | Recherche
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Rubriques: Le Wiki | Collection Oniro | Tutoriaux | Scripts | Guides | Gaming-Live | Tests | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers | Palmarès
Hébergés: Aëdemphia | Fighting Robots Quest | Forstale | Geex | Inexistence | La Légende d'Ibabou | Lije | LoveMaster | Sarcia | Super Mario RPG - Lost Souls
Ressources: Jeux | Programmes | Packs de ressources | Midis | Eléments séparés | Sprites
RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis