Accueil - Forum - Bibliothèque de ressources
____

Une fenêtre basique.



But : Vous pourrez via ce tutorial savoir créer une simple fenêtre en Ruby pour votre jeu.

1) Création de la classe

Nommez la classe et héritez la de Window_Base. Hériter notre fenêtre permettra de prendre les méthodes déjà écrites dans le script "Window_Base", particulièrement pour les dimensions de la fenêtre. Nous allons avoir 2 méthodes : "initialize" pour initialiser les variables ainsi que "refresh" pour le texte :

Code Rubyclass Window_My < Window_Base
  def initialize
 
  end
  def refresh
 
  end
end


2) Initialiser.

Dans la méthode "initialize", nous allons initialiser les dimensions de la fenêtre ainsi que la création du Bitmap et le type d'écriture.
La méthode "super" appelle la méthode qui a été définie dans la classe héritée, c'est à dire, on appelle ici la méthode "initialize" de Window_Base. Voici les paramètres :

Code super(Position X, Position Y, Largeur, Hauteur)


Enfin, on crée la Bitmap :

Code Rubyself.contents = Bitmap.new(width - 32, height - 32)


"width" est la largeur de la fenêtre
"height" est la longueur de la fenêtre

Le "contents" est la référence au bitmap (Bitmap) utilisé pour le contenu de la fenêtre. Ainsi, cela revient à dire : "Je mets un Bitmap dans cette (self) fenêtre avec une certaine taille.

Attention ! Si vous mettez une taille négative au Bitmap, vous allez avoir une erreur de ce type : RGSS Error - failed to create bitmap

Il est vrai qu'au début, on a du mal à comprendre le "Bitmap" .. et puis pourquoi on enlève 32 au dimensions de celui ci ??

Voici d'une façon imagé, l'explication du Bitmap.

Ici, en bleu, c'est la fenêtre qu'on a créé avec ces dimensions. En noir, c'est le Bitmap ! Tout sera dedans, texte, image ...etc. On enlève 32 pour faire une marge en bas et à gauche.



Si maintenant, nous mettons - 70 dans les dimensions du Bitmap :

Code Rubyself.contents = Bitmap.new(width - 70, height - 70)


Cela va donner ceci :



Enfin, si le Bitmap est plus grand que la fenêtre, donc on rajoute 70 par exemple :

Code Rubyself.contents = Bitmap.new(width + 70, height + 70)


Voici le résultat :



RPG Maker XP rajoute des flèches (qui sont dans le Windowskin) entourées en vert sur l'image ci-dessus. Remarquez qu'il y a toujours une marge entre la fenêtre et le Bitmap même si on le dépasse.

Rappelez vous, tout les éléments sont dans le Bitmap ! Ainsi, créer une fenêtre sans le Bitmap ne sert à rien.

Continuons ... nous allons mettre maintenant la taille du texte ainsi que ça police

Code Rubyself.contents.font.name = $fontface
self.contents.font.size = $fontsize


Les deux variables globales $fontface et $fontsize ont été définie dans le script Main. Ainsi, vous donnez la taille et la police au texte contenu dans ce Bitmap (= contents) de cette fenêtre (= self)

Nous allons mettre le texte, pour cela, appelons une autre méthode "Refresh". Pourquoi ? Plus tard, si vous voulez mettre à jour le texte de la fenêtre, vous ne pourrez pas appeler "initialize" (ou bien ça demanderait à rappeler à chaques fois la classe, ce qui déconseillé), il faudra appeller tout simplement "Refresh".

Voici le récapitulatif de la méthode "initialize"

Code Rubydef initialize
        # Dimension de la fenêtre
    super(0, 0, 160, 64)
        # Création du Bitmap
    self.contents = Bitmap.new(width - 32, height - 32)
        # Police et taille du texte.
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
        # Appelle la méthode "Refresh" pour initialiser le texte
    refresh
  end
 


3) Le contenu

Le contenu sera très basique : un texte :p

Tout d'abord, on va effacer ce qu'il y a dans le Bitmap avec "clear"

Code Rubydef refresh
    self.contents.clear
 
 end


Pourquoi ?

Si vous mettez un texte mais, plus tard, vous rappelez la méthode "refresh", le nouveau texte va superposer le texte si on ne mettait pas "clear". Vous pouvez tester en enlevant cette ligne de code dans le script "Window_PlayTime". Lorsque vous testez le jeu, le temps de ce dernier s'actualise, évidemment, chaque seconde mais la nouvelle seconde superpose le texte ... ce qui rend illisible le texte. Bref, en mettant "clear" sur le Bitmap, vous prendrez l'habitude d'éviter ce genre de problème.

Enfin, nous allons mettre enfin ce fameux texte :

Code self.contents.draw_text(Position X, Position Y, Largeur, Hauteur, Texte)


On affiche le texte sur les positions X et Y à partir du Bitmap et non de la fenêtre.
La largeur et la hauteur s'applique au texte. Ainsi, si la largeur par exemple est plus petite que ce qu'il faudrait, le texte sera réduit.

Voici le code final de notre fenêtre :

Code Rubyclass Window_My < Window_Base
def initialize
        # Dimension de la fenêtre
    super(0, 0, 160, 64)
        # Création du Bitmap
    self.contents = Bitmap.new(width - 32, height - 32)
        # Police et taille du texte.
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
        # Appelle la méthode "Refresh" pour initialiser le texte
    refresh
  end
 
  def refresh
    # Effacement du contenu de la fenêtre
    self.contents.clear
        # Affichage du texte
    self.contents.draw_text(0, 0, 120, 32, "Ma fenêtre")
 end
end
 
Informations
Page modifiée (1 fois) le 30 Octobre 2008 à 12h 48 | Page vue 10805 fois | Auteur : Samarium

RPG Creative version 5 - Libérez votre créativité ! ; Mai 2005 - Mai 2012
0.048s - Optimisé pour une résolution 1024*728 - Tous droits réservés.

Contact - Partenaires - Historique - A propos