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


Comment ça marche?

Acsiosa
Par ThrillerProd

Aëdemphia
Par Sylvanor

Chemin de Croix
Par Mr Bambou

Darkange
Par Scythe Darklight

Evil Myst
Par oxion_garden

Geex Maker
Par roys

La Légende d'Ibabou
Par Zaitan

Les Ombres d'Ymirs
Par Lakitorai

Lije
Par Gaetz

Omega Cerberus
Par Sill Valt

Oyönna
Par Tata Monos

Sarcia
Par Kaëlar

News: OFF chez Indiegames.com / Scripts: Niveau pour équiper une arme / Scripts: Anti-"No such file" [VX Ace] / Scripts: Scroll Pictures / News: Legalize our games ! /

Chat ( connectés)

Bienvenue
visiteur !





publicité RPG Maker!

Statistiques

Liste des
membres


Contact

44 connectés actuellement

4596883 visiteurs
depuis l'ouverture

10 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires




TOP GAMEMAKING


Les 5 plus
visités

Guelnika - E Magination

ImagieNation

Level Up!

Alex d'Or

RPG Maker Powa

Au hasard

RPG Maker Land

Level Up!

Co-RPG

Les deux derniers

FreankExpo

Le Palais du Making

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. (2012 messages postés)

makeur escargot critiqueur hyperspacial

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

Livres à lire : Making of Prince Of Persia, La saga des Jeux Video, Theory for Fun, l'Art du Game Design 100 objectifs, les Chroniques de Player One, les Grands Noms du Jeu Video


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

Lalala...

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. (4363 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. (728 messages postés)

Lalala...

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. (4363 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 | Autres | Jeux complets | Proposer
Rubriques: Le Wiki | Collection Oniro | Tutoriaux | Scripts | Guides | Gaming-Live | Tests | Previews | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers | Palmarès
Hébergés: Acsiosa | Aëdemphia | Chemin de Croix | Darkange | Evil Myst | Geex Maker | La Légende d'Ibabou | Les Ombres d'Ymirs | Lije | Omega Cerberus | Oyönna | Sarcia
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