Dabord quelque ressources :
Ces ressources ne sont pas obligatoires c'est juste pour que vous n'ayez pas à les faire vous même
Tuto a-rpg
I) Les coordonnéesUne map est en fait comme une grille de bataille navale
Avec un côté chiffre et un côté chiffre ^^
Exemple :
Les coordonnées des évènement sont notées sous la forme (x,y)
Elles permettent de savoir où est le héro
On peut donc savoir si le héro est sur un autre évènement.
On peut mettre les coordonnées du héro dans des variables.
Exemple :
On peut faire de même avec n'importe quel évènement.
Mais pour que l'on sache en permanence où est le héro, il faut mettre l'évènement en processus parallèle.
Mieux vaut de plus en faire un évènement commun pour ne pas surcharger les maps d'évènement ne servant à rien.
Il faut enfin mettre un attendre de 1 ou 2 frames pour ne pas faire lagger le jeu.
Voici donc la prog pour calculer où se trouve le héros en permanence.
Avec les conditions,on peut savoir si le héros est sur la même case qu'un autre évènement (par exemple un flèche tirée par un monstre).
Où alors si un monstre est sur la même case qu'une flèche tirée par le héros ^^
Bref on peut avec les coordonnées, on peut savoir où sont les évènement et le héros.
Pour plus d'explications :
iciII) Les projectilesA) Le principeIl faut mettre l'event du projectile au même endroit que le héro, le décaler pour qu'il sois en face de lui.
Afficher le projectile, le faire avancer tout droit en calculant sa position pour savoir si il est au même endroit qu'un monstre.
Si oui c'est comme la bataille navale : quand on tire en B;4 et qu'il y a un bateau en B;4 , on dit "Touché" et on enlève le bateau.
Donc on fait disparaitre le monstre et on rend ses coordonnées égale à -1 pour ne pas que le monstre sois touché après disparition (car les dernières coordonnées seront prises en compte dans le cas contraire)
B) La programmationTout d'abord il faut créer un évènement commun (que l'on va parler dans chaque map, donc en Appel )
On commence par faire deux variables (pour les coordonnées du projectile) et les rendre égale aux variables des coordonnées du héros.
On change l'apparence de cet évènement en l'apparence de votre projectile.
Il faut ensuite mettre des conditions pour savoir de quels côté le héros regarde (voir la programmation en dessous) pour pouvoir placer le projectile devant le héros.
Ensuite il faut déplacer l'évènement devant le héros (donc en se servant des variables que nous venons de modifier).
La manipulation qui suit est à répéter le nombre de fois que vous voulez (le projectile se déplacera d'un carreau de plus à chaque nouvelle manipulation).
Mettre un attendre (entre 2 et 5 frames suivant la vitesse de projectile voulue).
Déplacer cet évènement d'un pas un avant.
Rendre les variables de coordonnées du projectile égale aux coordonnées du projectile.
Il faut en fin mettre un attendre de 2 frames (pour permettre au jeu de calculer si le projectile est sur un monstre).
Rendre cet évènement transparent.
Puis rendre les variables de coordonnées du projectile à -1 (pour que les monstres ne soient pas blessés par un projectile disparu).
Maintenant sur chaque map où vous voulez que le joueur puisse tirer un projectile, placez un évènement en processus parallèle et traversable qui comprend :
Condition la touche que vous voulez est enfoncée ( C correspond à entrée et espace ).
Appeler un évènement commun (celui que nous venons de créer).
Et tout en bas un attendre de 2 frames pour éviter les lag.
Si vous voulez tester tout de suite, n'oubliez pas d'activer l'interrupteur qui enclenche l'évènement commun qui calcul les coordonnées du héros.
Il vous faut maintenant un monstre sur lequel tirer.
Pour cela créer un évènement sur une map, en processus parallèle, avec l'apparence que vous voulez.
Le principe :On calcule les coordonnées du monstre et on les compare à celles du projectile, si elles sont égales, le monstre est sur la même case que la flèche, donc il meurt.
La programmation :Calculer les coordonnées du monstre.
Condition les coordonnées du monstre sont égales à celles du projectile.
Alors activer l'interrupteur qui contrôle la mort du monstre.
Puis un attendre de 2 frames à la fin pour les lags
Dernière étape, faire une deuxième page à l'event et mettre l'interrupteur de mort du monstre comme condition de déclenchement.
Si vous voulez que votre monstre revive à chaque entrée dans la map, désenclencher l'interrupteur de mort du monstre à la sortie de la map (sur l'event de téléportation).
III) Le corps à corpsOn fait comme pour les projectiles mais sans se servir d'un évent sur la carte (et donc sans le déplacer ni lui donner une apparence) pour le reste c'est grosso modo la même chose. On peut aussi ajouter un bruit pendant l'attaque ou changer la touche à appuyer.
La programmation :
Il faut ensuite modifier le monstre pour qu'il prenne les dégâts.
Comme pour les projectiles on compare les coordonnées du monstre et ceux de l'attaque :
IV) Les monstresA) L'octorockCe monstre se déplace et tire un projectile aléatoirement.
Il suffit de cocher déplacement aléatoire sur l'évent du monstre et de rajouter quelques commandes et un évent pour le projectile reprenant le principe de celui du héros.
Le principe :Une variable se lance et choisis un nombre aléatoirement, si ce nombre et 1 , on active un interrupteur qui active évent de projectile.
Rendre la variable à une valeur aléatoire entre 1 et 25, et mettre un attendre de 10 frames à la fin c'est déja beaucoup.
La programmation :
Ensuite faire un évènement comme les projectiles du héro, en changeant bien sur les variables.
Mettre l'image du projectile en apparence.
La programmation :
B) La vie du hérosIl faut enfin faire en sorte que le héros puisse perdre de la vie, pour cela créer un évènement commun en processus parallèle.
Dedans mettez une condition pour savoir si le héros se trouve sur la même case un projectile ou une attaque de monstre.
Si oui, enlevez un à la variable de vie du héros (à créer, elle servira de PV au héros)
Si cette variable est égale à 0, soit mettez un game over, soit téléporter le héros sur une map prévue à cet effet.
On peut aussi mettre un son pour faire comprendre au joueur qu'il vient de perdre de la vie.
Et enfin mettre un attendre pour donner une invulnérabilité au héros après s'être pris un coup.
La programmation :
Ne pas oublier de mettre une valeur à la vie du héros au début du jeu pour ne pas avoir de game over. Il faut en fin afficher la vie du héros sur la carte.
Pur cela, on va mettre un évènement commun en processus parallèle, qui comporte une condition pour savoir à quelle valeur est la vie du héros.
En fonction de cette valeur, on affiche un nombre de cœur ou une barre de vie.
Ne pas oublier le traditionnel attendre pour éviter le lag.
Exemple de programmation :
Pour faire un objet qui rajoutent de la vie ou des cœur à la Zelda (des objets sur les maps), il faut faire un évènement commun en appel avec une condition pour savoir si la vie du héros est au maximum (dans l'exemple, le maximum est 3)
Exemple de programmation :
Démo : ici
C'est fini pour maintenant mais si vous voulez que je rajoute des monstres ou autre chose, dite le moi