Chapitre 4 - Les événements simples:
Bienvenue dans la partie plus technique de RMXP, les événements permettront de rendre votre jeu dynamique. Sans les événements, impossible de naviguer entre les cartes, de parler à des PNJ, de faire des quêtes ou même une histoire. Bref, ils constituent la colonne vertébrale de tout projet ! J'ai décidé de séparer la partie événement en deux : les événements simples et les événements indispensables (pour ne pas dire compliqués ). Commençons en douceur avec les événements simples !
Je ne peux pas faire de copier / coller avec les codes événements, je suis donc obligé de les recopier à la main. Je n'en mettrai donc pas souvent
Comment placer un événement ?
Pour utiliser les événements, il faut cliquer sur le bouton événement. Vous vous souvenez duquel il s'agit ? Non ? Ah ces jeunes ! Alors le voici :
. Lorsque que vous cliquez dessus un quadrillage apparaîtra sur votre carte, voici ce que cela donne sur la mienne :
Chaque carreau est une place pour un et un seul événement. Par défaut un seul événement est présent sur la première carte créée : l'événement S, c'est sur cet événement que votre équipe débutera le jeu (S comme start en anglais). Sachez que vous pouvez faire un glisser-déposer avec. Vous pouvez le supprimer avec la sacro-sainte touche Suppr, ou bien d'un clic droit, « Supprimer l'événement ». Pour le faire réapparaître, un clic droit et « Placer la position de départ de l'équipe ».
Veillez à ce que cet événement soit présent sur une de vos cartes, sinon l'exécution du jeu plantera lamentablement.
Bien, maintenant créons un événement ! Pour cela double-cliquez sur la case qui accueillera votre événement ; moi, je trouve qu'il fait froid, je vais donc cliquer sur les bûches pour y mettre un feu ; voici ce qui apparaît :
En commençant de haut en bas :
Nom : c'est le nom de l'événement. Le nom n'a pas d'importance, d'ailleurs je ne les nomme que très rarement, ils sont nommés automatiquement suivant cette logique : EV001, EV002.
Page : vous le verrez dans le chapitre suivant.
Conditions de déclenchement : elles seront vues dans le chapitre suivant.
Apparence : vous pouvez choisir l'apparence de l'événement (tu nous prends pour des demeurés ??. Non non, je pars simplement de zéro ). Vous pouvez faire revêtir moult apparences à votre événement : un homme, un monstre, un objet...
Mode de déplacement : cela vous permet de choisir si l'événement va vous suivre, suivre un trajet, rester sur place ou bien se déplacer de façon aléatoire. Pour que l'événement marche de façon « normale », mettez la vitesse en modérée ou normale, et la fréquence en la plus haute.
Options est assez explicite : si vous mettez animer à l'arrêt, l'événement s'animera même s'il ne bouge pas (pour un personnage, celui-ci marchera sur place, mais pour un objet comme une fontaine, celle-ci sera animée quand elle ne bouge pas ; en même temps, qui a vu une fontaine bouger ?), direction fixe fera en sorte que l'événement ne change pas de direction même s'il va à gauche, à droite, en haut ou en bas. Mode fantôme, anciennement appelé traversable (qui est plus explicite à mon goût), l'événement sera donc traversable. Au-dessus de tout est assez clair je pense.
Et le grand cadre à droite, c'est LÀ que vous mettrez le code de l'événement.
Nous allons maintenant afficher notre premier événement, il ne fera rien de particulier. Ce sera simplement une image de feu animé. Pour afficher mon feu, je vais prendre l'apparence feu (184-Light01) et choisir animer à l'arrêt ; voici ce que ça donne en vidéo (c'est beau, la technologie
) :
Afficher un message et proposer un choix
Préambule
Pour pouvoir mettre quelque chose, double-cliquez dans le cadre.
Un nouvelle fenêtre va s'afficher :
C'est là que vous pouvez choisir tous les événements à votre disposition (il y a trois onglets).
Étant donné que vous aurez sûrement la version anglaise, je vous donne un code pour que vous puissiez trouver facilement l'option :
[Numéro de l'onglet];{Numéro du « paragraphe » (du haut vers le bas, et la première colonne d'abord*)};(Numéro de la touche dans le « paragraphe »). Exemple :
Afficher un message [1];{1};(1)
Boucle : [1];{2};(2)
Modifier l'équipe : [1];{3};(9)
(Vérifiez ces exemples sur la capture d'écran.)
* Sur la capture d'écran.
1 3
2 4
Afficher un message
Après avoir mis un bon feu, attaquons-nous maintenant aux PNJ. Je vais pour cela placer un événement n'importe où (évitez l'eau quand même ). Je vais choisir comme personnage 012-Lancer04. Son mode de déplacement consistera en des mouvements aléatoires et sa fréquence sera la plus haute (pour les déplacements normaux). Laissez les autres options par défaut.
Double-cliquez maintenant dans le grand cadre à droite, une fenêtre devrait apparaître ; cliquez sur Afficher un message :
Citation : Numéro
Afficher un message :[1];{1};(1)
Voici ce qui devrait apparaître :
(La partie « floutée » sera vue plus tard.)
Si vous n'avez pas les commandes de messages qui s'affichent, ce n'est pas grave, elles seront tout de même utilisables.
Vous voyez une flèche noire au-dessus du cadre pour écrire votre texte. Elle ne devra pas être dépassée sous peine de voir son texte coupé (vous pouvez tout de même le faire dépasser de quelques caractères) :
On va faire en sorte que le personnage lui dise bonjour avec son nom, pour cela utilisez la commande \N[1] :
Bonjour \C[3]\N[1]\C[0], comment allez-vous ?
J'ai également choisi de colorer le nom du personnage en vert. Voici le résultat en vidéo :
Vidéo personnage animé
Proposer un choix
Maintenant que le PNJ dit bonjour, faisons en sorte qu'il pose une question à notre héros. Comme par exemple : Aimez-vous les pommes ? (C'est le premier exemple bidon qui m'est venu. ) Pour cela cliquez sur proposer un choix au lieu de afficher un message :
Citation : Numéro
Proposer un choix :[1];{1};(2)
Voici comment je nomme les différentes parties d'une proposition de choix :
Alors, si nous répondons oui, elle nous dira Moi aussi, c'est mon fruit préféré ! et si nous répondons non, C'est votre choix ! :
Citation : Code événement
<>Message : Aimez-vous les pommes ?
<>Proposer un choix : Oui, Non
: Si [Oui] faire :
<>Message : Moi aussi, c'est mon fruit préféré !
<>
: Si [Non] faire :
<>Message : C'est votre choix !
<>
: Fin
<>
Je vous ne remet pas de vidéo, je suppose que vous êtes assez grands. Mais comme je suis d'une grande bonté, je mets des images (
non, non, ne me remerciez pas, c'est tout naturel ) :
Comme vous pouvez le voir sur le schéma, en fonction de ce que l'utilisateur choisit le message sera différent.
Lors de la création de la proposition de choix vous pouviez choisir quel choix sera activé à l'annulation. Mais vous pouvez en créer un exprès pour cela :
Citation : Code événement
<>Message : Aimez-vous les pommes ?
<>Proposer un choix : Oui, Non
: Si [Oui] faire :
<>Message : Moi aussi, c'est mon fruit préféré !
<>
: Si [Non] faire :
<>Message : C'est votre choix !
<>
: Si Annulation faire :
<>Message : Vote blanc donc...
<>
: Fin
<>
Vous avez pu également remarquer que j'ai édité le message initial, il suffit pour cela de faire un clic droit sur un événement et de choisir : Éditer cette commande.
Sachez que les propositions de choix sont « imbricables » les unes dans les autres. Imaginons maintenant que quand notre héros répond « non » à la question, elle lui demande ensuite s'il aime les poires. Cela donnera (essayez de trouver par vous-mêmes ) :
J'ai coloré la seconde proposition de choix en bleu, car sur le SdZ les tabulations ne marchent pas dans les balises citations.
<>Message : Aimez-vous les pommes ?
<>Proposer un choix : Oui, Non
: Si [Oui] faire :
<>Message : Moi aussi, c'est mon fruit préféré !
<>
: Si [Non] faire :
<>Message : Aimez-vous les poires ?
<>Proposer un choix : Oui, Non
: Si [Oui] faire :
<>Message : Moi aussi, c'est mon deuxième fruit préféré !
<>
: Si [Non] faire :
<>Message : Même en tarte ?
<>
: Si Annulation faire :
<>Message : Vote blanc donc...
<>
: Fin
<>
: Si Annulation faire :
<>Message : Vote blanc donc...
<>
: Fin
<>
Voilà ce que ça donne en schéma :
- Spoiler:
Ce principe est utilisé pour les longues propositions de choix où l'on est obligé d'utiliser le dernier choix comme bouton Suivant :
Citation : Code événement
<>Message : que voulez-vous ?
<>Proposer un choix : Potion, Elixir, Antidote, suite
: Si [Potion] faire :
<>Objets : [Potion] + 1
<>
: Si [Elixir] faire :
<>Objets : [Elixir] + 1
<>
: Si [Antidote] faire :
<>Objets : [Antidote] + 1
<>Commentaire : vous voyez, la proposition de choix suivante est incluse dans le dernier choix
: : de la première proposition de choix.
<>
: Si [suite] faire :
<>Proposer un choix : Épée, bouclier, clef, feuille
: Si [Epée] faire :
<>
: Si [bouclier] faire :
<>
: Si [clef] faire :
<>
: Si [feuille] faire :
<>
: Si Annulation faire :
<>Commentaire : si vous n'avez aucune autre proposition de choix après annulation, vous
: : pouvez laisser le champ vide, sinon il sera question d'interrupteur,
: : et ça, je vous l'expliquerai plus tard.
: Fin
<>
: Si Annulation faire :
<>
: Fin
<>
Si vous ne faites pas ça, quand le joueur sélectionnera une option, il devra passer toutes les propositions de choix suivantes, même s'il ne veut pas les voir. Dans l'exemple des pommes, des poires et des scoubidoubidou AH la question aurait été posée même si le joueur avait répondu « oui » à la première question.
La téléportation
Maintenant que nous avons un PNJ qui pose des questions nous allons l'éliminer
nous pouvons nous occuper de la téléportation. Cette tente ne vous intrigue pas ? Essayez d'y rentrer, que se passe-t-il ? Rien, c'est normal ! La carte n'a pas été créée et aucun lien ne les lie. Commencez déjà par créer la tente. Pour cela ajoutez une nouvelle carte et suivez les conseils du chapitre précédent. Voici la mienne (comme il n'existe pas de chipset tente, j'ai pris ville INT) :
Elle est plutôt spacieuse
. Maintenant nous allons faire en sorte que l'on puisse naviguer entre ces deux cartes. Retournez sur la carte plaine, et placez un événement sur l'entrée de la tente. Mettez-le sans apparence (excepté si vous voulez mettre une porte - cf. plus bas), et choisissez la condition de déclenchement : Au contact du héros. Maintenant ajoutez du code en double cliquant et choisissez téléporter l'équipe :
Citation : Numéro
Téléportation :[2];{1};(1)
Ensuite, il faut choisir où vous voulez vous téléporter.
La solution la plus pratique, c'est sélectionner l'endroit. Pour cela, cliquez sur la petite flèche et suivez ces instructions :
N'oubliez pas de cliquer sur Ok. L'autre méthode, c'est avec des variables mais les variables, je vous en parlerai plus tard, et puis je n'ai encore jamais utilisé les variables pour la téléportation.
Donc, grâce à ça, vous pouvez faire un jeu de 132 ou même de 458 cartes ; maintenant, on peut naviguer entre elles, ce qui est indispensable pour un jeu, sauf si la carte est IMMENSE.
Un GROS conseil : n'oubliez SURTOUT pas de faire un point de téléportation dans l'autre sens (de la carte 1 vers la 2, ET de la carte 2 vers la 1) : ça serait quand même stupide de rester bloqué dans la tente.
La porte
Nous allons maintenant nous occuper de la porte de la chambre ! Nous allons faire en sorte que lorsque le héros sera devant et appuiera sur Entrée, celle-ci s'ouvre en s'animant. Créez un événement à la base de la porte et choisissez comme apparence une porte fermée (170-Door01 par exemple). Maintenant insérez la commande :
Citation : Numéro
Déplacer/Modifier l'événement : [2];{1};(9)
.
À présent, faites Modifier l'apparence (le 5e en partant de la fin) et prenez l'image de porte suivante ; ensuite, choisissez Attend (le dernier de la première colonne), répétez cette opération pour toutes les images de la porte. Une fois ceci fait, rajoutez à la fin un Modifier l'apparence et mettez-en aucune. Validez, ensuite ajoutez la commande :
Citation : Numéro
Effacer cet événement : [1];{2};(5)
.
Validez et c'est prêt !
Voici le code pour ceux qui n'auraient pas suivi (c'est une image, je suis pris d'une soudaine paresse ) :
Ajouter et retirer ; appeler un magasin
Maintenant que nous pouvons accéder à la tente, pourquoi ne serait-elle pas celle d'un marchand ambulant ? Un mage mystique vendeur de bibelots ! Commençons.
Ajouter et retirer
D'abord, la solution qui peut paraître simple au premier abord mais totalement inutile pour un magasin, c'est utiliser les Ajouter / Retirer.
Ils servent à quoi, alors ?
Ils permettent par exemple de faire en sorte que le héros reçoive un cadeau de sa grand-mère, qu'il trouve un trésor dans un coffre...
Il y a six « Ajouter / Retirer » :
Citation : Numéro
Monnaie : [1];{3};(5)
Objets : [1];{3};(6)
Armes : [1];{3};(7)
Armures : [1];{3};(
Points d'expérience : [1];{2};(5)
Compétence : [1];{2};(
Ajouter / retirer monnaie
Pour la monnaie, vous devez choisir si vous voulez en ajouter ou en retirer, et combien (c'est soit défini, soit contenu dans une variable).
Ajouter / retirer objets, armes, armures
Pour les trois, c'est le même principe : vous devez choisir entre ajouter et retirer et choisir quel objet, arme ou armure vous voulez ajouter ou retirer, ainsi que la quantité (elle est soit définie : 1, 2, 3... ou alors c'est en fonction d'une variable).
Ajouter / retirer points d'expérience
C'est le même principe que les autres, sauf que là, il faut choisir à qui vous voulez donner ces points d'expérience (à toute l'équipe ou à un personnage en particulier).
L'eXPérience, c'est comme l'XP (pour ceux qui connaissent les RPG ou MMORPG).
Ajouter / retirer compétence
Ici, il faut choisir à qui vous voulez ajouter ou retirer une compétence et laquelle.
Appeler un magasin
La commande
Citation : Numéro
Appeler un magasin :[3];{1};(2)
vous permet d'ouvrir un magasin : libre à vous de choisir les produits qui y seront vendus. C'est celle-ci que nous utiliserons pour notre marchand. Pour ajouter des produits, double-cliquez dans la zone vide sous le produit précédent. Le magasin peut également servir pour vendre ses objets.
Voici le code puis le résultat :
Mettre des étiquettes et des commentaires
Les commentaires
Comme dans tout langage (C, C++, etc.), il y a des commentaires. Ils servent à vous repérer dans votre « code ». Au début, vous n'en aurez pas besoin, mais une fois que vos événements seront plus grands qu'« Afficher un message » (exemple : changer la classe du héros en fonction de son niveau et de son ancienne classe, ou alors faire un sort de téléportation, etc.), vous aurez besoin de commentaires pour vous repérer dans votre code.
Les commentaires sont invisibles pour le joueur, vous seuls pouvez les voir en cliquant sur l'événement.
Pour insérer un commentaire, allez dans le premier onglet, et c'est la septième commande
Citation : Numéro
Commentaire : [1];{1};(7).
Citation : Code event
<>Message : Êtes-vous gentil ou méchant ?
<>Proposer un choix : Gentil !,Méchant !
: Si [Gentil!] faire :
<>Message : Ah, tenez, je vous offre une potion !
<>OBJETS : [Potion] + 1
<>Commentaire : donne une potion si le joueur est gentil.
<>
: Si [Méchant !] faire :
<>Message : Oh, au secours!!!!
<>
: Fin
<>
Les étiquettes
Les étiquettes, elles, servent à faire « précédent » quand vous faites plusieurs fois proposer un choix dans un même événement. Pour vous en servir, il faut placer une étiquette, utilisez pour ça la commande Mettre une étiquette* avant la première proposition de choix, et dans un choix d'une autre proposition de choix, utilisez la commande Sauter vers une étiquette**.
Citation : Numéro
*Mettre une étiquette[1];{2};(7).
Citation : Numéro
**Sauter vers une étiquette[1];{2};(
.
Citation : Code event
Message : que voulez-vous ?
<>Mettre une étiquette : Début
<>Proposer un choix : Potion, Elixir, Antidote, suite
: Si [Potion] faire :
<>Objets : [Potion] + 1
<>
: Si [Elixir] faire :
<>Objets : [Elixir] + 1
<>
: Si [Antidote] faire :
<>Objets : [Antidote] + 1
<>
: Si [suite] faire :
<>Proposer un choix : Epée, bouclier, clef, Précédent
: Si [Epée] faire :
<>
: Si [bouclier] faire :
<>
: Si [clef] faire :
<>
: Si [Précédent] faire :
<>Sauter vers l'étiquette : Début
<>
: Si Annulation faire :
: Fin
<>
: Si Annulation faire :
<>
: Fin
<>
Lorsque le joueur validera l'option précédent,
Citation : Code event
Proposer un choix : Potion, Elixir, Antidote, suite
<>Mettre une étiquette : Début
[...]
Si [Précédent] faire :
<>Sauter vers l'étiquette : Début
<>Commentaire : l'événement reviendra au premier choix.
<>
Elles peuvent être utilisées pour autre chose, mais c'est l'exemple le plus simple.
Maintenant que vous avez appris les bases des événements, nous pouvons attaquer la partie suivante sur les événements indispensables. Les deux chapitres sur les événements seront succincts, je ne listerai pas toutes les fonctions disponibles, vous êtes assez grands pour découvrir par vous-mêmes. Cependant je compte faire une annexe rapide qui listera toutes les fonctions, pour ceux qui auraient la version anglaise.
On se retrouve dans le prochain chapitre ? Si ce cours a été trop dur pour vous, reposez-vous ! Je ne tiens pas à avoir des morts sur les bras ! Quoique, rencontrer le lieutenant Mc Taylor en vrai, ça peut être cool.
Chapitre 5 - Les événements indispensables:
J'espère que vous êtes en forme ? Parce que vous allez en baver ! Ce que vous allez lire sera sans doute la pire chose que vous aurez vue dans votre misérable existence ! Vous allez me faire 100 pompes et que ça...
Oups... pardon, un instructeur militaire qui passait par là. Mais je ne me suis pas laissé faire ! Bon : ici, nous allons attaquer les événements indispensables, alors ouvrez bien vos oreilles parce qu'ils sont... indispensables. Ils vous serviront pour TOUS, je dis bien TOUS vos jeux !
Alors en avant !
Interrupteurs et conditions
Imaginons maintenant que la fille aux pommes (je l'ai nommée comme ça ) donne une pomme au héros s'il les aime et 10 pièces s'il ne les aime pas (on va oublier les poires) ; maintenant que vous avez vu les Ajouter et retirer, vous devriez me faire le code sans problème !
Citation : Code événement
<>Message : Aimez-vous les pommes ?
<>Proposer un choix : Oui, Non
: Si [Oui] faire :
<>Message : Alors tenez, voici une pomme !
<>Objets : [Fruit] + 1
<>
: Si [Non] faire :
<> Message : Alors voici 10 pièces pour que vous achetiez votre fruit préféré !
<>Monnaie : + 10
<>
: Fin
<>
J'espère que vous l'avez fait tout seuls sinon :
!
Bon, trêve de plaisanterie, c'est bien beau d'avoir une gentille madame, mais elle est un peu gourde : on peut lui reparler 100, 1000... fois elle nous reposera inlassablement la même question et nous donnera toujours quelque chose. Pour faire bien, elle devrait nous offrir un cadeau et à la deuxième fois nous dire qu'elle l'a déjà fait ! Et c'est là qu'interviennent les conditions et les interrupteurs !
Mais qu'est ce qu'un interrupteur, c'est pour allumer la lumière ? Et les conditions ?
Vous ne croyez pas si bien dire car comme ceux qui allument et éteignent vos lumières, les interrupteurs de RMXP ont deux positions : activé et désactivé. Pour ceux qui font de la programmation, c'est comme les variables booléennes.
Les interrupteurs sont désactivés par défaut.
Pour gérer les interrupteurs, cliquez sur
Citation : Numéro
Gestion des interrupteurs[1];{3};(1)
. Là, vous pourrez définir le nom que vous voulez donner à votre interrupteur et choisir sa position. On utilise cette option après une condition pour changer l'interrupteur de position.
Notez que vous pourrez créer un interrupteur directement dans la condition, mais alors, vous ne pourrez pas choisir sa position (ce n'est pas grave ; en règle générale, on laisse un interrupteur désactivé quand on le crée).
Les conditions, elles, permettent de faire certaines actions si une condition est remplie.
Nous allons créer à nouveau notre événement, supprimez donc tout le code s'y trouvant. Maintenant ajoutez une condition, pour cela cliquez sur :
Citation : Numéro
Condition [1];{2};(1).
Voici ce qui doit apparaître :
Nous allons créer une condition en fonction d'un interrupteur, sélectionnez donc « interrupteur », choisissez dans la liste le premier interrupteur et donnez-lui un nom comme suit :
(Vous pourrez créer des interrupteurs comme cela tout le temps.)
Validez et sélectionnez désactivé pour l'interrupteur, vérifiez aussi que pour les conditions la dernière option (Exécuter d'autres commandes si la condition n'est pas rencontrée) est cochée sinon la fille aux pommes sera muette une fois son cadeau fait.
Voici le code que vous devriez obtenir :
Citation : Code événement
<>Condition : si l'interrupteur [0001:Pomme] est désactivé
<>
: Sinon
<>
: Fin
<>
Comme l'interrupteur est désactivé par défaut, c'est le premier « cadre » qui sera exécuté..
Le premier cadre ??
Voici les « cadres » :
Et comme c'est le premier cadre qui va être exécuté, c'est ici que l'on va mettre le code du début du chapitre ; donc, dans le deuxième on va mettre le message disant qu'il ne faut pas abuser :
Citation : Code événement
<>Condition : si l'interrupteur [0001:Pomme] est désactivé
<>Message : Aimez-vous les pommes ?
<>Proposer un choix : Oui, Non
: Si [Oui] faire :
<>Message : Alors tenez, voici une pomme !
<>Objets : [Fruit] + 1
<>
: Si [Non] faire :
<> Message : Alors voici 10 pièces pour que vous achetiez votre fruit préféré !
<>Monnaie : + 10
<>
: Fin
<>
: Sinon
<>Message : Profitez bien de mon cadeau !
<>
: Fin
<>
Exécutez ce code, que se passe-t-il ?
Hé, ça n'a rien changé ! Tout ton baratin pour la même chose ! ESCROC !
Avant que vous me fusilliez, j'ai omis (volontairement, vous me prenez pour qui ? ) un détail capital. C'est normal que rien ne change puisque l'interrupteur est toujours désactivé : la condition ne pourra donc changer ; voici le code complet (notez la commande rouge en plus) :
Citation : Code événement
<>Condition : si l'interrupteur [0001:Pomme] est désactivé
<>Message : Aimez-vous les pommes ?
<>Proposer un choix : Oui, Non
: Si [Oui] faire :
<>Message : Alors tenez, voici une pomme !
<>Objets : [Fruit] + 1
<>
: Si [Non] faire :
<> Message : Alors voici 10 pièces pour que vous achetiez votre fruit préféré !
<>Monnaie : + 10
<>
: Fin
<>Interrupteur(s) [0001: Pomme] activé
<>
: Sinon
<>Message : Profitez bien de mon cadeau !
<>
: Fin
<>
Et voilà le code est complet et il fonctionne, testez pour voir ! Une fois que la fille aux pommes aura posé sa question, l'interrupteur s'activera. La prochaine fois qu'on parlera à la fille aux pommes, comme l'interrupteur est activé, le premier cadre ne s'exécutera pas, et c'est donc le 2e qui le sera.
Il existe aussi quatre interrupteurs locaux : A, B, C et D qui ne sont disponibles que dans la carte. C'est-à-dire que dans une autre carte ces interrupteurs seront vierges.
Variables et conditions
Variables
Maintenant que nous avons encore plus dynamisé la fille aux pommes, occupons-nous du vieux grippe-sou de la tente. Nous allons faire en sorte qu'il reçoive un cadeau spécifique à son âge. Il faudra bien sûr réutiliser la condition précédente pour qu'il offre un seul cadeau, ce sera aussi l'occasion de tester une nouvelle commande :
Citation : Numéro
Entrer un nombre : [1];{1};(3)
.
Voici ce que le vieillard devra offrir :
s'il a moins de 10 ans : épée en bois ;
s'il a 11 ou 12 ans : épée de bronze ;
s'il a 12 ou 13 ans : lance de bronze ;
s'il a 15 ou 16 ans : hache de bronze ;
s'il a 17 ou 18 ans : dague de bronze ;
s'il a plus de 20 : arc de bronze.
Pour faire cela, nous aurons besoin d'un interrupteur (le même que dans le précédent exemple) pour qu'il nous offre un seul cadeau et non 36. Nous aurons aussi besoin d'une variable pour stocker l'age du héros.
Mais c'est quoi une... variable ??
Les variables sont en quelque sorte des interrupteurs avec une infinité de positions (pour reprendre mon exemple des interrupteurs, c'est comme les interrupteurs variateurs, ceux qui font varier l'intensité de la lumière).
Commençons à coder, supprimez d'abord toutes les commandes des précédents tests. Insérez une condition comme dans le précédent code en changeant l'interrupteur :
Citation : Code événement
<>Condition : si l'interrupteur [0002:Cadeau] est désactivé
<>
: Sinon
<>
: Fin
<>
On va maintenant s'occuper de notre variable en la créant et en l'initialisant (en lui donnant une valeur).
Pour gérer votre variable, cliquez sur
Citation : Numéro
Gestion des variables[1];{3};(2)
.
Voici la fenêtre qui apparaît :
Donnez-lui un nom de la même manière que pour les interrupteurs. Vous pouvez voir qu'on peut rendre notre variable égale à de nombreuses choses mais l'option rendre égale à l'âge du héros n'existe pas, qu'à cela ne tienne, nous allons le faire nous-mêmes ! Donnez pour valeur à la variable 0. Voici le code qu'on a maintenant :
Citation : Code événement
<>Condition : si l'interrupteur [0002:Cadeau] est désactivé
<>Variable(s)[0001: Cadeau] : rendre égale(s) à 0
<>
: Sinon
<>Message : Puisse mon cadeau vous apporter courage et bonheur !
<>
: Fin
<>
(J'ai déjà rajouté le message pour la seconde fois où on ira lui parler.)
J'ai nommé ma variable comme l'interrupteur, ce n'est pas obligatoire et ça ne change strictement rien.
Maintenant nous allons demander l'âge du héros :
Nous stockons la valeur dans notre variable et le nombre comportera trois chiffres, je suppose que c'est suffisant pour un âge, personne n'a plus de 999 ans ici ? Voici le code maintenant :
Citation : Code événement
<>Condition : si l'interrupteur [0002:Cadeau] est désactivé
<>Variable(s)[0001: Cadeau] : rendre égale(s) à 0
<>Message : Quel âge avez-vous ?
<>Entrer un nombre : stocké dans la variable [0001:Cadeau], contenant 3 chiffre(s)
<>
: Sinon
<>Message : Puisse mon cadeau vous apporter courage et bonheur !
<>
: Fin
<>
J'ai aussi rajouté une question, faut aussi que l'utilisateur sache à quoi sert le chiffre qu'il va rentrer.
Maintenant nous allons créer une condition pour chaque cadeau, et celles-ci n'exécuteront rien si la condition n'est pas remplie. Pourquoi ? Parce que c'est inutile, il y aura toujours une condition qui sera remplie. Il vous faudra donc 6 conditions, essayez d'écrire le code vous-mêmes. Mais avant, je vais vous donner le dernier caractère spécial pour les messages. Souvenez vous, le caractère que j'avais flouté : \V[$]. Ce code affichera la valeur de la variable dont l'id est $. (L'id de ma variable est : 0001.)
Voici le code : si vous n'avez pas réussi à le faire, ce n'est pas grave, vous aurez l'occasion de vous rattraper avec les exercices (en image parce qu'il est long ) :
(Je n'ai pas fait attention à la flèche noire pour les messages.)
La valeur contenue dans une variable peut aller de -19 999 à 19 999.
Autres conditions
Voici maintenant les 2e, 3e et 4e onglets :
Je n'ai pas vraiment de choses à rajouter : les noms donnés aux paramètres sont assez compréhensibles.
Je vais juste revenir sur les deux derniers paramètres : la Touche et le Script.
La condition Touche a un petit problème : la touche que vous mettez dans la condition ne sera pas celle du clavier. Dans un de mes jeux, j'ai fait "Condition si la Touche L est pressée, faire [...]" et la touche qui effectue cette action est la touche... Q ! Ceci dépend du clavier.
Concernant le Script, je vous en ai déjà parlé plus haut. C'est un peu compliqué et personnellement, je n'ai jamais utilisé de script dans une condition.
Afficher un événement en fonction d'un interrupteur
Cette fonctionnalité nous sera très utile pour intégrer une nouvelle personne dans l'équipe, cela nous permettra de faire disparaître celle-ci ; comme je vous l'ai déjà dit, on ne peut pas supprimer définitivement un événement.
Vous vous souvenez de la page des événements ? Non, alors la voici :
Nous allons nous intéresser à la partie du haut, plus précisément aux conditions de déclenchement et aux pages. Pour créer notre coéquipier, nous allons créer deux pages : celle du coéquipier et une vide qui s'affichera lorsqu'il aura rejoint notre équipe.
C'est toujours la page avec le numéro le plus élevé qui sera lue. (Si elle peut être lue. )
Vous allez me créer la page avec l'image du coéquipier sur votre 1re page.
Mais, tu as dit que c'est la deuxième page qui s'affichera ! Ce ne serait pas plus logique de la mettre sur la 2e page ??
Je suis d'accord que ça peut paraître stupide mais faites-le, vous verrez après pourquoi.
Une fois que vous aurez créé l'événement du coéquipier (j'espère que vous avez su faire vous-mêmes le code), vous allez me créer la 2e page avec comme condition de l'événement un interrupteur (par exemple [Suppr. Coéquipier]), les conditions de l'événement sont dans le cadre en haut à gauche, avec aucun code dedans. Je vais vous montrer maintenant le code de la 1re page (que vous avez dû faire vous-mêmes).
Citation : Code event
<>Message : Bonjour aventurier, j'aimerais partir à
: : l'aventure, puis-je venir avec vous ?
<>Proposer un choix : Oui, Non
: Si [Oui] faire :
<>Modifier l'équipe : Ajouter [Kiza], démarre au niveau initial
<>Message : Merci
<>Effacer cet événement
<>Interrupteur(s) [0093: Suppr. Coéquipier] activé
<>
: Si [Non] faire :
<>Message : Ok, si vous changez d'avis, vous savez où
: : me trouver...
: Fin
<>
Hé, tu nous as menti ! Il y a une fonction qui supprime l'événement !
Avant que vous ne m'assassiniez, je vais vous expliquer ce que fait cette fonction.
J'ai dit qu'on ne pouvait pas supprimer DÉFINITIVEMENT un événement, et la fonction Supprimer un événement ne l'efface que temporairement ; une fois que vous reviendrez sur cette carte, cet événement va réapparaître.
Donc, cette fonction nous permet d'effacer notre coéquipier, le temps qu'on sera sur la carte, car la suppression de l'image du coéquipier ne se fait que quand vous allez revenir.
Une fois qu'une page est lue, celle-ci le restera tout le temps que vous êtes sur la carte, même si une autre page peut être lue (un peu comme une page Internet, une fois chargée, cette page restera affichée sur votre navigateur, même si l'auteur supprime cette page, du moins tant que votre navigateur restera ouvert. )..
Revenons un instant sur le code : vous aurez remarqué qu'on a activé l'interrupteur [Suppr. Coéquipier], ce qui permettra d'afficher la 2e page vide.
Maintenant, vous devez avoir compris pourquoi on a mis l'image du coéquipier sur la première page ; pour les quelques sceptiques, voici deux petits schémas :
- Spoiler:
Mes schémas sont grands : cliquez donc pour les agrandir.
Petits exercices
Maintenant que vous avez appris les conditions et les variables, vous avez le niveau pour faire deux petits exercices.
Recevoir de l'argent
Vous allez créer un événement qui fait ceci : le héros ira parler à un bonhomme et celui-ci lui donnera autant d'argent que son âge. Attention : si le héros entre un âge supérieur à 120 ans, le personnage se fâchera.
Niveau
Votre héros parle à un personnage et celui-ci le change de classe s'il est à la moitié de sa carrière.
Pour cela, il faudra rendre une variable égale au niveau du héros (le niveau du héros va jusqu'à 99). Le personnage devra proposer le changement de classe et ne pas l'imposer (Proposer un choix).
Citation : Numéro
Changer de classe [1];{2};(11).
BONNE CHANCE !!!!
Petites corrections
Recevoir de l'argent
Citation : Code événement
<>Condition : si l'interrupteur [0001:Age] est désactivé
<>Message : Quel âge avez-vous ?
<>Entrer un nombre : stocké dans la variable [0002:Age], contenant 3 chiffre(s)
<>Condition : si la variable [0002:Age] est supérieure ou égale à 120
<>Message : Vendu ! ESCROC ! Voleur !
<> : Pour la peine je ne vous donnerai rien !
<>Interrupteur(s)[0001:Age] activé
<>
: Sinon
<>Monnaie : + Variable[0002:Age]
<>Message : Bien, je vous ai donné \V[2] Po !
<>Interrupteur(s)[0001:Age] activé
<>
: Fin
<>
: Sinon
<>Message : Il faut toujours aider son prochain !
<>
: Fin
<>
Avouez que ce n'était pas bien compliqué. Il ne faut surtout pas oublier d'activer l'interrupteur une fois l'action effectuée, sinon la condition recommencera tout le temps. Et également vérifier que l'âge n'est pas exorbitant.
Niveau
Citation : Code événement
<>Message : Bonjour, voulez-vous passer à la classe
<> : supérieure ?
<>Proposer un choix : Oui, Non
: Si [oui] faire :
<> Variable(s) [0001 : Niveau] : rendre égale(s) à [NomHéros] --> Niveau
<>Condition : si la variable [0001:Niveau] est supérieure ou égale à 50
<>Message : Bien, je vais procéder au changement de ta
: : classe...
<> Changer la classe du héros [NomHéros] en [Guerrier]
<>Message : Voilà, tu es passé à la classe supérieure.
: : Tu es un guerrier maintenant.
<>
: Sinon
<>Message : Désolé, tu n'as pas le niveau requis (50).
<>
: Fin
<>
: Si [Non] faire :
<> Message : Une autre fois, peut-être ?
<>
: Fin
<>
Là, c'était un peu plus compliqué, mais ce n'est quand même pas sorcier, si ?
Vous avez remarqué qu'il faut déclarer la variable avant la condition pour que le niveau du héros y soit enregistré.
Si vous avez testé mon code, vous aurez remarqué qu'une fois que le héros a changé de classe, il peut aller parler à nouveau au bonhomme et rechanger de classe (la même) : c'est un peu bête.
Pour vous entraîner, je vous propose de le modifier pour que le bonhomme lui dise qu'il a déjà changé de classe. Pour cela, il faudra insérer une nouvelle condition avec un interrupteur.
Bonne chance... J'oubliais : il n'y a pas de correction. À vous de trouver... ou d'aller sur le forum...
Si vous avez réussi les exercices, c'est bien car ceux-ci pourront vous servir à nouveau dans vos prochains jeux.
Voilà : vous avez appris toutes les bases du logiciel ; maintenant, vous pouvez créer un petit jeu ; cependant vous n'avez pas encore tout appris ! Il vous reste encore la partie II : Base de données, où vous verrez son utilisation. La base de données est très utile, vous verrez.
Mais avant ça je pense qu'il est temps de faire un petit TP, alors en avant !
Chapitre 6 - TP - Création d'une banque:
Avec tout ce que vous avez appris dans les parties précédentes, il est temps de faire un petit TP.
Le but de ce TP sera la création d'une banque. Quand le joueur ira parler au banquier, celui-ci lui proposera de créer un compte. Ensuite il pourra à son gré y déposer et y retirer de l'argent.
Je tiens à remercier quentin01 pour l'idée de ce TP.
Préparatifs
Donc comme dit dans l'introduction, le but de ce TP sera l'élaboration d'une banque. Le joueur pourra y déposer et retirer de l'argent.
Mais avant tout le joueur devra y ouvrir son compte (gratuitement, pour ne pas compliquer).
Ensuite, quand il ira reparler au banquier, celui-ci lui indiquera de combien d'argent il dispose sur lui et la solde de son compte.
Et enfin il lui proposera trois actions : Retirer ; Déposer ; Rien.
Retirer
Le joueur entrera le montant qu'il veut retirer, il faudra ensuite vérifier que son compte contient tout ce qu'il veut retirer. Si c'est le cas on retire l'argent de son compte et on l'ajoute à son pécule.
Dans le cas contraire on lui indique que son compte ne dispose pas de tout cet argent.
Déposer
Cette fois-ci le joueur entrera le montant qu'il veut déposer. S'il a tout cet argent, on le retire de son pécule et on l'ajoute à son compte. Dans le cas contraire on lui indique qu'il n'a pas assez d'argent.
Rien
Si le joueur change d'avis le banquier lui dit au revoir (s'il est poli ).
Vous aurez besoin d'utiliser tout ce qu'on a vu précédemment :
les interrupteurs ;
les conditions ;
les choix ;
les variables ;
et ajouter / retirer monnaie.
Je donne la liste des variables / interrupteurs dont vous aurez besoin, pour ceux qui n'ont pas d'idée (mais essayez de trouver par vous-mêmes).
Un interrupteur : compte activé / désactivé.
Une variable : argent possédé par le héros.
Une variable : argent sur le compte.
Une variable : argent que le joueur demande à retirer.
Une variable : argent que le joueur demande à déposer.
Je vous conseille de créer un autre événement qui donne 100 Po au joueur, par exemple, pour tester la banque.
Maintenant : réalisation !
Correction
Si vous êtes là c'est que vous avez réussi le TP, ou que vous ne l'avez pas réussi.
Nous allons commencer pas à pas la correction. Dans l'ordre logique de conception.
Condition d'ouverture du compte
La première chose à faire, c'est de créer une condition qui vérifie si un interrupteur est activé ou désactivé.
Citation
<>Condition: si l'interrupteur [0001: Banque] est désactivé
<>
: Sinon
<>
: Fin
<>
Si l'interrupteur est désactivé
S'il est désactivé, cela veut dire que le joueur n'a pas encore créé de compte (rappelez-vous que les interrupteurs sont désactivés par défaut).
Il faut donc lui en créer un : mais avant, il faut demander au joueur s'il veut bien créer un compte -> proposition de choix.
Citation : Code
<>Message: Bonjour, voulez-vous ouvrir un compte dans
ma banque ?
<>Proposer un choix: Oui, Non
:Si [Oui] faire :
<>Message: Merci!
<>Interrupteur(s) [0001: Banque] activé
<>Variable(s) [0001: Argent héros]: rendre égale(s) à Argent possédé
<>Variable(s) [0002: Argent Banque]: rendre égale(s) à O
<>
:Si [Non] faire
<>Message: Une prochaine fois?
<>
:Fin
<>
Tout d'abord, si le joueur ne veut pas, on quitte, logique.
Ensuite s'il veut, on active l'interrupteur du compte pour que la prochaine fois il puisse l'utiliser, sinon le banquier lui redemandera indéfiniment s'il veut créer un compte.
Ensuite on crée une variable qu'on rendra égale à l'argent possédé par le héros, et enfin on crée une deuxième variable qui sera égale à l'argent qu'il y a sur le compte, on initialise cette variable à 0.
Si l'interrupteur est activé
On va le voir tout de suite.
Indication de l'argent possédé et proposition d'action
Maintenant que le joueur a créé son compte, occupons-nous de la seconde partie de la condition, à savoir : quand le compte est activé.
Indication du pécule
Cette partie n'est pas compliquée, il suffit de créer un message affichant les variables créées précédemment :
Citation : Code
<>Variable(s) [0001: Argent héros]: rendre égale(s) à Argent possédé
<>Message: Bonjour. vous avez \C[3]\V[001]\C[0] Po sur vous
: :et \C[3]\V[002]\C[0] Po sur votre compte
: :\C[1]Que voulez-vous faire ?
Toutefois ne pas oublier de re-rendre égale la variable Argent héros à l'argent possédé par le héros.
(J'ai choisi de colorer en vert les variables et en bleu la question.)
Proposition de choix des actions
Il faut ensuite créer la proposition de choix :
Citation : Code
<>Proposer un choix: Retirer, Déposer. Rien
: Si [Retirer] faire:
<>
: Si [Déposer] faire:
<>
: Si [Rien] faire:
<>Message: Comme vous voudrez, au revoir.
<>
: Fin
Le choix rien était extrêmement difficile à trouver.
Retirer
Voyons le code du choix retirer :
Citation : Code
<>Proposer un choix: Retirer, Déposer. Rien
: Si [Retirer] faire:
<>Message: Combien-vous voulez retirer ?
<>Entrer un nombre : stocké dans la variable [0003: Argent retiré demandé], contenant 5 chiffre(s)
<>Condition: si la variable [0003: Argent retiré demandé] est strictement supérieure à Variable [0003: Argent banque]
<>Message : Votre compte ne contient pas autant d'argent !
:Sinon
<>Variable(s) [0002: Argent Banque]: retirer (valeur de la variable [0003: Argent retirer demandé])
<>Monnaie: + Variable [0003 Argent retiré demandé]
<>
:Fin
Tout d'abord on demande au joueur combien il veut retirer, ensuite on stocke cette valeur dans une variable (chez moi la variable 0003).
Ensuite on fait une condition pour comparer cette valeur avec la variable de l'argent de son compte et on vérifie qu'il contient bien tout cet argent.
Si non, on arrête.
Si oui, on retire cet argent du compte et on l'ajoute au pécule du joueur.
Déposer
C'est la même chose que pour retirer, mais inversé :
Citation : Code
: Si [Déposer] faire:
<>Message: Combien voulez-vous déposer ?
<>Entrer un nombre : stocké dans la variable [0004: Argent déposé demandé], contenant 5 chiffre(s)
<>Condition: si la variable [0004: Argent déposé demandé] est strictement supérieure à Variable [0001: Argent héro]
<>Message : Vous n'avez pas autant d'argent !
<>
: Sinon
<>Variable(s) [0002: Argent Banque]: ajouter (valeur de la variable [0004: Argent déposer demandé]
<>Monnaie: -Variable [0004: Argent déposé demandé]
<>
:Fin
<>
Cette fois-ci on demande au héros combien d'argent il souhaite déposer, on vérifie qu'il dispose de tout cet argent, sinon on arrête ; si oui, on ajoute au compte l'argent de la variable argent déposé demandé et on le retire du pécule du héros.
Voilà, c'est fini, ouf. Bon je vous donne tout le code en entier ainsi qu'un .zip du projet, n'hésitez pas à relire plusieurs fois la correction si vous ne comprenez pas.
Code complet :
Citation : Code
<>Condition: si l'interrupteur [0001: Banque] est désactivé
<>Message: Bonjour, voulez-vous ouvrir un compte dans
ma banque?
<>Proposer un choix: Oui, Non
:Si [Oui] faire :
<>Message: Merci!
<>Interrupteur(s) [0001: Banque] activé
<>Variable(s) [0001: Argent héros]: rendre égale(s) à Argent possédé
<>Variable(s) [0002: Argent Banque]: rendre égale(s) à O
<>
:Si [Non] faire
<>Message: Une prochaine fois?
<>
:Fin
<>
: Sinon
<>Variable(s) [0001: Argent héros]: rendre égale(s) à Argent possédé
<>Message: Bonjour. vous avez \C[3]\V[001]\C[0] Po sur vous
: :et \C[3]\V[002]\C[0] Po sur votre compte
: :\C[1]Que voulez-vous faire ?
<>Proposer un choix: Retirer, Déposer. Rien
: Si [Retirer] faire:
<>Message: Combien voulez-vous retirer ?
<>Entrer un nombre : stocké dans la variable [0003: Argent retiré demandé], contenant 5 chiffre(s)
<>Condition: si la variable [0003: Argent retiré demandé] est strictement supérieure à Variable [0003: Argent banque]
<>Message : Votre compte ne contient pas autant d'argent !
<>
:Sinon
<>Variable(s) [0002: Argent Banque]: retirer (valeur de la variable [0003: Argent retirer demandé])
<>Monnaie: + Variable [0003 Argent retiré demandé]
<>
:Fin
<>
: Si [Déposer] faire:
<>Message: Combien voulez-vous déposer ?
<>Entrer un nombre : stocké dans la variable [0004: Argent déposé demandé], contenant 5 chiffre(s)
<>Condition: si la variable [0004: Argent déposé demandé] est strictement supérieure à Variable [0001: Argent héros]
<>Message : Vous n'avez pas autant d'argent !
<>
: Sinon
<>Variable(s) [0002: Argent Banque]: ajouter (valeur de la variable [0004: Argent déposer demandé]
<>Monnaie: -Variable [0004: Argent déposé demandé]
<>
:Fin
<>
: Si [Rien] faire:
<>Message: Comme vous voudrez. Au revoir.
<>
: Fin
<>
:Fin
Améliorations
Maintenant que vous avez réussi on ne va pas s'arrêterr en si bon chemin !
Voici quelques idées d'amélioration.
Faire payer une certaine somme d'argent pour ouvrir son compte.
Lorsque le joueur retire ou dépose de l'argent, après sa transaction il faudrait lui indiquer son pécule et le montant de son compte.
Offrir une certaine somme lors de la création du compte.
Plus dur : proposer des intérêts en fonction de l'argent sur le compte*.
Plus dur : générer des intérêts au nombre de pas parcouru. Chaque fois que le joueur parlera au banquier, celui-ci additionnera le nombre de pas que le joueur a fait depuis sa dernière visite ; s'il est arrivé à 500 pas (par exemple) il reçoit 100 pièces d'or sur son compte.
C'est vraiment important de faire ces améliorations, car elles vous permettront d'apprendre à utiliser toutes les fonctions du logiciel. Surtout les deux dernières.
Voici mon projet avec les améliorations (exceptée la 4), et bien sûr sans le « code ». Il faudra réfléchir.
TP - Banque (archive .zip)
Voilà, ce TP prend fin. Il n'était pas extrêmement compliqué, il fallait ne pas mélanger les variables et vérifier que les sommes entrées pouvaient être retirées ou déposées, c'est tout. Avant de passer à la partie II, procédez aux améliorations pour vous faire la main.
Maintenant vous êtes prêts pour la partie II : Base de données.
Avec les solides bases que vous avez acquises vous pourrez attaquer sans problème la partie 2 !
Voila la partie 1 est terminer, je fais un autre poste pour la partie 2.