- Code:
-
#==============================================================================
# ■ Window_Gold
#------------------------------------------------------------------------------
# ゴールドを表示するウィンドウです。
#==============================================================================
class Window_Gold < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 0, 160, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
cx = contents.text_size($data_system.words.gold).width
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
self.contents.font.color = system_color
self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2)
end
end
Let's go pour le décortiquage ^^
commençons ligne 7 :
[CLASS]
Voici la class de notre fenêtre,
Classes et Objets par Tonyryu pour ceux qui désirent savoir ce qu'est précisément une classe.
Ici notre classe est Window_Gold, nous pouvons donc appeler la fenêtre avec Window_Gold.new
Ensuite, notre fenêtre hérite de Window_Base, contenant toutes les méthodes propres aux fenêtres (par défaut).
Pour faire un parallèle avec le cours de Tonyryu, Window_Base est un peu comme la marque et Window_Gold la voiture, c'est à dire qu'elle hérite des caractéristiques et des signatures de la marque.
De la même façon, d'autre fenêtres héritent de Window_Base, elles ont donc en quelque sorte la même marque et marque de fabrique ^^
[/CLASS]
[INITIALIZE]
Ici, notre voiture a quelques petites caractéristiques, toutes enregistrées dans la méthode initialize, méthode qui se lance automatiquement au démarrage de la voiture ^^
On va tout décrire en détail ^^
(SUPER)
Super, la superbe méthode ^^
C'est le fabricant qui nous la fournit ^^
Les données de base d'une voiture !
D'abord, sa position x (premier argument, le premier zéro de (0,0,160,64))
Ensuite, sa position y (second argument, le second zéro de (0,0,160,64))
Ensuite, sa largeur (troisième argument, le 160)
Et enfin sa hauteur (dernier argument, le 64) [si vous vous représentez la voiture du dessus, c'est la longueur de celle-ci
]
Voilà les données constructeur ^^
(/SUPER)
(BITMAP)
- Code:
-
self.contents = Bitmap.new(width - 32, height - 32)
Deuxième étape de l'initialize, la création de la zone habitable
Le Bitmap dans la fenêtre est la zone sur laquelle on peut afficher.
On laisse par défaut 16 pixels dans chaque direction pour afficher le windowskin. [donc 32 en largeur et hauteur]
Les informations à afficher seront à mettre dans contents qui appartient à la fenêtre (d'où le fait que la zone d'affichage, le bitmap, soit self.contents) ^^
[Tout ce que contiendra la fenêtre sera dans self.contents dans cet exemple]
(/BITMAP)
(FONT & SIZE)
Après le Bitmap, on rencontre le self.contents.font.name et self.contents.font.size.
Pour la plupart, vous devez savoir ce que ça signifie (si vous vous y connaissez vraiment un minimum en scripts ou en anglais ^^)
Pour changer la police dans cette fenêtre, il faut changer la valeur de self.contents.font.name par le nom de la police désirée entre parenthèses. Pour Arial : self.contents.font.name = "Arial".
Pour changer la taille de la police, changez la valeur affectée, par exemple : self.contents.font.size = 18 [ma taille favorite
]
(/FONT & SIZE)
[/INITIALIZE]
Juste après cette ligne, on se reporte à la méthode refresh,
- Code:
-
refresh
renvoie en effet au contenu de
- Code:
-
def refresh
[REFRESH]
Voici ce qui nous importe ^^
(SELF.CONTENTS.CLEAR)
D'abord, la ligne culte ! ^^'
- Code:
-
self.contents.clear
C'est simple, dès que vous commencez la méthode refresh, vous devez la mettre ^^
À quoi bon ?
Et bien quand on initialise la fenêtre et qu'on rajoute des données, on aime ne plus voir les anciennes ^^
Hors si la fenêtre était déjà active et qu'on en lance une nouvelle instance, on effacera dès le refresh les anciennes données avec cette ligne.
(/SELF.CONTENTS.CLEAR)
Suite,
- Code:
-
cx = contents.text_size($data_system.words.gold).width
Vous pouvez observer ici l'affectation d'une valeur à une variable ^^
Ah mais oui, je ne vous en ai pas parlé !!!
On rattrapera ça très vite, je vous ferais un résumé sur les variables et les opérateurs.
Ici on affecte à la variable cx la largeur du mot contenu dans $data_system.words.gold (soit votre "Or" ou autre)
Il existe en effet une méthode text_size ^^ [je vous laisse observer la construction, on utilise contents pour appeler la méthode depuis la fenêtre et donc dans Window_Base.]
[Pour ceux qui voudraient comprendre plus, la méthode text_size demande pour argument une suite de caractère ici enregistrée dans $data_system,
ensuite elle donne deux solutions : height ou width, la largeur ou la hauteur du texte (ici la largeur).
La suite !
(DRAW_TEXT & COLOR)
Deux autres cultes ! ^^
D'abord, on va regarder le color,
Vous le trouverez toujours précédent le texte dont on choisit la couleur.
- Code:
-
self.contents.font.color = normal_color
Ici rien de compliqué, on définit la valeur de la couleur (color) de la police (font) du contenu (contents) de la fenêtre (self) comme étant la couleur enregistrée en tant que normal_color dans Window_Base.
Celle-ci pourrait s'écrire Color.new(255,255,255), en fait c'est du blanc ^^
Alors voyez-vous ça ^^
J'ai mis le code pour mettre une police ! ^^^
le contenu de self.contents.font.color peut être égal, soit à une couleur enregistrée par défaut, donc normal_color, system_color, disabled_color (me semble) soit par une couleur de votre choix !
Pour cela, rien de compliqué, il faut remplacer ce qui suit le = par Color.new(R,G,B,O)
R, G, B, O ? O_o
Red Green Bleu et Opacity ça vous va ? ^^
C'est un code couleur en RGB.
Les valeurs peuvent aller de -255 à 255 pour chacune des valeurs. [si vous rencontrez des problèmes en négatif, restez de 0 à 255]
La suite ^^
- Code:
-
self.contents.font.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
Voici notre méthode draw_text ^^
Elle a plusieurs arguments comme vous pouvez le voir !
D'abord, la position x à partir de laquelle commence le texte (ici le 4)
Ensuite, la position y à partir de laquelle commence le texte (le 0)
Encore ensuite, 120-cx-2, là on a le droit à une coordonnée x spéciale ^^
Ensuite on retrouve la largeur du texte,
Ici 120-2-cx [cx qui est la largeur du terme employé pour la monnaie]
Ensuite, on retrouve la hauteur du texte, ici 32.
Enfin, il nous reste le texte en question :
Par exemple nous avons :
- Code:
-
$game_party.gold.to_s
Ici notre texte est la suite de caractères enregistrée dans $game_party.gold ^^
Soit "Or" si vous l'avez appelé ainsi.
Vous pouvez appeler une variable en l'intégrant au string (rajouter .to_s)
Par exemple pour une variable de jeu, on peu dire : $game_variables[id].to_s
Voici donc.
Evidemment, si vous le désirez mettez votre texte entre parenthèses et il affichera ce texte, par exemple pour afficher Arial, mettez "Arial".
Dernier argument,
L'alignement ^^
0 à gauche, 1 au centre, 2 à droite.
Voici pour draw_text.
(/DRAW_TEXT & COLOR)
[/REFRESH]
Et bien voilà, c'est ici que nous terminons l'analyse de Window_Gold ^^
Alors pour ce qui est des end, je vous donne l'astuce :
un def ... se termine par un end.
un class se termine par un end.
un if, case, when, unless également.
J'en passe ^^