| Cours #5 : Premiere approche du RGSS2. | |
|
|
Auteur | Message |
---|
Illusionniste Lv.12
Age : 34 Inscrit le : 27/12/2008 Messages : 757
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Lun 23 Fév 2009 - 13:30 | |
| ça ne change rien que ce soit au début où à la fin chez moi c'est à la fin |
|
| |
Voyageur Lv.10
Age : 42 Inscrit le : 04/12/2008 Messages : 383
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Lun 23 Fév 2009 - 13:52 | |
| Oui, dans le script corrigé que je lui ai envoyé par MP, c'etait au debut, c'est pour ça. Mais effectivement, ça ne change rien, enfin, pas là en tout cas.
ASHKA |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Dim 29 Mar 2009 - 16:43 | |
| Alors, plusieur demande, Pourriez-vous m'expliquez ces lignes : - Code:
-
@sprite.bitmap.draw_text(@sprite.bitmap.rect.set(0, 0, @w, (@h-50)/2), text.to_s,1) Là, le log il fait quoi ? Sachant que toutes les variables qu'il faut existe ! - Code:
-
if w.nil? ; @w = RPGman::LARGEUR ; else ; @w = w ; end Là les ; sa veut dire alors ou sinon x] (Façon très bizarre de faire des conditions d'ailleur) HS : Tin c'est une horreur ce script O.o C'est mal espacé et tout :depression: Dire qu'il va falloir que je le comprenne... |
|
| |
Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Dim 29 Mar 2009 - 17:01 | |
| c'est simple si on décortique: - Code:
-
@sprite.bitmap.draw_text(@sprite.bitmap.rect.set(0, 0, @w, (@h-50)/2), text.to_s,1) un sprite a été créé et instancié - Code:
-
@sprite=Sprite.new or, la classe sprite possède une méthode bitmap, appelant la classe Bitmap - Code:
-
@sprite.bitmap=Bitmap.new(32,32) or Bitmap possède une méthode draw_text, comportant comme arguments: 1) x,y,w,h ou la classe: Rect.new(x,y,w,h) qui définit le positionnement du texte à afficher 2) une chaine, donc la classe String: le texte à afficher 3) l'alignement 0:gauche 1:centré 2: droite avec 0 par défaut bon, maintenant intéressons nous au rectangle de positionnement. on sait que la classe bitmap possede une méthode nommée rect, instanciant la classe Rect (rectangle) on a donc: - Code:
-
@sprite.bitmap.rect qui renvoie un objet rect, donc un tableau de x,y,w,h or la classe Rect possède une méthode nommée set, permettant de définir un rectangle, un peu comme dans son initialisation: Rect.new(x,y,w,h) == @rect.set(x,y,w,h) sauf que là, le rectangle existe déja, vu qu'il est appelé par la classe bitmap (bitmap.rect) elle meme appelée par sprite (sprite.bitmap.rect) Voila tout ! pourquoi on a pas créé un nouvel objet Rect ? facile, ici, on modifie et on agit directement sur le bitmap instancié par sprite... __________________________________________________________ pour les ";" comme en C, ";" signifie: fin de ligne, retour à la ligne donc: - Code:
-
if a;p 'vrai';else;p 'faux';end est la meme chose que : - Code:
-
if a p 'vrai' else p 'faux end
Mais RPGman aurait du utiliser un opérateur terniaire, plus propre, plus efficace, plus pro ^^ - Code:
-
if w.nil? ; @w = RPGman::LARGEUR ; else ; @w = w ; end deviendrait: - Code:
-
w.nil? ? @w = RPGman::LARGEUR : @w = w Je sais pas si j'ai été super clair, mais je suis un peu claqué ^^ berka |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Dim 29 Mar 2009 - 17:07 | |
| Ok pour les rectangles et les triangles j'ai compris ! (Vraiment une façon bizzare de scripter lui...) Par contre - Code:
-
if a p 'vrai' else p 'faux end Là a est un interrupteur ? - Code:
-
if a == true print "vrai" else print "faux" end Et aussi, a.nil? Ca veut dire quoi O.o |
|
| |
Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Dim 29 Mar 2009 - 17:29 | |
| ah ouais, j'ai pas été très clair là-dessus ! En gros, toute variable non déclarée renvoie nil. Donc toute variable vraie renvoie true et donc pas nil, vu "qu'elle n'est pas rien" donc, en ruby on peut écrire une condition sans les mots clés nil true false: if a == true équivaut à if a if a == false équivaut à if !a ou if not a et par convention, les nom de méthodes qui se terminent par ? revoient un booléen, c'est-à-dire soit true soit false: la méthode: a.nil? evalue a et renvoie true si a = nil et false si a != nil on pourrait faire: - Code:
-
if a.nil? == true mais c'est moche et inutile berka |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Ven 1 Mai 2009 - 12:26 | |
| Et encore une question :depression: A quoi sert la methode .times ? J'ai beau chercher un peu partout je ne trouve pas à quoi ça sert ni ce que cela fait... Merci de votre aide EDIT : Sa fonctionne pas un peu comme le for ? |
|
| |
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Lun 4 Mai 2009 - 18:31 | |
| Ça dépend d'où tu la sort cette fonction.. C'ets soit la multiplication si tu sort ça de Math (ie Math.times) ou une fonction qui te donne l'heure du système... Bref, soit plus précis.. |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Lun 4 Mai 2009 - 18:41 | |
| Bah - Code:
-
var = 8 var.times { # Commande } |
|
| |
Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Mar 5 Mai 2009 - 16:14 | |
| parfaitement 'légal', Miraino.
la méthode times admet un bloc itérateur: 10.times{ #bloc exécuté 10 fois }
avec meme un passage d'argument: 10.times{|i| puts 1 } ce qui affiche les nombres i de 0 à 10-1 donc sur l'intervale exlusif a droite : [0...var] en gros, c'est une sorte de Integer#upto(max)
berka |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Mar 5 Mai 2009 - 16:24 | |
| Nan c'est en Ruby Librairie Gosu : Un bout de jeu : - Code:
-
move_x.times { if would_fit(1, 0) @x += 1 end }
|
|
| |
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Mar 5 Mai 2009 - 17:07 | |
| LOL, ok, j'ai vu mon erreur. Foutu IRB qui supporte pas le raccourcis normale des touches pour {}. Mon erreur. Librairie standard. Donc au minimum 3 possibilité si non utilisé par d'autre librairies.
Répétition. Multiplication. Étiquette de temps.
Dans ton code, c'est une répétition. En fait il vérifie que ça entre dans la fenêtre et bouge l'abcisse de 10 si ça entre dans la fenêtre si on se fit uniquement à ce que tu nous affiche ici. |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Mar 5 Mai 2009 - 17:12 | |
| Ok c'est bien ce que je pensais =) Merci beaucoup pour votre aide ! Et a bientôt je pense x] |
|
| |
Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Mar 5 Mai 2009 - 18:14 | |
| pour activer les touches spéciales, il faut que tu lances irb comme ceci: - Code:
-
irb --noreadline berka
Dernière édition par berka le Mar 5 Mai 2009 - 18:46, édité 1 fois |
|
| |
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Mar 5 Mai 2009 - 18:17 | |
| Thanks berka, ce sera très très très très pratique. Un grand merci. |
|
| |
Poulet carnivore Lv.2
Inscrit le : 18/05/2009 Messages : 13
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Dim 13 Sep 2009 - 15:06 | |
| Bonjour tout le monde. Je ne comprend pas ce qu'il faut rajouter a mon code pour qu'il affiche un message dans la petite fenetre. - Code:
-
class Scene_Test < Scene_Base def start @fenetre = Window_Base.new(0, 0, 544, 416) @fenetre2 = Window_Base.new(((544/2)-(200/2)), ((416/2)-(100/2)), 200, 100) end def terminate @fenetre.dispose @fenetre2.dispose end def update if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new end end end
Que faut t'il rajouter s'il vous plait j'ai pas comprit sur le tuto. Merci ! |
|
| |
Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Dim 13 Sep 2009 - 15:32 | |
| Window_Base n'est pas une fenetre pouvant etre appelée directement, elle sert de support pour afficher du contenu et créer des fenetre filles.
berka |
|
| |
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Dim 13 Sep 2009 - 15:38 | |
| Mmmmmh, donc on est obligé d'appeler une fenêtre comme ça? - Code:
-
class Scene_Truc < Scene_Base def start @fenetre = Window_Truc.new end def terminate @fenetre.dispose end def update if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new end end end
class Window_Truc < Window_Base def initialize super(0,0,544,416) write_text end def write_text text = "Coucou, c'est le texte!" self.contents.draw_text(new_rect,text,1) end def new_rect return Rect.new(0,0,544-32,416-32) end end Tout ça juste pour ouvrir une fenêtre et y afficher du texte? N'y a-t-il pas moyen d'ouvrir cette fenêtre directement à partir du scene (excepté les fenêtres de choix)? |
|
| |
Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Dim 13 Sep 2009 - 18:46 | |
| Tu peux utiliser la Window_Help, qui permet d'afficher une ligne de texte à la volée, dans une scene. - Code:
-
class Scene_Truc def main @texte = Window_Help.new @texte.set_text("Mon texte: tralalala") end def update @texte.update end end berka |
|
| |
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Lun 14 Sep 2009 - 14:40 | |
| Comme Berka a dit Gothor, En fait, l'idée c'est que tu gères le clavier de la façon dont tu t'y prends. Tu n'as pas nécessairement besoin d'avoir une fenêtre qui gère le clavier. Dans ce cas, Tu as Window Help ou Window Message. C'est à toi de voir ce que tu veux faire globalement. |
|
| |
Poulet carnivore Lv.2
Inscrit le : 18/05/2009 Messages : 13
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Lun 2 Nov 2009 - 15:45 | |
| Bonjour. Moi pour mon script j'ai un problème (pas bien grave mais j'aimerais comprendre) Quand je met - Code:
-
class Scene_Test < Scene_Base def start end def terminate end def update if Imput.trigger?(Input::B) Sound.play_cancel $scene = nil else if Input.trigger?(Input::C) Sound.play_select $scene = Scene_Map.new end end end
Sa ne fonctionne pas mais quand je met - Code:
-
class Scene_Test < Scene_Base def start end def terminate end def update if Imput.trigger?(Input::B) Sound.play_cancel $scene = nil else if Input.trigger?(Input::C) Sound.play_select $scene = Scene_Map.new end end end end
Sa fonctionne. Il y a pourtant un "end" en trop non ? |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Lun 2 Nov 2009 - 16:05 | |
| Non il n'y a pas de end en trop ^^ A la ligne 10 - Code:
-
else if Input.trigger?(Input::C) Tu créer une nouvelle condition, qui requit, une end ! Mais différent du end de "else" Tu me suis ? Bref, si tu veux enlever un end met - Code:
-
elsif Input.trigger?(Input::C) Qui lui a le même end que le else Désolé si c'est pas très clair ^^' EDIT Block' : =P
Dernière édition par La Meche le Lun 2 Nov 2009 - 16:08, édité 1 fois |
|
| |
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Lun 2 Nov 2009 - 16:07 | |
| Tu confond elsif et else et if. Pour Rmvx ton premier morceau de code correspond à ca : - Code:
-
class Scene_Test < Scene_Base def start end def terminate end def update if Input.trigger?(Input::B) Sound.play_cancel $scene = nil else if Input.trigger?(Input::C) Sound.play_select $scene = Scene_Map.new end end end Et le deuxiéme : - Code:
-
class Scene_Test < Scene_Base def start end def terminate end def update if Input.trigger?(Input::B) Sound.play_cancel $scene = nil else if Input.trigger?(Input::C) Sound.play_select $scene = Scene_Map.new end end end end Tu vois pourquoi le deuxième marche et pas le premier maintenant ? Ca que tu veux faire à mon avis c'est : - Code:
-
class Scene_Test < Scene_Base def start end def terminate end def update if Input.trigger?(Input::B) Sound.play_cancel $scene = nil elsif Input.trigger?(Input::C) Sound.play_select $scene = Scene_Map.new end end end
T'a compris ? ^^ Sinon, c'est I nput et pas I mput, et dans ton exemple vu que y'a rien dans start et terminate ca sert à rien de le mettre ! Edit : Grilée =( |
|
| |
Poulet carnivore Lv.2
Inscrit le : 18/05/2009 Messages : 13
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. Mar 3 Nov 2009 - 14:07 | |
| A oui c'est vrai c'est elsif... mais depuis que je connais le langage C, et C++ j'ai l'habitude de mettre else if. Merci. (pour Input je sait mais j'ai suivit les regles de français lol...) |
|
| |
| Sujet: Re: Cours #5 : Premiere approche du RGSS2. | |
| |
|
| |
| Cours #5 : Premiere approche du RGSS2. | |
|