TP : Le joueur personnalise le héros.
But : Le joueur pourra, via des fenêtres de sélection, choisir l'habillement du héros. Ce TP n'ira pas jusqu'à enregistrer le héros afin de jouer avec (sera vu plus tard)



Ce tutorial est très bien puisqu'il est répétitif ... rien de mieux pour rentrer dans la tête la notion de scène, Sprite et fenêtre de sélection.
Les ressources : Templates RMXP
Ce que nous aurons besoin :

- Une fenêtre de sélection principale qui sera toujours visible
- 2 fenêtres de sélection cachées au départ dont une fenêtre pour sélectionner la tête et l'autre le corps. La fenêtre sera visible seulement quand on choisit celle ci dans la fenêtre de sélection principale
- Un Sprite pour la tête du héros
- Un Sprite pour le corps du héros
- Et le tout dans une scène :)
I) La structure de notre classe.
La classe est une scène. Nous allons l'appeler "Scene_Character_Custom". Nous allons avoir 5 méthodes :
- "main" : comme d'habitude. On va initialiser le tout dedans.
- "update" : sans surprise : les mises à jour du tout.
- "update_command" : Pour la fenêtre de sélection principal : interactivité
- "select_tete" : quand le joueur sera sur la fenêtre de sélection "Tête"
- "select_corps" : quand le joueur sera sur la fenêtre de sélection "Corps"
Voici notre classe :
II) La méthode "main"
a) Fenêtre de sélection principale
C'est la méthode la plus longue à écrire. Nous allons créé les fenêtres comme d'habitude. On va commencer à faire la fenêtre de sélection principale :
Rien de nouveau. On fait une fenêtre de sélection avec les différentes commandes. La nouveauté, peut être, intervient avec les méthodes "x" et "y" qu'on applique sur "@command_window_principal". On fait, cela permet juste de positionner la fenêtre sur l'écran.
Mais, on le fait pas avec "super" dans les classes "Window" ?
Si, on peut le faire. Mais ici c'est une autre manière : plus simple car cela évite de réécrire des classes "Window".
b) Fenêtre de sélection "Tête"
Passons à notre deuxième fenêtre de sélection,la fenêtre "Tête" :
Il y a déjà plus de chose, n'est ce pas ? ^^.
Le premier tableau nommé "array_command_tete" contient les commandes comme la première fenêtre créée. Le deuxième tableau contient les images respectives aux commandes. Ainsi, "nom de l'image tête 1" sera pour la commande "Blond" ...etc. Ce tableau, on s'en servira plus tard.
Attention : N'oubliez pas de mettre un "@" à la variable "array_filename_tete" car on se servira de cette variable dans d'autres méthodes de cette classe.
Remarquez ensuite que pour positionner cette fenêtre sur l'ordonnée Y de la fenêtre, on utilise "@command_window_principal.width + 10". Cela signifie que vous prenez la largeur de fenêtre de sélection principale et vaut rajouter 10. ça le place automatiquement en dessous de la fenêtre de sélection principale sans la superposer.
Enfin, voici deux codes importants :
"active" permet d'activer ou non le curseur sur la fenêtre. Ainsi quand la fenêtre n'est plus active, le joueur ne plus plus déplacer le curseur.
b) Fenêtre de sélection "Corps"
Maintenant, créons la troisième fenêtre de sélection, la fenêtre "Corps". Si vous avez compris, vous pouvez la faire toute seule. C'est la même démarche que ci-dessus :
Pour la position Y, on a donné la même valeur que la fenêtre de sélection "Tête" pour que ces deux fenêtres soient à la même hauteur.
d) Les Sprites "Tête" et "Corps"
Cela sera très rapide. Il suffit de créer deux Sprites et de les positionner :
Mais ... on ne mets pas de "Bitmap" ?
Vous pouvez mettre un Bitmap par défaut mais celui ci est facultatif. En fait, pour changer le Sprite, nous allons changer tout bêtement le Bitmap du Sprite (plus tard)
e) La fin de "main"
Pour finir la méthode "main", nous allons faire le fameux code qui faut à chaque fois mettre dans une scène :
Note : On vérifie que les deux Bitmap des deux Sprites ne sont pas égal à "nil" pour les supprimer (sinon cela provoquera une erreur)
II) La méthode "update"
Cette méthode, déjà vu plusieurs fois, mettra à jour les fenêtres :
Ce qui va plus nous intéresser, c'est la condition :
=> Si la fenêtre de sélection principal est active (qu'on peut bouger le curseur) alors on appelle la méthode "update_command".
=> Sinon si la fenêtre de sélection "Tête" est active alors on appelle la méthode "select_tete".
=> Sinon si la fenêtre de sélection "Corps" est active alors on appelle la méthode "select_corps".
Selon, la fenêtre active, on appellera sa méthode qui permettra de faire les actions ce celle ci.
III) La méthode "update_command"
La méthode "update_command" intervient si le joueur est sur la fenêtre principal (donc qu'elle est active). Comme on l'a vu pour les fenêtres de sélection, on va prendre l'index de la sélection et faire les instructions :
Pas de nouveauté pour la démarche. Quand le joueur appuie sur Entrée, on désactive automatiquement la fenêtre principale : le joueur ne peut plus bouger le curseur. Ensuite, on regarde qu'est ce que le joueur a sélectionné. Dans ce cas, on active la nouvelle fenêtre ("Tête" ou "Corps") et on la rends visible. Ainsi, le joueur pourra librement bouger le curseur dans la nouvelle fenêtre qui a apparut mais plus dans la fenêtre principale.
IV) La méthode "select_tete"
Imaginons que le joueur a sélectionné ci-dessus la fenêtre "Tête". Dans ce cas, la fenêtre "Tête" est active mais plus (je me répète) la fenêtre principale donc dans la méthode "update", ça sera maintenant "select_tete" qui sera appelé.
Voici comment commence la méthode "select_tete" :
Et c'est là qu'intervient le changement de Sprites ^^. On va donner au Bitmap du Sprite "Tête", l'image dans le tableau créé dans "main" selon l'index du curseur.
Note : "RPG::Cache.picture(nom_image)" revient à faire "Bitmap.new(Graphics/Pictures/nom_image)"
Pour terminer la méthode "select_tete" :
Si le joueur appuie sur "Echap" ou "B", on va faire le processus inverse de tout à l'heure : on active la fenêtre principale et on désactive cette fenêtre et on la cache. Du coup, le joueur pourra re choisir dans la fenêtre principale la tête ou le corps du héros. Notez que le Sprite disparait pas ! Seulement la fenêtre, évidemment.
V) La méthode "select_corps"
La dernière méthode permettra au joueur de choisir le corps du héros. C'est strictement la même chose que ci-dessus. Normalement, vous êtes capable de faire cette méthode tout seul ^^ :
VI) Conclusion
Si vous avez compris le changement de fenêtres avec "active" et la visibilité avec "visible", vous êtes capables de faire des scènes déjà intéressantes :) Sachez que le script de base "Scene_Menu" est la même chose que ci-dessus même en plus simple, peut être. Vous voyez : en quelques tutoriels, on est capable de faire des scripts ^^
Page modifiée (1 fois) le 30 Octobre 2008 à 12h 31 | Page vue 7848 fois | Auteur : Samarium

