AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le Deal du moment :
Nike : Jusqu’à 50% sur les articles de ...
Voir le deal

Partagez
 

 Cours #4 : Modules, case when, retours et fin de la théorie

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
MirainoHikari
Ex-Admin-Script
Ex-Admin-Script
MirainoHikari


Masculin Age : 41
Inscrit le : 26/05/2008
Messages : 2360

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeMar 21 Oct 2008 - 15:31

Niveau : Intermédiaire
Outils : RMVX et le projet du cours.
Sujets traités : Les modules, case et when, retours

Cours :
Théories
Ceci mettra fin à nos cours hors VX. Dès le prochain cours, on entammera des cours en lien avec les scripts de VX. Cours #4 : Modules, case when, retours et fin de la théorie 25535
Bon, alors il y aura beaucoup de contenu, mais on fait uniquement revisiter plusieurs concepts. J'imagine que vous voulez commencer par la nouveauté. En fait, j'ai hésiter à le mettre dans le cours précédent, mais je ne voulais pas en mélanger plusieurs. Donc les voici maintenant. Les modules. Contrairement aux classes qui sont des définitions de type et de structure de données, les modules sont des regroupement logique de données. On y trouves des variables, des classes et des méthodes de modules. Tout comme les classes, il y a un mot clé de début, un end à la fin et ont peut les hierarchisés. Il possède les même règles de nomenclature que les classes, c'est à dire que la première lettre du nom doit être en majuscule. Donc voici un exemple d'un module simple.
Code:
module MonModule
 MA_CONST = "allo"
 @ma_var = "coucou"
end
Dans le module MonModule, il n'y a que deux donnée, un constante et une variable. Du coup, ce n'est pas un module très pratique. Mais c'est simplement pour des fins d'explication. Les modules sont généralement d'accès public, c'est à dire que toutes les classes ont accès à ce qu'il y a dedans. Donc puisque MA_CONST est public, on veut pouvoir y accédé, logique. Pour récupérer la valeur de MA_CONST, on a simplement à appeler MonModule::MA_CONST et voilà. Remarquer la syntaxe. On écrit le nom du module, suivit de 2 deux-points puis le nom de la donnée. Toutefois, ce n'est pas toutes les données qui ont un accès public. En effet, les définitions de classes, de modules et de constantes sont publiques, par contre, les variables de modules sont privés. C'est à dire qu'on ne peut pas accédé directement à la valeur d'une variable ailleur que dans le module. MonModule::@ma_var est impossible. Mais on va règler ce problème. Les méthode sont publiques, donc on peut faire les méthode get et set pour la variable, mais il existe un façon plus simple de procédé qui allège le code grandement : les accès. Une seule ligne fera pour vous tous les get et les set de chacune de vos variables de module.
Code:
class MaClasse
 attr_accessor :ma_var
 MA_CONST = "allo"
 @ma_var = "coucou"
end
Vous remarquerez la ligne supplémentaire. Elle définit à la fois la variables, sa méthode = et sa valeur lisible. Autrement dit, en faisant MonModule::ma_var, on obtien "coucou" et en faisant MonModule::ma_var = "bye" , on vient de changer sa valeur. Remarquer que le @ n'est plus présent lorsqu'on l'appel via le module. Je vous fait un tableau récapitulatif des 3 types d'accès possible et vous comprendrez peut-être mieux pourquoi.
IMPORTANT : attr_accessor crée des méthodes d'instance. Autrement dit, ces méthodes sont faite pour les classes d'objets. Ça ne fonctionne que si votre classe possède un initialize (ce qui est d'usage habituellement) et que vous créer une instance avec .new.

attr_reader (accès lecture) défini la possibilité de lire la variable. Donc attr_reader :y créera la variable @y ainsi que la méthode y qui renvoit la valeur.
attr_writer (accès écriture) défini la possibilité d'écrire sur la variable. Donc attr_writer :y créera la variable @y, la méthode y= (publique) et la méthode @x= (privée) qui permet de donner une nouvelle valeur.
attr_accessor (accès total) est l'équivalent de faire attr_reader :y puis attr_writer :y ce qui donne accès en lecture et écriture à la variable.

Selon ce que vous désirer faire, vous devrez choisir entre ces 3 accès aux variable pour définir si les autres modules / classes / methode n'appartenant pas à ce module ont le droit ou non de faire avec les variables du module.

J'ai dit qu'il était possible de hierarchiser les modules. Contrairement aux classe qui utilisait la notation class MaClasse < ClasseMere, les modules on simplement besoin d'être imbriqué les uns dans les autres. Attention de bien faire correspondre vos end.
Code:
module MonModule
    MA_VAR = "coucou"
  module MonAutre
    MA_CONST = "allo"
  end
end
Dans ce cas, on appellera la valeur "allo" en écrivant MonModule::MonAutre::MA_CONST. C'est aussi simple que ça. Dans RMVX, il y a plein de ses modules imbriqué. Le module RPG est le plus bel exemple que vous ayez sous la main.

Une dernière note. Vous pouvez inclure des classes dans un module. La hiérarchie des classes se fait normalement au sein d'un module, mais dois inclure le nom du module dans le cas d'une hierarchie intermodulaire.
Code:
module MonModule
  {...}
  classe MaClassePrincipale
  {...}
  end
  classe Fille < MaClassePrincipale
  {...}
  end
end

module UnAutreModule
  {...}
  classe MaClassePrincipale < MonModule::MaClassePrincipale
  {...}
  end
  classe Fille < MaClassePrincipale
  {...}
  end
end
Comme vous le voyez, on peut dupliquer les noms entre les modules, il n'y a aucun problème. La classe Fille du 2e module ne surcharge pas la classe Fille du 1er. On voit aussi que la classe principale du 2e module est une fille de la classe principale du 1er module. Faite seulement attention à la façon dont vous nommer vos classes. Même si vous pouvez réutiliser des noms, assurez vous de toujours donner des nom qui ne porteront pas à confusion lorsque vous aurez à coder. Pour les modules, si vous avez des question, n'hésitez pas à les poser dans ce post. Si vous avez besoin de plus d'éclaircissement, il me fera plaisir d'expliquer ces concepts plus en détail, mais je crois que vous avez en main toutes les informations nécessaires pour créer des modules.

Maintenant, les cas des case/when. C'est une autre façon de faire des conditions. Elle est très simple, mais doit être utiliser avec vigilence. Voici un exemple de case/when qu'on expliquera par la suite.
Code:
case $age
  when 0 .. 2
  print "bébé"
  when 3 .. 6
  print "enfant"
  when 7 .. 12
  print "pré-adolescent"
  when 12 .. 18
  # Note: 12 est présent également dans le cas précédent
  print "adolescent"
  else
  print "adulte"
end
Tout d'abord, le mot clé case indique qu'on veut déterminer le cas de la variable indiquer en paramètre. Dans ce cas-ci, on regarde l'âge. When remplace nos if. When se traduit «lorsque». Donc lorsque l'âge est entre 0 et 2, c'est un bébé, lorsque l'âge est entre 3 et 6, c'est un enfant, etc. Remarquez que cette fois, les .. sont inclusifs. Dans ce cas, qu'est-ce qui arrive si l'âge est 12? Le système renvoie la première valeur vraie. Donc à 12 ans, il enverra pré-adolescent. Vous pouvez aussi mettre autre chose que des nombres, mais la syntaxe est différente.
Code:
case $taille
  when "petit", "nain", "miniature"
  print "small"
  when "moyenne", "normale", "correcte"
  print "medium"
  when "grand", "géant"
  print "large"
end
Cette fois-ci, on dit que lorsque la taille est petit, nain ou miniature, ont renvoie small et ainsi de suite. Donc chaque valeur est séparé par une virgule. Faites quelques tests. Le case/when est très utile lorsque les embranchement devienne très nombreux. Remarquer également qu'il n'y a qu'un seul end qui correspond au case. Les when et le else (lorsque vous décider d'en mettre un) font partie du case et ne sont pas considéré séparément.

Un petit retour sur les strings. Vous avez vu précédemment que les string pouvait être concatener pour construire un message et dans un de mes exemples, j'avais montré qu'il était possible de récupérer une partie de la valeur de la chaîne. Voyons plus en détail les différentes méthodes. Nous nous rappelons que "bonjour " + "toi." donne "bonjour toi." et que "lol " * 3 donne "lol lol lol ". On sait aussi que "moi" == "moi" retourne vrai et "moi" == "toi" donne faux. Voici maintenant les autres méthode en raffale.

ma_string <=> une_string donne -1 si la valeur ASCII de ma_string est inférieur à l'autre string, 0 si la valeur est identique et 1 si elle est supérieur. < et > seul existe aussi pour les string et renvoie vrai ou faux selon les même critères.

ma_string[départ, longueur] où départ et longueur sont des entiers. Renvoie le nombre de lettres indiquer par longueure à partir du points de départ. Le premier élément est 0. Départ peut être négatif, ce qui fait compter à partir de la fin de la chaine. Attention de ne pas être en dehors de la longueure de la chaine sinon nil est renvoyé.

ma_string[départ, longueur]=val remplace par val la sous-chaîne trouvé. La chaîne est modifié de façon permanente.

ma_string[regexp] où regexp peut être n'importe quel valeur. Si cette valeur est retrouvée dans la string, sa première occurence est renvoyé, sinon, renvoie nil. Utile pour savoir si une valeur est présente dans la chaîne.

self[regexp]=val remplace la première sous-chaîne correspondante à regexp par la chaine val. Cause une exception si regexp n'est pas trouvé.

concat(val) est équivalent à ma_string + val.

downcase remplace toutes les Majuscules par des minuscules.

upcase remplacent toutes les minuscules par des majuscules.

empty? renvoie vrai si la chaîne est vide (c'est à dire, une chaine de longueur zéro).

gsub(pattern) {|matched| .... } et gsub!(pattern) {|matched| .... } remplacent toutes les occurences correspondant à pattern.

sub(pattern) {|matched| ... } et sub!(pattern) {|matched| ... } remplace la première occurence correspondant à pattern.

include?(substr) renvoie vrai si la sous substr est inclue dans la chaine.

insert(position, valeur) Insère la valeur immédiatement avant le caractère de la position indiquée.

length et size renvoient la longueur en octet de la chaine.

to_f interprête la chaîne comme une expression en base 10 et la convertie en un entier à virgule flottante (Float).

to_i([base]) interprête la chaîne comme une expression numérique et la convertie en un entier. Par défaut, la base est décimale. En spécifiant base, vous pouvez aussi bien réaliser une conversion de base 2 à 36.

Voici quelques exemples
Code:
ma_string = "bonjour"
ma_string.concat(" toi.")      #ma_string => "bonjour toi."
ma_string2 = ma_string.upcase   #ma_string2 = "BONJOUR TOI."
ma_string3 = ma_string.clone    #ma_string3 = "bonjour toi."
ma_string[0,1]="B"            #ma_string => "Bonjour toi."
ma_string3 = ma_string3[3,4]   #ma_string3 => "jour"
Donc amusez vous avec ces concepts. Les plus souvent rencontrer sous VX sont la récupération de sous-chaîne, la concaténation, size, insert et gsub.

Pour les array il y a également quelques méthode que je veux vous montrer. flatten, include?, pop et push. pop sert à sortir les valeurs dans l'ordre qu'elles apparaisse dans le tableau et push sert à ajouter une valeur au tableau. flatten sert principalement à donner toutes les valeur individuelle et include? sert à vérifier qu'une valeur est présente. C'est deux méthode sont souvent utilisés ensemble.
Code:
array = [1, [2, 3], 4]
print array.pop      # => 4
print array.pop      # => [2, 3]
print array          # => [1]
print array.pop      # => 1
print array.pop      # => nil
print array          # => []

array = [1, 2, 3]
array.push 4
array.push [5, 6]
array.push 7, 8
p array          # => [1, 2, 3, 4, [5, 6], 7, 8]

array = [1, [2, 3], 4]
print array.flatten # => [1, 2, 3, 4]
print array.include(2) # => false
print array.flatten.include(2) # => true
C'est aussi simple que ça. Et pour effacer entièrement le contenu d'un hash ou d'un array, la methode clear.

Pour tous les type de variable, il existe également clone et dup renvoient une nouvelle variable avec le même contenu que la variable originale. En utilisant clone sur une constante renverra une constante similaire, alors que dup renvoie une variable avec un contenu identique. Ceci est important pour ne pas modifer 2 valeurs simultanéments, mais bien considéré 2 variables de façon distincte, contrairement à l'affectation par un =.

Dernier concept. Supposons que vous voulez interchanger 2 variables. Plutôt que d'avoir recours à une variable temporaire, ruby propose une méthode fort sympatique pour inverser les valeurs.
Code:
a,b = b,a
Avec cette simple ligne, a prend la valeur que b avait et b prends la valeur que a avait. Simple et efficace.

Donc voilà. C'est tout pour la théorie. Les prochains cours seront plus orientés vers VX. Pour d'autre fonction disponible pour les différents type, je vous réfère à l'aide de VX. Mais avec ce cours, vous avez l'essentiel pour faire des projets en ruby intéressant.

=====Supplément=====

Voici un exemple de modules complet qui donne le temps en français sous forme de string.
Code:
module Real_Time
  WDSN = {"mon" => "lundi", "tue" => "mardi", "wed" => "mercredi", "thu" => "jeudi", "fri" => "vendredi", "sat" => "samedi", "sun" => "dimanche"}
  MNTN = {"jan" => "janvier", "feb" => "février", "mar" => "mars", "apr" => "avril", "may" => "mai", "jun" => "juin", "jul" => "juillet", "aug" => "août", "sep" => "septembre", "oct" => "octobre", "nov" => "novembre", "dec" => "décembre" }
  class MyTime 
    attr_accessor :jour_sem, :jour_mois, :mois, :annee, :heure, :minute, :seconde
    def initialize
      @jour_sem = WDSN[Time.now.to_s[0,3].downcase]
      @jour_mois = Time.now.to_s[8,2]
      @mois = MNTN[Time.now.to_s[4,3].downcase]
      @annee = Time.now.to_s[-4,4]
      @heure = Time.now.to_s[11,2]
      @minute = Time.now.to_s[14,2]
      @seconde = Time.now.to_s[17,2]
    end
    def to_s
      return "#{@jour_sem}, #{@jour_mois} #{@mois} #{@annee}, #{@heure}:#{@minute}:#{@seconde}"
    end
    def update
      @jour_sem = WDSN[Time.now.to_s[0,3].downcase]
      @jour_mois = Time.now.to_s[8,2]
      @mois = MNTN[Time.now.to_s[4,3].downcase]
      @annee = Time.now.to_s[-4,4]
      @heure = Time.now.to_s[11,2]
      @minute = Time.now.to_s[14,2]
      @seconde = Time.now.to_s[17,2]
      return self
    end
  end
end

begin
  temps = Real_Time::MyTime.new
  tmp = temps
  print temps
  while(temps.seconde == (tmp.update).seconde)
  end
  print (temps.update)
  while(temps.seconde == (tmp.update).seconde)
  end
  temps.update
  print temps
  print "heure = #{temps.heure}:#{temps.minute}"
end

Exercices
1. Faites un module ayant au moins une constante une classe de module avec au minimum un initialize, une variable avec un accès en lecture, une variable avec un accès total (lecture et écriture), et un sous module avec une constante et une méthode quelconque. (10pts)

2. Faites une methode qui utilisera un case/when avec un nombre et une autre avec un string. Ces methodes auront en entrée le tableau de membres du forum suivant.
Code:
var_case = [{"nom" => "fabY", "sexe" => "homme", "post"=>5000},{"nom" => "Hikari", "sexe" => "homme", "post"=>2500},{"nom" => "twilight", "sexe" => "femme", "post"=>1500},{"nom" => "Blockade", "sexe" => "femme", "post"=>1500}]
Le case avec les string devra afficher à l'écran un mot de bienvenue qui tient compte du masculin et du féminin par l'analyse du sexe en affichant le nom du membre. Le case de l'entier regardera le nombre de post et affichera à l'écran si le membre est très productif ou peu productif sur le forum. (10pts)

3. [Bonus 2 pts] Faites un code de votre cru qui intègre différente methode avancer de string et d'affectation croisé de variable. Écrivez des commentaires pour indiquer ce que vous tenter de faire avec votre code.


Dernière édition par MirainoHikari le Jeu 9 Avr 2009 - 14:37, édité 6 fois
Revenir en haut Aller en bas
http://mirainohikari.deviantart.com
Blockade
Ex-Admin Cruelle
Ex-Admin Cruelle
Blockade


Féminin Age : 32
Inscrit le : 03/07/2008
Messages : 2441

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeMar 21 Oct 2008 - 17:32

Parfait dès que j'ai le temps je m'y met merci beaucoup :p


Dernière édition par Blockade le Lun 26 Jan 2009 - 12:48, édité 1 fois
Revenir en haut Aller en bas
MirainoHikari
Ex-Admin-Script
Ex-Admin-Script
MirainoHikari


Masculin Age : 41
Inscrit le : 26/05/2008
Messages : 2360

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeVen 24 Oct 2008 - 14:38

Je viens de faire une petite mise à jour sur les méthodes disponibles pour mettre les méthodes les plus utiles et j'en ai profiter pour ajouter flatten et include? pour les array.
Revenir en haut Aller en bas
http://mirainohikari.deviantart.com
jebbou
Doyen
Doyen
jebbou


Masculin Age : 45
Inscrit le : 20/08/2008
Messages : 2485

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeVen 24 Oct 2008 - 14:44

Hikari,

Merci pour ce cours! Je vais regarder ca quand je vais avoir un peu plus de temps. Bon travail.

Jebbou
Revenir en haut Aller en bas
La Meche
Flibustier Lv.21
Flibustier Lv.21
La Meche


Masculin Age : 30
Inscrit le : 24/05/2008
Messages : 3234

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeJeu 5 Fév 2009 - 11:19

Eh...
Quand je test
Code:
begin
  var = "Coucou1"
  var[1]
  print var.to_s
end
Cela m'affiche Coucou1 mais de trace de vrai de faux de nil etc...
de plus dans ce code
Code:
array = [1, [2, 3], 4]
print array.flatten # => [1, 2, 3, 4]
print array.include(2) # => false
print array.flatten.include(2) # => true
Pourquoi print array.include(2) # => false
Est faux alors que dans array = [1, [2, 3], 4]
Il y a bien un 2 O.o
aussi à quoi sa sert de mettre un tableau dans un tableau O.o
Code:
concat(val) est équivalent à ma_string + val.
Comment VX peux savoir que tu veux ajouter val à ma_string et non a autre chose ?

Merci pour vos futur réponse !
Revenir en haut Aller en bas
ASHKA
Voyageur Lv.10
Voyageur Lv.10
avatar


Masculin Age : 41
Inscrit le : 04/12/2008
Messages : 383

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeJeu 5 Fév 2009 - 11:49

Alors ...

Citation :
Cela m'affiche Coucou1 mais de trace de vrai de faux de nil etc...

Normal, tu demande d'afficher une String, il t'affiche une String.
De plus, ta ligne "var[1]", tel quel, ne sert à rien.

Code:
var[1] = "z"

Avec "var[1]", c'est comme si tu place un curseur sur le charactere N°1 de la chaine.
( Tu sais genre curseur de traitement de texte )
Si tu ne fait rien, rien n'est modifié.
Le code ci-dessus change le charactere selectionné en "z".
La String sera modifié, mais "p var.to_s" renverra toujours une String.
A la rigueur, pour avoir un booléen, faudrait utiliser :

Code:
p var.is_a?(String)

Citation :
Pourquoi print array.include(2) # => false

Parce que "array" n'a pas été modifié, il n'inclue pas d'Integer 2.
Au fait, c'est include?() et non pas include(), petite erreur de frappe je pense.
"array.flatten" renvoi un nouveau tableau mais ne modifie pas "array".

Code:
p array.flatten!

Là, oui, "array" aurait été modifié, donc "array.include?(2) aurait renvoyé "true".

Citation :
aussi à quoi sa sert de mettre un tableau dans un tableau

A des millions de choses !!

Extrait d'un script que j'ai fait il n'y a pas longtemps :

Code:
... "obj" => [["O", 4, 5], ["W", 4, 5], ["A", 4, 5]], ...

A l'interieur d'un tableau, j'ai d'autre tableaux.
Cela est nettement plus pratique pour moi, car ensuite, j'utilise une boucle :

Code:
  def set_inventaire(tab)
    for bloc in tab
      case bloc[0]
      when "O"
        item = $data_items[bloc[1]]
      when "W"
        item = $data_weapons[bloc[1]]
      when "A"
        item = $data_armors[bloc[1]]
      end
      $game_party.gain_item(item, bloc[2])
    end

Dans mes sous-tableaux, je sais où se trouve chaque elements qui m'interesse.
Dans un tableau unique, comment me reperer ?
Il faudrait que je divise mon tableau en bloc de trois et que je repartisse mes infos ensuite ...
Nettement moins pratique ...

Citation :
Comment VX peux savoir que tu veux ajouter val à ma_string et non a autre chose ?

Regarde le code du dessous en plus des explications.

"concat()" est une methode de la classe String, elle doit donc etre utilisé avec un objet de la classe String.

Code:
ma_string.concat(" toi.")      #ma_string => "bonjour toi."

ASHKA
Revenir en haut Aller en bas
MirainoHikari
Ex-Admin-Script
Ex-Admin-Script
MirainoHikari


Masculin Age : 41
Inscrit le : 26/05/2008
Messages : 2360

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeJeu 5 Fév 2009 - 13:16

Définitivement ASHKA, tu es efficace. Juste un petit commentaire concernant flatten! Personnellement, je n'aime pas l'utilisation des methode! car si rien ne doit changer, elles renvoient nil. Donc à la place jutilise la syntaxe
Code:
my_array = my_array.flatten
ou pour aller avec votre print
Code:
my_array = my_array.flatten
print my_array

D'accord, ça fait une opération de plus pour conserver la nouvelle valeur (si on veut la garder), mais au moins on est certain que dans le pire cas, on reçoit self et pas nil. Et comme on a vu dans le cours des string, on peut imbriqué les opération si on ne veux pas conserver de valeur temporaire.
Code:
(my_array.flatten).include?(2)

Ainsi, my_array ne change pas de valeur, mais on trouve quand même le 2 qui se cache à l'intérieur.
Revenir en haut Aller en bas
http://mirainohikari.deviantart.com
Invité
Invité
avatar



Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeLun 9 Fév 2009 - 9:56

Bonjour,je sens que je vais me faire taper sur les doigts, mais je n'arrive pas l'exercice 2.

Je vois ce qu'il faut faire mais pas comment le faire.

Ce que j'ai essayé :
J'ai fait un module,avec une classe à l'intérieur. Dans cette classe, j'ai fait des attr_accessor, pour nom,sexe et post. Dans le init de la classe, j'ai fait le tableau. Ensuite j'ai une méthode, qui récupère le sexe de fabY, faut bien faire comme ça ?
Code:
@test = var_case[0][sexe]

puis un case sur @test qui vérifie si c'est "homme" ou "femme".

Et enfin, un begin, avec création de l'objet
Code:
tab = MonModule::MaClass.new

Quand je l'execute, ça me renvoie toujours nil!, donc je pense que j'ai pas la bonne méthode pour récupérer le sexe de fabY,par exemple.

Merci pour votre aide.

EDIT : Merci Miyazaki,c'est bon.
Revenir en haut Aller en bas
MirainoHikari
Ex-Admin-Script
Ex-Admin-Script
MirainoHikari


Masculin Age : 41
Inscrit le : 26/05/2008
Messages : 2360

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeMar 10 Fév 2009 - 17:23

LOL désolé mon erreur. J'avais oublié les guillemets de mes clés. revoit la question 2, je l'ai corrigé. "nom", "sexe", "post" ;P
Revenir en haut Aller en bas
http://mirainohikari.deviantart.com
Invité
Invité
avatar



Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeMer 11 Fév 2009 - 8:48

Oui,c'est bon. Miyazaki me l'avait dit,je t'ai envoyé hier soir mes réponses.

EDIT : Oups! excuse moi Yamazaki


Dernière édition par Elscorto le Mer 11 Fév 2009 - 12:44, édité 1 fois
Revenir en haut Aller en bas
yamazaki
Illusionniste Lv.12
Illusionniste Lv.12
avatar


Masculin Age : 33
Inscrit le : 27/12/2008
Messages : 757

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeMer 11 Fév 2009 - 12:12

Elscorto ce n'est pas Miyazaki mais Yamazaki
Revenir en haut Aller en bas
http://mods-jeu-rpg.forumactif.org
La Meche
Flibustier Lv.21
Flibustier Lv.21
La Meche


Masculin Age : 30
Inscrit le : 24/05/2008
Messages : 3234

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeDim 15 Fév 2009 - 9:47

J'aimerais savoir comment convertir les donnés du script d'heure et date de l'ordi sur des variables ?
J'ai essayer avec des
Code:
$game_variables[x]
etc... mais nan sa marche pas...
Revenir en haut Aller en bas
berka
Maire Lv.9
Maire Lv.9
berka


Masculin Age : 33
Inscrit le : 15/10/2008
Messages : 351

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeDim 15 Fév 2009 - 15:20

l'heure réelle est gérée par la classe Time:

Code:
temps=Time.new
$game_variables[1]=temps.sec
$game_variables[2]=temps.min
$game_variables[3]=temps.hour
Revenir en haut Aller en bas
http://rpgruby.olympe-network.com
La Meche
Flibustier Lv.21
Flibustier Lv.21
La Meche


Masculin Age : 30
Inscrit le : 24/05/2008
Messages : 3234

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeDim 15 Fév 2009 - 15:34

Eh il me dit une erreur
underfined methode '[] =' for nil:NilClass
Pourrais-tu me passer en entier le script avec une gestion la totale si possible des gestions de variables (minute, heure, jour, mois, année)
S'il te plaît ?
Revenir en haut Aller en bas
berka
Maire Lv.9
Maire Lv.9
berka


Masculin Age : 33
Inscrit le : 15/10/2008
Messages : 351

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeDim 15 Fév 2009 - 15:40

j'espere que tu n'as pas mis ce code en vrac:
la class Game_Variables doit etre initialisée avant !

berka
Revenir en haut Aller en bas
http://rpgruby.olympe-network.com
La Meche
Flibustier Lv.21
Flibustier Lv.21
La Meche


Masculin Age : 30
Inscrit le : 24/05/2008
Messages : 3234

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeDim 15 Fév 2009 - 16:44

Citation :
la class Game_Variables doit etre initialisée avant !
Quel classe O.o
Tu ne pas dit qu'il fallait mettre une classe ><
Citation :
j'espere que tu n'as pas mis ce code en vrac
J'ai juste mit
Code:
temps=Time.new
$game_variables[1]=temps.sec
$game_variables[2]=temps.min
$game_variables[3]=temps.hour
Dans le begin à la place des prints !
Revenir en haut Aller en bas
ASHKA
Voyageur Lv.10
Voyageur Lv.10
avatar


Masculin Age : 41
Inscrit le : 04/12/2008
Messages : 383

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeDim 15 Fév 2009 - 16:57

Game_Variables est une classe du RGSS2, c'est ce qui constitue les variables qu'en tant qu'event makeur tu utilisais toujours.

Ces variables, avec toutes les id que tu connais sont créées au lancement de l'ecran-titre.

Si tu tente de les utiliser avant, c'est la source de ton probleme.

Qu'est-ce que tu essaye de faire au juste ?

ASHKA
Revenir en haut Aller en bas
La Meche
Flibustier Lv.21
Flibustier Lv.21
La Meche


Masculin Age : 30
Inscrit le : 24/05/2008
Messages : 3234

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeMer 18 Fév 2009 - 13:27

Alors je veux mettre dans les variables :
1 : minute
2 : heure
3 : jour
4 : mois
5 : année
Sous forme de nombres, pour pouvoir faire des jeux qui prennent en compte l'heure réel !
Revenir en haut Aller en bas
ASHKA
Voyageur Lv.10
Voyageur Lv.10
avatar


Masculin Age : 41
Inscrit le : 04/12/2008
Messages : 383

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeMer 18 Fév 2009 - 14:06

Tu peux utiliser le module fourni par Hikari comme base.
( Ou "Time", comme tu prefere ... )
La mise à jour est effectué par la methode "update".
Apres, tout depend si c'est pour un affichage ou autre chose.

Si c'est un affichage dans le menu, il faut mettre à jour à l'ouverture et à chaques frames si les secondes sont affichés.
( Tu sais comment gerer ça, c'est comme pour ton script )

Utilise un objet "Game_Temp" créé à l'ouverture du jeu.
( Facile puisque tu connais "alias" )

Code:
$game_temp.timer = Real_Time::MyTime.new

Et quand t'en aura besoin :

Code:
$game_temp.timer.update
temps = $game_temp.timer
$game_variables[1]=temps.seconde
$game_variables[2]=temps.minute
$game_variables[3]=temps.heure

Crée toi une nouvelle methode dans Game_Interpreter pour te simplifier la vie.

T'as les bases, maintenant, faut juste que tu essaye des tas de trucs.

ASHKA
Revenir en haut Aller en bas
La Meche
Flibustier Lv.21
Flibustier Lv.21
La Meche


Masculin Age : 30
Inscrit le : 24/05/2008
Messages : 3234

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeMer 18 Fév 2009 - 14:10

Ok merci
J'essai de faire ça des que possible !
Revenir en haut Aller en bas
pattes
Templier Lv.15
Templier Lv.15
pattes


Masculin Age : 29
Inscrit le : 29/11/2008
Messages : 1272

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeMar 24 Mar 2009 - 17:25

Salut, je me suis mit à la leçon 4 et j'ai assez bien compris le cours ( je ne suis pas encore passé aux exercices, je m'exerce encore avec les expressions...) mais il y a quand même quelques choses que je n'ai pas compris...
Code:
ma_string[regexp]
Ca va sûrement paraitre idiot et je vais surement faire Ah oui ! lorsque je le saurai mais comment fait-on une string ? On le met dans une variable ? Sinon, j'aimerai savoir tout simplement ce qu'est une occurence...
Code:
length et size renvoient la longueur en octet de la chaine.
C'est-à dire ? Si la chaine est de longueur = 16, cela affichera 2 ?
Code:
to_f interprête la chaîne comme une expression en base 10...une conversion de base 2 à 36
Aurais-je loupé un cours ? Qu'est-ce qu'une base s'il vous plait ? Merci d'avance de vos réponses !
Revenir en haut Aller en bas
La Meche
Flibustier Lv.21
Flibustier Lv.21
La Meche


Masculin Age : 30
Inscrit le : 24/05/2008
Messages : 3234

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeMar 24 Mar 2009 - 17:54

Alors !
Citation :
comment fait-on une string
Très simplement !
Dans une variable Wink
Code:
var = "String"
N'oubli surtout pas les "" sinon cela va foirer x]
Code:
print var
Donne un message d'erreur avec dedans :
Code:
String
Citation :
C'est-à dire ? Si la chaine est de longueur = 16, cela affichera 2 ?
Eh nan O.o
size et length sont utilisé pour connaître la longeur d'un tableau !
si
Code:
tab = [1, 2, 4, 6]
Code:
var = tab.size
print var.to_s
Donnera un message d'erreur avec dedans
Code:
4
La longeur de ton tableau Very Happy
Citation :
to_f
Alors test ce code
Code:
a = 2
b = a.to_f
print b.to_s
Tu devrais obtenir un message avec
Code:
2,00000

Avec je ne sais combien de 0
to_f permet de mettre des , a des valeurs !

Voilà en espérant t'avoir aidé !
Revenir en haut Aller en bas
berka
Maire Lv.9
Maire Lv.9
berka


Masculin Age : 33
Inscrit le : 15/10/2008
Messages : 351

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeMar 24 Mar 2009 - 21:53

si, pattes a raison:
Code:
p "16".size
=>2

berka
Revenir en haut Aller en bas
http://rpgruby.olympe-network.com
La Meche
Flibustier Lv.21
Flibustier Lv.21
La Meche


Masculin Age : 30
Inscrit le : 24/05/2008
Messages : 3234

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeMer 25 Mar 2009 - 8:18

Ah ouais ?
Je connaissais pas ça x]
Bah merci beaucoup berka alors !
Revenir en haut Aller en bas
pattes
Templier Lv.15
Templier Lv.15
pattes


Masculin Age : 29
Inscrit le : 29/11/2008
Messages : 1272

Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitimeMer 25 Mar 2009 - 12:34

C'est écrit dans le cours.Lis-mieux :p. Sinon, merci pour vos réponses et La Mèche, je connaissais les conversions bien sûr...Mais apparemment c'est ça une base ( un type comme.to_i,to_f,to_s,...).Merci beaucoup je me met aux exos !
Revenir en haut Aller en bas
Contenu sponsorisé




Cours #4 : Modules, case when, retours et fin de la théorie Empty
MessageSujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie   Cours #4 : Modules, case when, retours et fin de la théorie Icon_minitime

Revenir en haut Aller en bas
 

Cours #4 : Modules, case when, retours et fin de la théorie

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant

 Sujets similaires

-
» Théorie : Création d'un Jeu
» [Photoshop - théorie] Les brushs
» [Photoshop - théorie] Les scripts
» [VX] Déplacement par demi-case
» Comment faire un events de plusieurs case

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Apprentissage :: Archives des anciens cours :: Cours de RGSS2-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Forumactif.com