Faire un système de chapitres.
But : Le joueur pourra choisir son chapitre après l'écran titre. Il sera téléporté vers la map selon le chapitre.
Connaissances en Ruby requises : Vous devez connaitre au moins les chapitres jusqu'au chapitre "Classes".
Aperçu :

Comme vous le voyez sur l'aperçu ci-dessus, nous aurons besoin de 2 fenêtres : une qui sera plutôt décorative et l'autre interactive. Nous aurons donc 2 classes :)
Nous allons commencer par la fenêtre dite "décorative", celle qui possède la phrase "Veuillez choisir un chapitre". On nommer la classe "Window_Chapitre" et héritera de la classe " Window_Base".
Remarque : Si le mot "hériter" est encore inconnu pour vous, lisez les cours "Programmation Orientée Objet". Pour la création de ce script, la notion d'héritage n'a pas vraiment d'importance, vous comprendrez fur et à mesure, à force de créer des scripts et d'utiliser la POO.
1) La fenêtre descriptive : "Window_Chapitre".
La classe "Window_Chapitre" aura deux méthodes : "initialize" permettra d'initialiser les variables et "refresh" pour afficher tout bêtement le texte. Voici la composition de la classe pour le moment :
a) La méthode "initalize"
Comme vous l'avez remarqué, la méthode contient deux paramètres : "win_width" et "win_height". Le premier permettra de définir la longueur de la fenêtre et l'autre sa hauteur. On aurait pu les définir aussi dans la méthode au lieu de les mettre en paramètre.
Nous allons définir donc la taille de la fenêtre. Pour cela, on va utiliser "super".
Remarque : "super" permet d'appeller la méthode du même nom dans la classe parente donc, ici, la méthode "initalize" de Window_Base.
Nous allons mettre 4 variables : x, y et win_width, win_height où ces deux derniers on été défini comme paramètre. Nous allons initialiser les positions x et y. On va donner la valeur 200 à y mais pour x, nous allons faire un léger calcul pour pouvoir center la fenêtre.
La longeur de l'écran mesure 640px, la moitié est donc 640 / 2. Sur le shéma ci-dessus, la fenêtre ce situe actuellement sur la zon verte. Pour le centrer, il suffit de soustraire la moitié de la fenêtre.
Nous allons créer un Bitmap ... comme d'habitude quand on créé une fenêtre, avec en paramètre sa largeur et hauteur. On va définir le type et la taille d'écriture en reprenant les variables globales déjà créées dans le script "Main" : $fontface et $fonsize
Pour terminer cette méthode, on appelle la méthode "refresh" que l'on va créé après pour afficher le texte. On a donc actuellement :
b) La méthode "refresh"
En une ligne, la méthode est écrite :
c) La classe complète de "Window_Chapitre"
Voici donc la classe complète :
2) La fenêtre interactive : "Scene_Chapitre"
En fait, étant donné que le joueur interagit, on appelle ça une scène :).
On aura 3 méthodes :
- "main" pour initialiser les variables
- "update" pour les mises à jour et le choix du joueur sur le chapitre.
- "game_position" qui placera le héros sur une map selon le chapitre choisit.
Voici la structure :
La méthode "game_position" aura comme paramètre : "id" pour l'ID de la map, "x" et "y" la position x et y.
Si un paramètre n'est pas précisé, il prendra l'ID ou la position x ou y du départ du héros.
a) La méthode "main".
On va afficher au fond de l'écran, l'image de l'écran titre.
On créé une variable d'instance @sprite et on met au fond de l'écran, l'image enregistrée dans la base de données.
Note : "Les Sprites sont un concept basique utilisé pour afficher les personnages, etc. à l'écran." - Aide RMXP
Nous allons créer la fenêtre des chapitres avec le curseur de sélection. En fait, la classe "Window_Command", qui déjà existant, permet de faire cette fenêtre.
En quelques lignes, vous créez une fenêtre avec une sélection :)
Nous allons donner une opacité et on va centrer encore une fois de la même manière que "Window_Chapitre".
Comme on créé la fenêtre interactive, on va initialiser la fenêtre descriptive
Nous allons faire la mise à jour permanence des images ...etc. ce qui doit être fait à chaque fois lorsque on fait une "Scène"
Lisez les commentaires :). Utilisez à chaques fois cette méthode pour mettre à jour les images dans votre scène.
Après avoir quitter la boucle (quand on quitte la scène), on gèle l'écran et on supprime les fenêtres et les sprites.
Note : "Graphics.freeze : Gèle l'écran actuel pour la préparation des transitions. Les réécriture d'écran sont interdites jusqu'à ce que la méthode de transition soit appelée." - Aide RMXP
b) Méthode "update"
On mets à jour les fenêtres pour rafraichir le clignotement du curseur et l'animation graphique de pause (Aide RMXP). Maintenant, on va appeller la méthode "game_position" selon le chapitre choisit, selon la position du curseur quand le joueur appuie sur la touche C ou Entrée.
"@command_window.index" est position du curseur (de 0 à nombre de commandes - 1). Les commentaires disent la suite :)
c) Méthode "game_position"
On va téléporter le héros vers la map et les positions x et y. Pour cela, on possède les variables, souvenez vous, "id", "x" et "y". A la fin, on change de scène :
Page vue 7509 fois | Auteur : Samarium

