V. Notes générales sur Gosu▲
Toutes les fonctions et les classes sont contenues dans le module Gosu.
Lorsqu'un paramètre de type Gosu::Color est demandé, on peut mettre à la place un entier de la forme : 0xAARRGGBB (ici en hexadécimal).
- A = Code alpha (255 : aucune transparence, 0 : transparence totale)
- R = Code pour le rouge
- G = Code pour le vert
- B = Code pour le bleu
On peut utiliser une couleur lors du dessin pour modifier la couleur originale de l'image. Néanmoins, cela ne peut que réduire les codes A, R, G, B de ces images : pour R, G, B cela aura tendance à faire tendre l'image vers le sombre et pour A cela fera tendre l'image vers la transparence. Cet effet peut être utilisé pour changer la couleur d'une image blanche (voir l'exemple final, où des étoiles blanches sont dessinées de toutes les couleurs).
Pour les paramètres de mode pour les fonctions de dessins, les valeurs possibles sont :
- :default ;
- :additive.
Profondeur d'un dessin : lorsque deux dessins occupent la même place, il faut déterminer lequel écrase l'autre : pour cela certaines fonctions permettent de spécifier une profondeur : le dessin de profondeur la plus grande sera dessiné sur tous les autres. Si deux dessins ont la même priorité, le dernier dessiné écrasera l'autre (voir l'axe de profondeur).
Paramètre facultatif : tous paramètres ayant une valeur par défaut (=valeur) peut être ignoré lors de l'appel : il aura alors sa valeur par défaut. Néanmoins, seuls les derniers paramètres d'une fonction peuvent être ignorés :
f(a, b=0, c=3)
L'appel peut être :
f(4) # a = 4, b = 0, c = 3
f(2, 3) # a = 2, b = 3, c = 3
f(4, 5, 2) # a = 4, b = 5, c = 2
On ne peut pas donner une valeur à c tout n'en donnant pas à b !
Les angles dans Gosu :
Gosu n'utilise pas les radians comme la bibliothèque C standard. Les angles dans Gosu sont compris entre 0 et 360 (automatiquement une valeur négative ou supérieure à 360 est transformée). Un angle de 0 signifie « orienté vers le haut ». Les angles augmentent dans le sens des aiguilles d'une montre.
L'axe de profondeur (Z-Ordering) : toutes les opérations de dessins dans Gosu acceptent en plus des arguments de position x et y un argument de profondeur appelé z : c'est un entier entre 0 et 255. Les objets dessinés avec une profondeur plus grande seront dessinés sur les objets ayant une profondeur plus petite. Si deux objets ont la même position z, ils seront dessinés dans l'ordre d'appel des fonctions. Si vous ne voulez pas utiliser l'axe des profondeurs, mettez simplement z à 0 tout le temps.
Bordure floue ou nette : lors du chargement des images, on peut spécifier si les contours de l'image doivent rester nets ou pas. En effet, à cause de l'accélération 3D, les contours des images ont tendance à devenir flous et à « fondre » avec le décor. Cela est parfois est un désavantage (par exemple pour les tests). Généralement, pour obtenir une image plus belle, on prendra des bordures floues. Ce paramètre est sous la forme d'un booléen :
- Vrai = bordure nette ;
- Faux = bordure floue.
Coins d'une image : Certaines fonctions attendent des arguments pour les 4 coins d'un rectangle (exemple : Window#draw_quad). L'ordre des coins est important lors du passage des paramètres. Le coin n° 1 sera celui en haut à gauche, le coin n° 2 en haut à droite, le coin n° 3 en bas à gauche et la 4e en bas à droite (sens de lecture normale : de haut en bas, de droite à gauche).
Couleurs transparentes : lorsque l'on affiche une image, on veut généralement qu'elle se fonde dans le décor. Parfois notre image (toujours contenue dans un rectangle) n'occupe pas tout le rectangle : que faire des pixels en trop pour qu'il ne s'affiche pas ?
Et bien tout simplement un utilisant la couleur de code RGB (255,0,255) (violet-rose). Cette couleur, généralement peu utilisée dans les jeux, sera considérée par Gosu comme transparente ! (pour les images de type bitmap. Pour les images de type png, on mettra l'alpha à 0).
VI. Les classes de Gosu▲
VI-A. Color▲
VI-A-1. initialize(argb)▲
- argb : un entier sous la forme 0xAARRGGBB (cf. notes).
VI-A-2. initialize(a, r, g, b)▲
- a : code alpha
- r : code pour le rouge
- g : code pour le vert
- b : code pour le bleu
VI-B. Font▲
VI-B-1. initialize(window, font_name, height)▲
- window [Gosu::Window] : la fenêtre Gosu dans laquelle la font sera utilisée
- font_name [chaîne] : nom de la fonte
- height [entier] : taille de la fonte
Attention, font_name doit être un nom de police de caractère reconnue par le système d'exploitation. Utilisez default_font_name pour avoir un nom compatible sur tous les systèmes.
VI-B-2. height▲
- retourne la taille de la fonte
VI-B-3. text_width(text, factor_x=1)▲
- Returns the width in pixels the given text would span.
VI-B-4. draw(text, x, y, z=0, factor_x=1, factor_y=1, color=0xffffffff, mode=:default)▲
- text [chaîne] : texte à écrire
- x [entier] : coordonnée x où écrire ce texte
- y [entier] : coordonnée y où écrire ce texte
- z [entier] : profondeur du dessin du texte
- factor_x [entier] : facteur multiplicatif horizontal
- factor_y [entier] : facteur multiplicatif vertical
- color [Gosu::Color ou un entier] : couleur du texte (blanc par défaut)
- mode [paramètre de mode] : mode de dessin
Dessine un texte à partir d'un point.
VI-B-5. draw_rel(text, x, y, z, rel_x, rel_y, factor_x=1, factor_y=1, color=0xffffffff, mode=:default)▲
- text [chaîne] : texte à écrire
- x [entier] : coordonnée x où écrire ce texte
- y [entier] : coordonnée y où écrire ce texte
- z [entier] : profondeur du dessin du texte
- rel_x [flottant] : position du texte par rapport au point (voir note).
- rel_y [flottant] : position du texte par rapport au point (voir note).
- factor_x [entier] : facteur multiplicatif horizontal
- factor_y [entier] : facteur multiplicatif vertical
- color [Gosu::Color ou un entier] : couleur du texte (blanc par défaut)
- mode [paramètre de mode] : mode de dessin
Dessine un texte relativement à un point.
- Si relX = 0.0, le texte sera dessiné à la droite du point
- Si relX = 1.0, le texte sera dessiné à la gauche du point
- Si relX = 0.5, le texte sera centré horizontalement sur le point
- Si relY = 0.0, le texte sera dessiné en haut du point
- Si relY = 1.0, le texte sera dessiné en bas du point
- Si relY = 0.5, le texte sera centré verticalement sur le point
Toutes les valeurs sont possibles our relX et relY, ne sont mentionnées ici que les valeurs significatives.
VI-C. Image▲
Une image pour notre application. Gosu gère les images aux formats BMP ou PNG.
VI-C-1. initialize(window, filename, hard_borders)▲
- window [Gosu::Window] : la fenêtre du jeu de laquelle dépendra l'objet créé
- filename [chaîne] : le nom du fichier où l'image est stocké
- hard_borders [booléen] : contour de l'image dur ou flou
VI-C-2. initialize(window, filename, hard_borders, srcX, srcY, srcWidth, srcHeight)▲
- window [Gosu::Window] : la fenêtre du jeu de laquelle dépendra l'objet créé
- filename [chaîne] : le nom du fichier où l'image est stocké
- hard_borders [booléen] : contour de l'image dur ou flou
- srcX [entier] : coordonnée x du rectangle de découpe (voir note)
- srcY [entier] : coordonnée y du rectangle de découpe (voir note)
- srcWidth [entier] : largeur du rectangle de découpe (voir note)
- srcHeight [entier] : hauteur du rectangle de découpe (voir note)
En utilisant le constructeur rattaché à cette fonction, on peut spécifier un rectangle de découpe dans l'image source : notre objet Image ne contiendra que le rectangle spécifié.
VI-C-3. width▲
- Retourne [entier]
Retourne la largeur de l'image.
VI-C-4. height▲
- Retourne [entier]
Retourne la hauteur de l'image.
VI-C-5. draw(x, y, z=0, factor_x=1, factor_y=1, color=0xffffffff, mode=:default)▲
- x [entier] : coordonnée x à partir de laquelle l'image sera dessinée
- y [entier] : coordonnée y à partir de laquelle l'image sera dessinée
- z [entier] : profondeur du dessin
- factor_x [entier] : facteur multiplicatif horizontal du dessin
- factor_y [entier] : facteur multiplicatif vertical du dessin
- color [Gosu::Color ou entier] : couleur
- mode [paramètre de mode] : mode de dessin
Dessine l'image aux coordonnées spécifiées.
VI-C-6. draw_rot(x, y, z=0, angle=0, center_x=0.5, center_y=0.5, factor_x=1, factor_y=1, color=0xffffffff, mode=:default)▲
- x [entier] : coordonnée x à partir de laquelle l'image sera dessinée
- y [entier] : coordonnée y à partir de laquelle l'image sera dessinée
- z [entier] : profondeur du dessin
- angle [flottant] : l'angle de dessin
- center_x [flottant] : coordonnée x du point de rotation (par rapport à l'image)
- center_y [flottant] : coordonnée y du point de rotation (par rapport à l'image)
- factor_x [entier] : facteur multiplicatif horizontal du dessin
- factor_y [entier] : facteur multiplicatif vertical du dessin
- color [Gosu::Color ou entier] : couleur
- mode [paramètre de mode] : mode de dessin
Dessine l'image aux coordonnées spécifiées selon l'angle voulu.
center_x et center_y ne sont pas 0 par défaut. Pour une rotation « sur place », mettre ces deux paramètres à 0.
VI-C-7. from_text(window, text, font_name, font_height, line_spacing, max_width, align)▲
[méthode de classe]
- window [Gosu::Window] : la fenêtre Gosu dans laquelle la font sera utilisée
- text [chaîne] : texte servant à créer l'image
- font_name [chaîne] : nom de la fonte
- height [entier] : taille de la fonte
- line_spacing [entier] : surplus à ajouter à la hauteur de la fonte pour avoir la hauteur complète d'une ligne
- max_width [entier] : largeur maximale de l'image
- align [Valeurs spéciales] : alignement du texte (voir note).
- Retourne [Gosu::Image]
Fait une image à partir d'un texte.
align doit prendre une valeur parmi :
- :left
- :right
- :center
- :justify
VI-C-8. load_tiles(window, filename, tile_width, tile_height, hard_borders)▲
[méthode de classe]
- window [Gosu::Window] : la fenêtre Gosu dans laquelle la font sera utilisée
- filename [chaîne] : nom du fichier ou le graphisme sera pris
- tile_width [entier] : largeur d'un tile en pixels ou nombre de colonnes
- tile_height [entier] : hauteur d'un tile en pixels ou nombre de lignes
- hard_borders [booléen] : contour de l'image dur ou flou
- Retourne [Array de Gossu::Image]
Permet de créer une image à partir d'un fichier de « tile ». Généralement, cela sert si dans un fichier vous avez plusieurs images et que vous voulez les manipuler séparément dans Gosu.
VI-D. Sample▲
Un Sample est un effet sonore court, généralement utilisé pour les effets sonores tels que des tirs, des explosions…
VI-D-1. initialize(window, filename)▲
- window [Gosu::Window] : la fenêtre du jeu de laquelle dépendra l'objet créé
- filename [chaîne] : le nom du fichier où le son est stocké
VI-D-2. play(vol=1, speed=1)▲
- vol [flottant] : volume auquel sera joué le morceau (de 0.0 = silence à 1.0 = volume maximum)
- speed [flottant] : vitesse à laquelle sera jouée le morceau (voir la note)
Joue l'effet sonore.
La vitesse est limitée seulement par les capacités de la librairie FMOD : cela peut aller de très hautes valeurs jusqu'à des valeurs basses. Utilisez 1.0 pour une vitesse normale.
VI-D-3. play_pan(pan=0, vol=1, speed=1)▲
- vol [flottant] : volume auquel sera joué le morceau (de 0.0 = silence à 1.0 = volume maximum)
- speed [flottant] : vitesse à laquelle sera jouée le morceau (voir la note)
- pan [flottant] : Le paramètre pan est un flottant compris entre -1.0 (gauche) jusqu'à +1.0 (droite) pour avoir des effets stéréos (son venant d'une direction).
Joue l'effet sonore.
La vitesse est limitée seulement par les capacités de la librairie FMOD : cela peut aller de très hautes valeurs jusqu'à des valeurs basses. Utilisez 1.0 pour une vitesse normale.
VI-E. Song▲
Un Song est un effet sonore long. Généralement utilisé pour la musique du jeu.
VI-E-1. initialize(window, filename, type)▲
- window [Gosu::Window] : la fenêtre du jeu de laquelle dépendra l'objet créé
- filename [chaîne] : le nom du fichier où le son est stocké
- type [Valeur spéciale] : soit : :stream (OGG…) ou :module (MID, IT, MOD, X3M…)
VI-E-2. play▲
Joue la musique.
VI-E-3. stop▲
Arrête la musique (si elle en train d'être jouée).
VI-E-4. playing?▲
- Retourne [booléen]
Retourne vrai si la musique est en train d'être jouée, faux sinon.
VI-F. Window▲
Élément central de Gosu, la fenêtre représente la zone où vous afficherez tous vos graphismes.
VI-F-1. initialize(width, height, fullscreen, update_interval)▲
- width [entier] : largeur
- height [entier] : hauteur
- fullscreen [booléen] : mode plein écran ou fenêtré
- update_interval [entier] : dans de rafraîchissement de la fenêtre (en millisecondes)
- * Avoir 2 ou plus fenêtres et charger des Sample ou des Song sur les deux crashera l'application. Si vous voulez rouvrir votre fenêtre de jeu, assurez-vous bien que la précédente est morte.
- * Hauteur et largeur doivent correspondre à un mode d'affichage disponible, sinon l'application crashera. Ex. : 640,480 800,600 1024,768
VI-F-2. caption▲
- Retourne [chaîne]
Permet d'obtenir le titre de la fenêtre. « » par défaut.
VI-F-3. caption= une chaîne▲
Permet définir le titre de la fenêtre.
VI-F-4. show▲
Ouvre la fenêtre
VI-F-5. close▲
Ferme la fenêtre
VI-F-6. visible?▲
- Retourne [booléen]
Retourne si la fenêtre est visible ou pas.
VI-F-7. update▲
Fonction appelée automatiquement pour faire « vivre » le jeu. Vous la surchargez pour mettre dedans tous ce qui ce passe dans votre jeu.
VI-F-8. draw▲
Fonction de dessin du monde du jeu dans la fenêtre, appelé automatiquement. Doit être surchargée pour que vous définissiez l'affichage de votre jeu.
VI-F-9. button_down(id)▲
- id [constante de Gosu::Button]
Fonction appelée lorsque l'utilisateur appuie sur un bouton. Le paramètre id permet de déterminer quel bouton a été pressé.
VI-F-10. button_up(id)▲
- id [constante de Gosu::Button]
Fonction appelée lorsque l'utilisateur relâche un bouton. Le paramètre id permet de déterminer quel bouton a été relâché.
VI-F-11. draw_quad(x1, y1, c1, x2, y2, c2, x3, y3, c3, x4, y4, c4, z=0, mode=:default)▲
- xi [entier] : coordonnée x du point i
- yi [entier] : coordonnée y du point i
- ci [Gosu::Color ou un entier] : couleur du point i
- z [entier] : profondeur
- mode [paramètre de mode] : mode de dessin
Dessine un quadrilatère dans la fenêtre.
VI-F-12. mouse_x▲
- Retourne [entier]
Retourne la coordonnée x de la souris.
VI-F-13. mouse_y▲
- Retourne [entier]
Retourne la coordonnée y de la souris.
VI-F-14. button_down?(id)▲
- Retourne [booléen]
Retourne vrai si le bouton id est pressé, faux sinon.
VI-F-15. button_id_to_char(id)▲
- Retourne [caractère]
Retourne le caractère correspondant à l'id du bouton ou "" si le bouton ne correspond pas à un caractère.
VI-F-16. char_to_button_id(char)▲
- char [caractère] : caractère dont on doit trouver le bouton
- Retourne [constante de Gosu::Button]
Retourne l'id du bouton correspondant au caractère, ou 0 si n'y en a pas.
VI-F-17. width▲
Retourne la largeur de la fenêtre.
VI-F-18. height▲
Retourne la hauteur de la fenêtre.
VII. Fonctions libres du module▲
VII-A. offset_x(angle, dist)▲
- angle [flottant] : direction du mouvement (en degrés)
- dist [entier] : distance à parcourir dans cette direction
- Retourne [entier]
Retourne la distance horizontale (sur l'axe des abscisses) entre le point d'origine et le point d'arrivée en bougeant selon la direction de l'angle et de la distance passés en paramètre.
VII-B. offset_y(angle, dist)▲
- angle [flottant] : direction du mouvement (en degrés)
- dist [entier] : distance à parcourir dans cette direction
- Retourne [entier]
Retourne la distance verticale (sur l'axe des ordonnées) entre le point d'origine et le point d'arrivée en bougeant selon la direction de l'angle et de la distance passés en paramètre.
VII-C. angle(x1, y1, x2, y2)▲
- xi [entier] : coordonnée x du point i
- yi [entier] : coordonnée y du point i
- Retourne [flottant]
Retourne l'angle entre les deux points en degrés, où 0.0 signifie que l'objet 2 est au-dessus de l'objet 1. Retourne 0 si les deux points sont égaux.
VII-D. distance(x1, y1, x2, y2)▲
- xi [entier] : coordonnée x du point i
- yi [entier] : coordonnée y du point i
- Retourne [entier]
Retourne la distance entre les deux points.
VII-E. milliseconds▲
- Retourne [entier]
Retourne, en millisecondes, une valeur depuis l'instant t. L'instant t n'est pas connu, en fait cette fonction sert pour savoir combien de temps s'est écoulé entre deux appels à cette fonction.
VII-F. default_font_name▲
- Retourne [chaîne]
Retourne le nom d'une police de caractère qui marchera sur tous les systèmes d'exploitation.
VIII. Constantes dans le module Gosu::Button▲
-
Boutons du Clavier :
- Kb0
- Kb1
- Kb2
- Kb3
- Kb4
- Kb5
- Kb6
- Kb7
- Kb8
- Kb9
- KbBackSpace
- KbDelete
- KbDown
- KbEnd
- KbEnter
- KbEscape
- KbF1
- KbF10
- KbF11
- KbF12
- KbF2
- KbF3
- KbF4
- KbF5
- KbF6
- KbF7
- KbF8
- KbF9
- KbHome
- KbInsert
- KbLeft
- KbLeftAlt
- KbLeftControl
- KbLeftShift
- KbNumpad0
- KbNumpad1
- KbNumpad2
- KbNumpad3
- KbNumpad4
- KbNumpad5
- KbNumpad6
- KbNumpad7
- KbNumpad8
- KbNumpad9
- KbNumpadAdd
- KbNumpadDivide
- KbNumpadMultiply
- KbNumpadSubtract
- KbPageDown
- KbPageUp
- KbPause
- KbReturn
- KbRight
- KbRightAlt
- KbRightControl
- KbRightShift
- KbSpace
- KbTab
- KbUp
-
Boutons de la souris :
- MsLeft
- MsMiddle
- MsRight
- MsWheelDown
- MsWheelUp
-
Boutons du joystick:
- GpButton0
- GpButton1
- GpButton10
- GpButton11
- GpButton12
- GpButton13
- GpButton14
- GpButton15
- GpButton2
- GpButton3
- GpButton4
- GpButton5
- GpButton6
- GpButton7
- GpButton8
- GpButton9
- GpDown
- GpLeft
- GpRight
- GpUp