❤ 0 Bonjour et bienvenue à tous dans mon premier tuto.
Dans ce tuto, je vais tenter de vous expliquer comment créer différentes zones de combats, à l’aide des numéros des types de terrains. Des hautes herbes dans Pokémon pour ainsi dire.
Ce tuto va se séparer en trois parties :
- La détection du terrain (une variable).
- Le nombre de pas effectué sur le terrain (5 variable).
- Le déclanchement d’un combat en fonction du nombre de pas (1 variable).
Le tout assemblé avec une tonne de conditions (je plaisante).
I/ La détection du terrain
Pour commencer, nous allons assigner un N° de type au terrain désiré, personnellement j’ai choisi de l’herbe. Je vais donc conserver mon exemple :
Tout d’abord pressons la touche F9, puis l’onglet « Gestion des chipsets », Terrain et enfin nous assignons a l’herbe la valeur 1, comme ceci :
Maintenant, créons un événement en processus parallèle dans lequel on insère la variable [0001] appelée « carré » et assignons-lui la valeur du N° du type du terrain où se trouve le héro, comme ceci :
Et pour finir nous allons détecter si le héros se trouve dans le terrain en question ou pas, avec une simple condition :
1
2
3
| Si la variable [0001 : carré] a pour valeur 1
Sinon :
Fin. |
II/ Calcul du nombre de pas effectués sur le terrain
Nous voici dans la partie la plus compliquée de l’algorithme car RMXP ne donne pas directement la possibilité de compter les pas du héros, mis à part les pas totaux. Je vous donne donc le code et l’expliquerai par la suite pour les plus courageux :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| Variable [0003 : Pos X héro] rendre égale à la coordonnée X du héro.
Variable [0004 : Pos Y héro] rendre égale à la coordonnée Y du héro.
Si la valeur de [0003 : Pos X héro] est différente de la valeur de la Variable [0005 : Pos X Pré].
Si la valeur de [0004 : Pos Y] héro est différente de la valeur de la Variable [0006 : Pos Y Pré].
[0005 : Pos X Pré] rendre égale à [0003 : Pos X héro].
[0006 : Pos Y Pré] rendre égale à [0004 : Pos Y héro].
[0002 : Nombre pas] ajouté 1.
Condition : si la variable [0007 : Pas requis] est égale à 0.
Variable [0007 : Pas requis] rendre égale à une valeur aléatoire entre 20 et 30.
Sinon :
Fin.
Sinon :
[0005 : Pos X Pré] rendre égale à [0003 : Pos X héro].
[0002 : Nombre pas] ajouté 1.
Fin.
Sinon :
Condition : si la valeur de [0004 : Pos Y] héro est différente de la valeur de la Variable [0006 : Pos Y Pré].
[0006 : Pos Y Pré] rendre égale à [0004 : Pos Y héro].
[0002 : Nombre pas] ajouté 1.
Sinon :
Fin.
Fin. |
Voilà, maintenant je vous donne les EXPLICATIONS :
Pour commencer vous avez pu constater que la partie III empiète un peu sur notre partie II, ce qui est normal car certaines choses doivent être faites a un moment précis et cela offre une sécurité.
Entrons dans le vif du sujet :
Tout d’abord nous devons compter les pas du héro comme RMXP ne le fait pas directement nous allons détecter un mouvement par un changement de position (c’est bête à dire mais bon…).
Nous créons donc 4 variables, 2 pour détecter la position actuelle du héro et 2 pour sauvegarder la position précédente du héro. Si la position actuelle est différente de la position précédente, c’est donc qu’il ya eu déplacement. On assigne donc aux variables [0003 : Pos X Héro] et [0004 : Pos Y Héro] les coordonnées en X et en Y du héro, comme ceci (pour :
Ensuite nous devons comparer ces coordonnées avec les coordonnées précédentes appelées [0005 : Pos X Pré] et [0006 : Pos Y Pré]. (Pour la 1ère fois elles sont initialisées à zéro) à l’aide d’une condition par coordonnées et ajoutez si nécessaire +1 à la variable [0002 : Nombre pas] (qui compte les pas^^). Tous les cas de figures doivent être envisagés comme sur ce tableau :
Analysons maintenant ce tableau et rapportons-le au code :
Dans le code nous imbriquons des conditions pour avoir tous les cas de figures.
Cas N°1 : Y oui et X non. Cela ce traduit par un déplacement de gauche à droite rien de compliqué la dedans on compare la position actuel avec la position précédente, mètre à jour la position précédente (avec [0006 : Pos Y Pré] rendre égale à [0004 : Pos Y héro].) et incrémenté la variable [0002 : Nombre pas].
Cas N°2 : X oui et Y non. Cela ce traduit par un déplacement de haut en bas toujours rien de compliqué la encore on compare la position actuel avec la position précédente, mètre à jour la position précédente (avec [0005 : Pos X Pré] rendre égale à [0003 : Pos X héro].) et incrémenté la variable [0002 : Nombre pas].
Cas N°3 : X non Y non. Cela veut tout simplement dire que vous n’avais pas bougé ou que vous êtes sortie du terrain.
Cas N°4 : X oui Y non. Le cas le plus compliqué car à première vue il traduit un mouvement en diagonal (Nous supposons bien entendu ne pas disposer des déplacements de ce type), mais il ne traduit pas que ça il traduit aussi le fait de rentré dans l’herbe car les coordonnée étant initialisé à 0 et n’étant prisent en compte que lorsque le héro est dans les herbe la modification des deux coordonnée est synonyme d’entré dans les herbe (j’espère ne pas vous avoir embrouillé).
Bien, nous disions donc le cas N°4 est l’entrée dans l’herbe. Il faut donc :
- Mettre à jour les coordonnées précédentes des deux variables.
- Incrémenter la variable [0002 : Nombre pas] de +1.
- Et vous avez vu une condition supplémentaire avec :
1
2
3
4
| Condition : si la variable [0007 : Pas requis] est égale à 0.
Variable [0007 : Pas requis] rendre égale à une valeur aléatoire entre 20 et 30.
Sinon :
Fin. |
Comme le cas N°4 traduit l’entrée dans l’herbe, nous devons empiéter sur la partie III et générer un nombre de pas aléatoire pour nos combats. La condition permet juste d’éviter que le jeu ne génère un nombre a chaque passage dans l’algorithme (100 fois/sec je crois) mais juste une fois qu’il en a un (différent de 0) il arrête d’en chercher un. La seconde ligne permet de générer un nombre aléatoire (j’ai choisi entre 20 et 30 pas), et la troisième permet de le sauvegarder temporairement.
Voilà pour la partie II, nous venons de compter le nombre de pas faits par le héro et de générer un nombre de pas nécessaires à la rencontre d’un combat.
III Le déclanchement d’un combat en fonction du nombre de pas
Vous l’aurez deviné, nous allons juste comparez le nombre de pas effectués par rapport au nombre de pas requis.
1
2
3
4
5
| Condition : Si la variable [0002 : Nombre Pas] est supérieur ou égale à [0007 : Pas Requis].
Déclencher un combat :….
La variable [0002 : Nombre Pas] rendre égale à 0.
Sinon :
Fin. |
Lors de la comparaison, nous mettons supérieur ou égal, comme ça en cas de problème (0002 > 0007), le combat se déclenche et 0002 est remis à 0.
Il ne reste plus qu'à assembler l’algorithme :
Nous mettons la partie II et III dans la première partie de la condition de la partie I et dans la deuxième partie de la condition (le sinon) nous réinitialisons les variables de position précédente à 0 (si le héros sort de l’herbe sa position précédente est égale a 0.
Au final le code donne ceci :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| Variable [0003 : Pos X héro] rendre égale à la coordonnée X du héro.
Variable [0004 : Pos Y héro] rendre égale à la coordonnée Y du héro.
Si la variable [0001 : carré] a pour valeur 1
Si la valeur de [0003 : Pos X héro] est différente de la valeur de la Variable [0005 : Pos X Pré].
Si la valeur de [0004 : Pos Y] héro est différente de la valeur de la Variable [0006 : Pos Y Pré].
[0005 : Pos X Pré] rendre égale à [0003 : Pos X héro].
[0006 : Pos Y Pré] rendre égale à [0004 : Pos Y héro].
[0002 : Nombre pas] ajouté 1.
Condition : si la variable [0007 : Pas requis] est égale à 0.
Variable [0007 : Pas requis] rendre égale à une valeur aléatoire entre 20 et 30.
Sinon :
Fin.
Sinon :
[0005 : Pos X Pré] rendre égale à [0003 : Pos X héro].
[0002 : Nombre pas] ajouté 1.
Fin.
Sinon :
Condition : si la valeur de [0004 : Pos Y] héro est différente de la valeur de la Variable [0006 : Pos Y Pré].
[0006 : Pos Y Pré] rendre égale à [0004 : Pos Y héro].
[0002 : Nombre pas] ajouté 1.
Sinon :
Fin.
Fin.
Condition : Si la variable [0002 : Nombre Pas] est supérieur ou égale à [0007 : Pas Requis].
Déclencher un combat :….
La variable [0002 : Nombre Pas] rendre égale à 0.
Sinon :
Fin.
Sinon :
La variable [0005 : Pos X Pré] rendre égale à 0.
La variable [0006 : Pos Y Pré] rendre égale à 0.
Fin. |
Voilà j’espère que ce tuto vous a plus malgré sa taille, j’ai aussi fait une démo. (non disponible, http://www.megaupload.com/fr/?d=5R92ZUQP)
PS : Dans la démo les hommes vous indique :
- Position actuelle
- Position sauvegardée
- Nombre de pas effectués
- Nombre de pas nécessaires
Merci.
Ecrit vers 2008.
|