IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Gosu : une bibliothèque pour faire des jeux avec Ruby

Image non disponible


précédentsommairesuivant

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 :

 
Sélectionnez
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 :

Image non disponible

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).

Image non disponible

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 ?

Image non disponible

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

précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 Xitog. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.