[ruby] Créer des jeux sur rpg maker

the bie -  
 dialga73 -
pourriez vous m'édée car je voudrez apprendre le language ruby car je créé des jeux rpg sur rpg maker donc je voudrait pouvoir ecrire des script pouvez vous me donner un liens ou ils apprendrez ce language
Configuration: Windows XP
Firefox 1.5.0.9

13 réponses

  1. gagner79 Messages postés 288 Statut Membre 40
     
    ensuite il faut que tu mettes la condition pour que le cadre ne s'affiche que quand un interrupteur est activé :

    if $game_switches[numéro de l'interrupteur] == true
    self.visible = true
    else self.visible = false
    end

    tu mets ca après Window_Base.new

    ensuite il faut que tu appelle le script :
    tu met un événement avec appeler un script comme commande
    et tu met le script suivant :
    Cadre.new

    alors ca te donne quoi ?
    8
    1. Cephirius
       
      Bonjoue gagner79

      me mettant dans la creation de script (où je debute) j'ai suivie ta demarche, j'ai pas tout compris au debut, mais en touchant un peu le script (a peine vu mon niveau ^^) je suis parvenu a faire apparaitre un cadre (sauf que je n'utilise pas :

      if $game_switches[numéro de l'interrupteur] == true
      self.visible = true
      else self.visible = false
      end

      cela me faisait une erreur, si tu pouvais m'expliquer plus en detail, sa serai simpa =)
      et autre chose, cette fenêtre que je fait apparaitre... disparait quelques seconde après :/ pourquoi?

      merci d'avance =)
      0
    2. Winner_01
       
      Bonjour , moi je fais pour tester le jeu et il me met "??? error04??"
      0
    3. toto
       
      gné ? ( Winner_01 )
      0
  2. gagner79 Messages postés 288 Statut Membre 40
     
    moi je peux t'apprendre c'est très facile
    commencons tout de suite si tu veux

    pour faire un script je te conseille d'utiliser les autres scripts ou des bouts de script afin de ne pas avoir à faire tout tout seul

    exemple : afficher un cadre sur la map quand un certain interrupteur est activé

    pour ca tu te bases sur le script "Window_Base"
    tu fait nouveau script au-dessus de main, tu choisis un nom, celui-ci n'auras aucune importance

    un script commence souvent par : "class" + le nom du script
    exemple : class Cadre
    ensuite il faut que tu crée une méthode, quand tu vas appeler le script, il ira direct sur "def initialize" pour t'expliqué tout ce qui est écrit entre un "def" et un "end" qui suit est appelé méthode

    on crée donc la méthode initialize :

    def initialize

    ensuite on rajoute ce qu'il fut pour faire le cadre : "Window_Base.new(x, y, width, height)"

    qu'est ce que ca veut dire ? ca appelle tout simplement la méthode initialize du script Window_Base
    ce qui est entre parenthèses est appeler "argument"
    ils sont séparés par une virgule, on en a donc 4 ici

    le 1er argument : x
    tu le remplaces par la position du cadre en partant de la gauche : 0 = tout à gauche
    tout à droite = 640

    le 2ème argument : y
    tu le remplaces par la position du cadre en partant du haut : 0 = tout en haut
    tout en bas = 480

    le 3ème : width
    sache que du ruby c'est de l'anglais dans tous les sens
    width signifie "largeur"

    le 4ème : height
    height siginfie "hauteur"

    exemple :

    class Cadre

    def initialize
    Window_Base.new(0, 0, 100, 100)
    end

    end

    voila le début
    7
    1. dialga73
       
      d:
      0
  3. gagner79 Messages postés 288 Statut Membre 40
     
    oui il est possible d'utiliser une image à la place du windowskin, et c'est facile :

    pour afficher une image sur l'écran c'est super simple :
    exemple : on importe l'image est dans le dossier Pictures, l'image s'appelle ici "cadre"
    le script est le suivant :
    @image = Sprite.new
    @image.bitmap = RPG::Cache.picture("cadre")

    il faut ensuite choisir les coordonnées de l'image :
    @image.x = 100
    @image.y = 100

    l'écran fait 480 pixels de hauteur et 640 de largeur, donc pour mettre l'imag en bas :
    @image.y = 480 - la hauteur de l'image
    @image.x = 640 - la largeur de l'image

    ! pour savoir la taille d'une image, il suffit de faire un clique-droit puis Propriétés

    ainsi on a crée une image sur l'écran

    maintenant il faut pouvoir écrire dessus, on ne pas écrire directement sur l'écran ni directement sur une image, il faut donc le faire sur un cadre, mais comme on en veut pas, on le mettra invisible

    créez un cadre comme je vous ai expliqué, à la même position que l'image, et invisible

    pour le rendre invisible, on peut utiliser "self.visible = false" mais le probème, c'est qu'on ne verra pas ce qu'il y a dessus non plus !
    donc on utilise "self.opacity = 0", pour rendre le cadre totalement invisible, tout en voyant ce qui est écrit dessus

    pour écrire la valeur d'une variable :
    la valeur d'une variable est donnée pas "$game_variables[numéro de la variable]"
    text = $game_variables[numéro de la variable]
    self.contents.draw_text(0, 0, 100, 32, text)

    vous essayez et ... PROBLEME : la valeur de la variable est un nombre, alors que draw_text sert à écrire une chaîne de caractères ! il faut donc la transformer, pour cela on met ".to_s" :
    text = $game_variables[numéro de la variable].to_s
    self.contents.draw_text(0, 0, 100, 32, text)
    5
    1. Cephirius
       
      Bonjour, premierement désolé de pas avoir repondu plutot, en ce moment, internet est pas trop disponible (ou plutot, disont que je ne l'ai pas la ou je suis, obligé d'aller chez un pote. Merci pour ces info, je vais essayer, faire ma ptite image et je verrai comment je peux me personaliser tout ça =)

      merci beaucoup pour ton aide, j'attend tes prochain post avec impatience =) (sur tout et n'importe quoi, du moment que sa concerne les script, sa m'interesse pour mieu comprendre
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. gagner79 Messages postés 288 Statut Membre 40
     
    oui en effet petite erreur de ma part

    pour pouvoir voir le cadre sur la map, rajoutez ca à la fin du script :

    class Scene_Map

    alias cadre_main main
    def cadre_main
    cadre = Cadre.new
    end

    alias cadre_update update
    def cadre_update
    cadre.update
    end

    end

    ensuite revenez dans initialize de Cadre et enlevez ca :
    if $game_switches[numéro de l'interrupteur] == true
    self.visible = true
    else self.visible = false
    end

    ensuite après le "end"
    on va rajouter une méthode qui permet de voir tout le temps le cadre sur la map :

    def update

    puis le contenu de la méthode :

    vous pouvez d'abord rajouter ca pour ne voir le cadre que si un interrupteur est activé :

    if $game_switches[numéro de l'interrupteur]
    self.visible = true
    else self.visible = false
    end

    n'oubliez pas de remplacer "numéro de l'inteerrupteur" par le numéro de l'interrupteur qui permmettra de voir le cadre

    ensuite si vous voulez afficher quelquechose dans le cadre, revenez dans initialize, et rajoutez :
    self.contents = Contents.new(self.width - 32, self.height -32)

    n'oubliez pas que self renvoie au cadre, self.contents c'est pour pouvoir écrire ou mettre une image sur le cadre

    ensuite revenez dans update
    et mettez :
    self.contents.draw_text(x, y, 100, 32, "Message")
    ici on écrit "Message"
    remplacez x par la position x du message (x=0 étant tout à gauche du cadre) puis remplacez y de la même facon

    puis si ca donne une erreur dites moi laquelle SVP
    3
    1. Cephirius
       
      Rebonjour

      bon, j'ai suivi ce que tu as dit, parfois sa bugger, je relisait ce que tu avais écrit, comprenant mieux petit a petit ...
      voila, maintenant, le jeu se lance (enfin !!!) mais .... il bug quand je suis a l'ecran titre, une fois que j'ai choisie "nouvelle partie" tou se fige et je reçoit un message d'érreur "Game.exe a rencontré un probème et dois fermer" .... d'ou viens le problème? je te donne mon script, dit moi où j'ai faux stp =) :

      class Cadre
      def initialize
      Window_Base.new(0, 0, 130, 130)
      end
      end
      class Scene_Map
      alias cadre_main main
      def main
      cadre = Cadre.new
      end

      alias cadre_update update
      def update
      cadre.update
      self.contents.draw_text(0, 0, 100, 32, "hello")
      end
      end
      0
  6. fly
     
    Bonjour,

    La règle numéro 6 du forum demande de ne pas rédiger de messages en langage SMS.
    Un minimum d’attention dans l’orthographe et la grammaire nous permettrait déjà de comprendre ton message, et éventuellement d’y répondre.
    Des logiciels de traitement de texte comme Open Office (ou Word) permettent de corriger les fautes de français, donc ce n’est vraiment pas difficile, même si faire des efforts pour écrire lisiblement n’est pas ta tasse de thé.

    Pour répondre a ta question, je te conseille d’aller voir le site officiel de Ruby en France, http://www.rubyfr.org/

    Bonne programmation.
    2
  7. XxDjidanexX
     
    Je n'ai pas très bien compris ^^'

    Si il aurait moyen d'avoir de l'aide sur MSN voici mon adresse :

    Sore-light@hotmail.fr
    2
  8. gagner79 Messages postés 288 Statut Membre 40
     
    bon, j'ai fait encore quelques erreurs, alors j'ai tout refait de manière plus explicite, et en
    approfondissant tout

    tout ce qui est après une dièse (#) est un commentaire, il n'est donc pas lu par RPG Maker
    tout ce qui est entre "=begin" et "=end" est aussi un commentaire, c'est pareil que mettre des #,
    mais ca évite d'en mettre à chaque ligne

    =begin

    voici une classe :
    class Cadre
    end

    voici une méthode :
    def initialize
    end
    pour l'appeler on met Cadre.new
    cette méthode est spéciale et c'est la seule qui est appelée par autre chose que par son nom

    voici une méthode traditionelle :
    def methode
    end
    pour l'appeler on met Cadre.methode
    ces méthodes ne s'appellent que par leur nom, ici "methode"

    ! Une méthode se met TOUJOURS dans une classe et JAMAIS dans une autre méthode

    voici une superclasse
    < Window_Base
    une superclasse ce met TOUJOURS juste après le nom de la classe, ici après "class Cadre"
    pour appelez cette superclasse, on met "super"
    vous constaterez que ça appelle en fait le script Window_Base, on aurait donc très bien pu
    mettre "Window_Base.new", quand on appelle Window_Base, on va directement à sa
    méthode "initialize", cette méthode nécessite 4 arguments, les voici :
    (x, y, width, height)
    remplacez x par la coordonnée horizontale du cadre, x=0 étant tout à gauche
    remplacez y par la coordonnée verticale du cadre, y=0 étant tout en haut
    remplacez width par la largeur du cadre
    remplacez height par la hauteur du cadre

    "self" renvoie TOUJOURS à quelquechose qu'on a défini AVANT, ici le cadre
    pour écrire un message, on met :
    self.contents.draw_text(0, 0, 100, 32, message)
    remplacez les 4 premiers arguments comme précédemment, et le dernier par le message à
    écrire dans le cadre, ENTRE GUILLEMENTS

    voici une variable locale :
    stock = "Bonjour !"
    une variable locale ne peut être utilisée que dans la méthode où elle a été définie

    voici une variable d'instance
    @stock = "Salut !"
    une variable d'instance ne peut être utilisée que dans la classe où elle a été définie mais
    peut passer à travers les méthodes de la classe où elle a été définie

    voici une variable globale
    $stock = "Génial !"
    une variable globale peut passer à travers tous les scripts, partout quoi

    il existe une autre sorte de variable, très peut utilsée, qui peut passer à travers les méthodes
    d'un même script, mais pas entre les scripts :
    @@stock = "Bof bof !"

    =end

    class Cadre < Window_Base #Window_Base = pour créer un cadre

    def initialize
    super(100, 100, 100, 100) #on crée le cadre
    self.contents = Bitmap.new(100 - 32, 100 - 32) #pour pouvoir écrire quelquechose dessus
    refresh #on va à "def refresh"
    end

    def refresh
    self.contents.clear #on efface tout
    self.contents.draw_text(0, 0, 100, 32, "Message") #on écrit "Message"
    end

    def update
    refresh
    end

    end #de Cadre

    class Scene_Map #quand on est sur la map

    #ca c'est un peu plus compliqué (c'est pour copier la méthode "main" du script Scene_Map,
    #puis pour faire apparaître le cadre sur la map :

    alias cadre_main main
    def main
    $cadre = Cadre.new
    cadre_main
    $cadre.dispose
    end

    alias cadre_update update
    def update
    $cadre.update
    cadre_update
    end

    end #de Scene_Map

    après avoir créé un cadre, on peut le définir et le redéfinir, par exemple :
    on crée un événement, puis appeler un script, et on met Cadre.x = 20
    le cadre a donc changer de position

    il existe beaucoup de petits trucs pour faire des trucs avec les cadres, en voici la liste :

    x : changer la position x
    exemple : $cadre.x = 20

    y : changer la position y
    exemple : $cadre.y = 110

    width : changer la largeur
    exemple : $cadre.width = 200

    height : changer la hauteur
    exemple : $cadre.height = 80

    visible : rendre le cadre visible ou invisible
    exemple : $cadre.visible = true (pour rendre le cadre visible)
    $cadre.visible = false (pour rendre le cadre invisible)

    opacity (ou back_opacity) : changer la transparence (maximum = 255)
    exemple : $cadre.opacity = 0 (transparent)

    CONTENTS :

    contents : pour pouvoir écrire sur un cadre
    exemple : $cadre.contents = Bitmap.new($cadre.width - 32, $cadre.height - 32)
    ($cadre.width - 32 sert à ce qu'on puisse écrire partout sur le cadre, mais qu'on ne
    puisse pas déborder)

    contents.draw_text : écrire sur le cadre
    exemple : $cadre.contents.draw_text(0, 0, 60, 32, "SENSAS !")

    contents.blt : afficher une image sur le cadre
    exemple : icon = RPG::Cache.icon("021-Potion01")
    $cadre.contents.blt(0, 0, icon, Rect.new(0, 0, 24, 24), 250)
    (l'image est ici "021-Potion01" d'RPG Maker)

    FONT :

    contents.font.face : changer la police du cadre
    exemple : $cadre.contents.font.face = "Arial"

    contents.font.name : changer la taille de la police du cadre
    exemple : $cadre.contents.font.size = 12

    contents.font.color : changer la couleur de la police du cadre
    exemple : $cadre.contents.font.color = Color.new(0, 255, 10, 200)
    ("Color.new" permet de créer une couleur, voici ses arguments :
    le 1er -ici 0- est la dose de rouge
    le 2ème -ici 255- est la dose de vert
    le 3ème -ici 10- est la dose de bleu
    le 4ème -ici 200- est la dose de clairté)
    ! Ne fonctionne que si c'est dans le script

    Il en existe plein d'autres, à vous de les découvrir ! lol

    il est aussi possible de connaitre ces informations, exemples :

    savoir la position x du cadre :
    print $cadre.x

    savoir si le cadre est visible ou non :
    print $cadre.visible
    (si true : il est visible, si false : il est invisible)

    ! Si vous voulez définir le cadre dans le script,
    faites le dans update

    Plus tard je vous expliquerai comment créer des
    trucs pour les cadres, ce qui est plus difficile
    mais un peu plus "amusant".
    2
    1. Cephirius
       
      Ok! Merci des renseignement, je vais m'amuser a bidouiller tout ça pour mieux comprendre =)

      vivement que tu me disent d'autre chose que l'ont peux faire dans un cadre (mon but étant d'arriver a la fin a faire une belle interface de jeu. et j'aurai une petite question, que je pense, tu y viendra plus tard (voire bien plus tard) c'est comment faire pour creer une interface dans les combat dans un t-rpg, où il serai possible d'utiliser la souris pourcliquer sur les bouton, pour que ce soit plus facile a gerer?

      je prescise d'avance mon but: avoir le style de combat du jeu "dofus" (je m'avance, j'utilise des pa pour attaquer, je m'ecarte de l'ennemis pour esquiver les coup). bon, pour le script du combat, j'ai, mais c'est pas tout a fait ça...


      (si quelqu'un connai un script qui ferai ça (et pas une seule possibilité de bouger) et qui fait un combat au tour par tour (et pas tout mes joueur, puis tout les ennemis ...) je suis preneur :D

      revenons a nos moutons. En plus de tes conseils, j'apprend sur des tutorial, ce qui me permet de mieux comprendre, afin de ne pas trop te deranger sur tout les probleme que je recontre, essayer de les corriger moi-meme et t'envoyer la reponse si besoin :p.

      amicalement
      0
      1. gagner79 Messages postés 288 Statut Membre 40 > Cephirius
         
        Qu'est-ce que tu veux faire précisément dans le cadre ?
        0
      2. Cephirius > gagner79 Messages postés 288 Statut Membre
         
        en personellement, je voudrai creer une interface de combat personalisé, donc au lieu d'aller chercher les sort dans un menu, les avoir directement dans le menu que je situerai en bas de l'ecran (si tu vois le jeu "dofus" c'est un tres bon exemple de ce que je voudrai, enfin, juste la barre de sort) je voudrai qu'il y ai aussi les barre de vie/mana (peut etre pas en fait, je ne sais pas encore) et d'autre chose si sa me viens a l'esprit, d'où l'envie de comprendre comment faire pour la reéditer si l'envie se fait sentir...

        avec une petite prescision, le cadre, serai il possible d'utiliser une image que je créerai au lieu de l'image de base, afin encore une fois de personalisé l'interface, et pas utiliser que des cadre carré ...

        merci =)
        0
    2. dialga73
       
      eu tu pourrai ne pa mennui jute pour cette foi gagner79 le perdan :)
      0
  9. gagner79 Messages postés 288 Statut Membre 40
     
    =begin

    Pour faire un cadre, on utilise Window_Base, donc pour créer un truc qui fera bouger un cadre
    d'une façon précise il faut aller dans Window_Base, il faudra mettre :
    class Window_Base

    Appellons cela "nouveau"
    il nous faut pouvoir bouger le cadre à partit d'ailleurs que Window_Base, pour cela on doit mettre
    "attr_accessor", et comme on a appelé ça "nouveau", il faudra mettre :
    attr_accessor :nouveau

    Il existe déja une méthode initialize dans le script Window_Base d'RPG Maker, il va donc falloir
    la copier, on utilise "alias" pour copier une méthode existante. Après "alias" il faut rajouter le
    nom de la méthode qu'on crée, suivi du nom de la méthode qu'on copie, il faudra mettre :
    alias nouveau_initialize initialize

    on a mis "nouveau_initialize" mais on aurait très bien pu mettre "salut_ca_va" : ça n'a
    absolument aucune importance

    quand on change la position d'un cadre par exemple, on va dans la méthode "update", il va
    donc falloir copier la méthode "update", de la même façcon que pour la méthose "initialize", il
    faudra mettre :
    alias nouveau_update update

    Quand on créera un cadre, il ne faut pas qu'il fasse directement "nouveau", il faut donc le dire
    dans la méthode "initialize" qui, je le rappelle, est appelé quand on crée le cadre, il faudra
    mettre :
    def initialize
    self.nouveau = false
    end

    Rappel : ici, self renvoie au cadre

    Il nous faut appeler dedans la méthode qu'on a copié dans la méthode "initialize", il faudra
    mettre :
    nouveau_initialize

    Une méthode est parfois accompagné d'arguments, ici, c'est la cas, et je vous les rappelle :
    le 1er : la coordonnée x
    le 2ème : la coordonnée y
    le 3ème : la largeur
    le 4ème : la hauteur
    Il va falloir rajouter ces arguments à la méthode "initialize", et comme "nouveau_initialize" est
    une copie identique de la méthode "initialize", il faudra mettre :
    def initialize(x, y, width, height)
    et :
    nouveau_initialize(x, y, width, height)

    pour le moment on a donc :

    class Window_Base
    attr_accessor :nouveau
    alias nouveau_initialize initialize
    alias nouveau_update update
    def initialize(x, y, width, height)
    nouveau_initialize(x, y, width, height)
    self.nouveau = false
    end
    end

    On a fait la moitié !

    Il nous donc maintenant décrire ce que va faire le cadre quand on lui dire de faire "nouveau",
    il va d'abord falloir mettre "s'il fait nouveau ?", en ruby, voilà ce que ça donne :
    if self.nouveau == true
    en anglais, "true" veut dire "vrai", donc si on avait remplacé "true" par "false", le cadre ferait
    "nouveau" quand on lui dit pas de le faire et ne le ferait pas quand on lui dit de le faire,
    fin bref...
    Pour information "if self.nouveau == true" c'est se compliquer la vie, car ruby se dit que s'il voit
    "if self.nouveau", c'est pareil, on peut donc mettre en français "si nouveau ?", en ruby :
    if self.nouveau

    Petite parenthèse :
    "if" sert à rentrer une condition, donc tout ce qui suit "if " sur cette ligne est vrai ou faux, donc
    "true" ou "false". Au départ le cadre ne fait pas "nouveau" donc si on posait la question
    "nouveau ?", il dirait non, donc en ruby :
    self.nouveau == true
    nous renverrait "false", donc "non", ainsi on peut déterminer si le cadre fait "nouveau" ou non.
    Fin de la parenthèse.

    Si on dit au cadre de faire "nouveau", il le fera continuellement, jusqu'à ce qu'on lui dit d'arrêter,
    pour cela on utilise la méthode "update", il faudra mettre :
    def update
    if self.nouveau
    end
    end

    vous contasterez qu'une condition se termine par un "end"

    On peut mettre un "sinon" à une condition, avec "else", par exemple :
    if self.nouveau
    #s'il fait nouveau
    else
    #s'il ne fait pas nouveau
    end

    Ensuite il faut décrire ce que fera le cadre quand on lui dira de faire "nouveau", de "if" à "end",
    par exemple, si vous voulez qu'il se mette au milieu de l'écran, il faudra mettre :
    self.x = 320 - self.width / 2
    self.y = 240 - self.height / 2

    Je vous rappelle que l'écran fait 640 de largeur et 480 de hauteur.

    N'oubliez pas de rajouter "nouveau_initialize" dans la méthode "update".

    Et voilà ! Terminé !

    =end

    class Window_Base

    attr_accessor :nouveau

    alias nouveau_initialize initialize
    alias nouveau_update update

    def initialize(x, y, width, height)
    nouveau_initialize(x, y, width, height)
    self.nouveau = false
    end

    def update
    if self.nouveau
    self.x = 320 - self.width / 2
    self.y = 240 - self.height / 2
    end
    end

    end
    1
  10. roméo
     
    bonjour je cherche a apprendre le ruby mais je n'y arrive pas sur les tutoriel
    0
  11. gagner79 Messages postés 288 Statut Membre 40
     
    alors oui je vois le problème
    il fallait créer une méthode update dans la classe Cadre, afin d'y mettre self.contents.draw_text(0, 0, 100, 32, "hello")
    la classe Scene_Map sert juste à mettre le cadre sur la map, donc pas besoin d'y toucher, autre chose d'important :
    il faut toujours mettre
    self.contents = Bitmap.new(width - 32, height - 32)
    pour pouvoir écrire quelquechose sur la map, et remplacer width par la largeur que tu as choisi et height par la taille du cadre

    de plus je m'étais un peu trompé dans mes explications désolé

    voici donc la correction :

    class Cadre
    def initialize
    Window_Base.new(0, 0, 130, 130)
    self.contents = Bitmap.new(130 - 32, 130 - 32)
    end
    def refresh
    self.contents.clear #on efface tout
    self.contents.draw_text(0, 0, 100, 32, "hello") #on écrit "hello"
    end
    def update
    refresh #renvoie à def refresh
    end
    end

    class Scene_Map
    alias cadre_main main
    def main
    cadre = Cadre.new
    cadre_main
    cadre.dispose
    end

    alias cadre_update update
    def update
    cadre.update
    cadre_update
    end
    end
    0
  12. gagner79 Messages postés 288 Statut Membre 40
     
    Voici maintenant un truc super important : les variables (pas celles de rpg maker, celles de Ruby)

    Il en existe 4 types :

    (type : - nom
    - exemple
    - où on peut l'utiliser)

    1er type : - variable locale
    - variable
    - dans la méthode où on l'a définie uniquement

    2ème type : - variable d'instance
    - @variable
    - dans la classe où on l'a définie uniquement

    3ème type : - variable inter-méthodes (ou un truc du genre)
    - @@variable
    - dans le script où on l'a définie uniquement

    4ème type : - variable globale
    - $variable
    - partout

    Notez que le 3ème type est très peu utilisé, vous pouvez l'oublier.

    maintenant pour donner une valeur à une variable, c'est simple :

    variable1 = 2
    là, la variable" variable1" a pour valeur 2 (donc un nombre, en Ruby c'est ce qu'on appelle un INTEGER)

    variable2 = "bonjour"
    là, la variable" variable2" a pour valeur "bonjour" (donc un nombre, en Ruby c'est ce qu'on appelle un STRING)

    variable3 = "2"
    là, la variable "variable3" a pour valeur "2" (un string aussi car il est entre guillemets)

    variable4 = variable1
    là, la variable "variable4" a pour valeur la variable "variable1", donc 2

    maintenant pour additioner 2 variables (qui ont pour valeur des INTEGER) :
    variable1 = 1
    variable2 = 2
    variable3 = variable1 + variable2
    là, la variable "variable3" a pour valeur 3 (1 + 2)
    c'est pareil pour soustraire, multiplier, etc.

    maintenant pour faire une concaténation (addition de STRING) :
    variable1 = "bonjour" + " monsieur"
    là, la variable "variable1" a pour valeur "bonjour monsieur"
    donc vous l'avez compris, c'est pareil pour additioner 2 variables qui ont pour valeurs des STRING :
    variable1 = "bonjour"
    variable2 = " monsieur"
    variable3 = variable1 + variable2
    la variable "variable3" a donc pour valeur "bonjour monsieur"

    C'est tout... pour le moment ! :D
    0