Partagez
Aller en bas
babausse
babausse
Membre

Nombre de messages : 86
Age : 30
Localisation : Picardie indépendante !
Distinction : aucune
Date d'inscription : 23/11/2008
http://arkaan.forums-rpg.com/

[résolu][ruby] Une question de syntaxe Empty [résolu][ruby] Une question de syntaxe

le Ven 11 Déc 2009 - 20:41
Bonjour tout le monde.

M'étant récemment mis au ruby, je me suis lancé dans mon premier script. Au niveau de l'algorithme de la bête, pas de problème ( merci le DUT informatique ... ), niveau syntaxe du langage en lui-même la documentation suffit amplement ( ruby n'est vraiment pas le langage le plus simple et c'est génial :p ); néanmoins j'ai du mal avec une méthode en particulier. En effet j'aimerais afficher une image du dossier" pictures" par le biais d'un script, j'ai donc utilisé l'appel de méthode suivant:

Code:
$picture = Game_Picture.new
picture.show("toto",origin,0,0,1,1,255,blend_type)

la définition de la méthode étant: def show(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type)

Néanmoins, et malheureusement pour moi, ça ne marche pas, il me dit que je ne donne pas le bon nombre d'arguments. Je pense que c'est parce que je n'ai pas précisé deux des attributs, néanmoins je ne sais pas à quoi ils servent:
  • origin est signalée comme étant l'origine, sans plus de précision, c'est un point qu'il faut nommer par une chaine, des coordonnées, un entier ?
  • qu'est exactement le blend_type ?


Merci de vos éventuelles réponses et bonne soirée !
Berka
Berka
Administrateur

Nombre de messages : 1832
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

[résolu][ruby] Une question de syntaxe Empty Re: [résolu][ruby] Une question de syntaxe

le Ven 11 Déc 2009 - 23:37
déjà, il y a un problème d'instance:
$picture est une instance de la classe Game_Picture
elle contient donc l'objet Game_Picture.
Si tu veux appeler la méthode show de cet objet (Game_Picture#show), il faut que tu passes par l'instance:

Code:
$picture = Game_Picture.new
$picture.show("toto",origin,0,0,1,1,255,blend_type)

Ensuite, je pars du principe que tu as initialisé les variables locales origin et blend_type
origin représente le centre de gravité de l'image (si == 0 c'est le coin haut/gauche de l'image, si différent, c'est le centre de l'image). Ce point est utile pour les rotations d'images, uniquement

blend_type : le type de transparence (assombri, éclairci)

Pour ton probleme :
les arguments de #show sont corrects.
pour trouver l'erreur, il faut bien observer la classe Game_Picture et connaitre le fonctionnement des classes ruby:
tu appelles une classe par la méthode new:
classe = Classe.new
cette méthode est cachée, elle est située dans la classe Class (non visible)
elle a pour but de lancer la sous classe de Class, celle que l'on veut appeler. Elle dirige alors l'exécution vers sa méthode initialize en effectuant un transfert de parametres.

bref, en gros tu dois avoir le meme nombre d'arguments apres Classe.new(...) que dans la méthode initialize(...) de la classe.

la méthode initialize de Game_Picture admet un argument, or tu n'en as mis aucun.

désolé, j'ai pas été vraiment clair,

berka
babausse
babausse
Membre

Nombre de messages : 86
Age : 30
Localisation : Picardie indépendante !
Distinction : aucune
Date d'inscription : 23/11/2008
http://arkaan.forums-rpg.com/

[résolu][ruby] Une question de syntaxe Empty Re: [résolu][ruby] Une question de syntaxe

le Sam 12 Déc 2009 - 9:48
Bonjour.

Merci Berka, tu as été très clair rassure-toi, j'ai bien compris ton message. Commençant les scripts RPG Maker, je n'avais pas encore assimilé qu'il fallait faire attention au fait que l'instance d'une classe se lançait par la méthode initialize et qu'il fallait y faire attention, j'aurais pu tourner en rond longtemps, merci beaucoup ! Malgré tout cela, je vais essayer une autre méthode d'appel des images puisque, après divers tests, il s'avère que celle-ci mange trop de mémoire ... Je vais donc essayer de passer par la classe Sprite.

Encore merci, bonne journée !
Berka
Berka
Administrateur

Nombre de messages : 1832
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

[résolu][ruby] Une question de syntaxe Empty Re: [résolu][ruby] Une question de syntaxe

le Sam 12 Déc 2009 - 12:00
en effet le sprite assorti d'une mise en cache est la méthode la plus efficace pour afficher une image.
Petit rappel:

Code:
#instance de sprite:
@mon_sprite = Sprite.new
#positionnement du sprite
@mon_sprite.x = 64
@mon_sprite.y = 48
#ajout de bitmap (via la méthode Sprite#bitmap) avec mise en cache
@mon_sprite.bitmap = Cache.system("mon image.png")
#traitements divers sur le bitmap...
@mon_sprite.bitmap.fill_rect(0, 0, 10, 12, Color.new(255, 0, 0))
#libération du sprite (le bitmap se libère automatiquement): suppression
@mon_sprite.dispose

Voila, il faut de préférence modifier la position du sprite avant l'affichage du bitmap pour économiser du temps de calcul. Il fut aussi utiliser le cache pour éviter de recharger l'image en cas de nouvelle utilisation.

berka
babausse
babausse
Membre

Nombre de messages : 86
Age : 30
Localisation : Picardie indépendante !
Distinction : aucune
Date d'inscription : 23/11/2008
http://arkaan.forums-rpg.com/

[résolu][ruby] Une question de syntaxe Empty Re: [résolu][ruby] Une question de syntaxe

le Sam 12 Déc 2009 - 13:19
Bonjour !

J'hallucine, j'avais fait exactement la même chose avant de lire ton message, et ça ne marchait pas ... à cause d'un point remplacé par une virgule dans un appel de méthode x] ( je hais les fautes de frappe en Ruby autant que le les hais en C T-T ). Enfin en tout cas j'avais déduit ça d'un autre script ( l'écran titre animé de Moghunter x] ) mais merci beaucoup de t'être donné la peine d'écrire la façon d'afficher une image Smile

Bonne journée, Babausse.
Contenu sponsorisé

[résolu][ruby] Une question de syntaxe Empty Re: [résolu][ruby] Une question de syntaxe

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum