Partage
  • Partager sur Facebook
  • Partager sur Twitter

MOOC Ruby

    10 mars 2018 à 14:10:24

    Bonjour tout le monde, 

    J'ai récemment commencé le cours sur la programmation en Ruby, je suis au dernier exercice et je bloque complètement sur certaines méthodes, notamment les méthodes attaque et subit_attaque ... 

    Si certains peuvent me mettre sur la voie (pas me donner la correction hein ^^) je leur en serai reconnaissant :) 

    Merci ! 

    • Partager sur Facebook
    • Partager sur Twitter
      10 mars 2018 à 15:17:31

      Salut,

      Poste ton code en utilisant les balises de code. Que penses tu qu’il faille faire dans la méthode attaque ? Et dans dégâts ? J’ai pas lu ce cours mais je crois qu’il y a des commentaires qui disent ce que la méthode doit faire, non ?

      • Partager sur Facebook
      • Partager sur Twitter
      Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
        10 mars 2018 à 15:55:22

        Hello :) Dans la méthode attaque, il faut faire subir des dégâts à la personne passée en paramètre.

        Dans la methode subit_attaque, il faut réduire les points de vie en fonction des dégâts reçus, puis calculer si la personne est encore en vie ou pas. 

        Ca parait simple et pourtant je bloque complètement là dessus. Autant j’ai à peu près réussi certaines methodes, mais là ... 

        • Partager sur Facebook
        • Partager sur Twitter
          10 mars 2018 à 16:09:21

          Ok, avec ce que tu me dis là, je comprends ton incompréhension, les noms des méthodes sont mal choisis. En fait, attaque doit appeler subit_attaque en lui donnant en paramètre le nombre de dégâts à infliger. Quant à l'attribut en_vie, c'est une aberration qui devrait être remplacé par une méthode vivant? qui retourne points_de_vie > 0.

          • Partager sur Facebook
          • Partager sur Twitter
          Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
            10 mars 2018 à 16:53:31

            Ah je me disais bien qu’il devait y avoir une notion « composition » là dedans (Enfin je crois que c’est ca ^^)

            Ok, j’essaie dès que j’ai un moment, merci beaucoup, je reviens vers vous pour vous tenir au courant.

            • Partager sur Facebook
            • Partager sur Twitter
              10 mars 2018 à 17:04:14

              Non, il n'y a pas de composition dans l'histoire (la composition, c'est par exemple une classe Train qui contient un attribut locomotive), juste de la mauvaise conception.

              • Partager sur Facebook
              • Partager sur Twitter
              Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
              Anonyme
                24 avril 2018 à 19:02:40

                Bonjour, 

                Je suis tout nouveau dans le monde de l'informatique et la programmation. Pardonnez-moi si je ne poste pas au bon endroit.

                J'ai installé Ruby une premiere fois tout fonctionnait bien jusqu’à la partie boucle du cours, où il faut creer du code dans un fichier. Je n'arrivais pas à faire le lien entre la console et le fichier boucle.rb. J'ai consulté des forums et il était conseillé de supprimer puis d'installer à nouveau Ruby pour réparler le probleme.

                C'est ce que j'ai sauf que depuis, quand je tape "irb" dans la console l'ordinateur ne reconnait plus ruby et m'affiche ça:

                 C:/Programmation/Ruby/lib/ruby/site_ruby/rbreadline.rb:6135:in `delete': invalid byte sequence in UTF-8 (ArgumentError)

                        from C:/Programmation/Ruby/lib/ruby/site_ruby/rbreadline.rb:6135:in `alloc_history_entry'

                        from C:/Programmation/Ruby/lib/ruby/site_ruby/rbreadline.rb:6168:in `add_history'

                        from C:/Programmation/Ruby/lib/ruby/site_ruby/readline.rb:368:in `<<'

                        from C:/Programmation/Ruby/lib/ruby/2.4.0/irb/ext/save-history.rb:76:in `block (2 levels) in load_history'

                        from C:/Programmation/Ruby/lib/ruby/2.4.0/irb/ext/save-history.rb:76:in `each'

                        from C:/Programmation/Ruby/lib/ruby/2.4.0/irb/ext/save-history.rb:76:in `block in load_history'

                        from C:/Programmation/Ruby/lib/ruby/2.4.0/irb/ext/save-history.rb:75:in `open'

                        from C:/Programmation/Ruby/lib/ruby/2.4.0/irb/ext/save-history.rb:75:in `load_history'

                        from C:/Programmation/Ruby/lib/ruby/2.4.0/irb/ext/save-history.rb:65:in `extended'

                        from C:/Programmation/Ruby/lib/ruby/2.4.0/irb/ext/save-history.rb:21:in `extend'

                        from C:/Programmation/Ruby/lib/ruby/2.4.0/irb/ext/save-history.rb:21:in `init_save_history'

                        from C:/Programmation/Ruby/lib/ruby/2.4.0/irb/ext/save-history.rb:45:in `save_history='

                        from C:/Programmation/Ruby/lib/ruby/2.4.0/irb/context.rb:92:in `initialize'

                        from C:/Programmation/Ruby/lib/ruby/2.4.0/irb.rb:412:in `new'

                        from C:/Programmation/Ruby/lib/ruby/2.4.0/irb.rb:412:in `initialize'

                        from C:/Programmation/Ruby/lib/ruby/2.4.0/irb.rb:383:in `new'

                        from C:/Programmation/Ruby/lib/ruby/2.4.0/irb.rb:383:in `start'

                        from C:/Programmation/Ruby/bin/irb.cmd:19:in `<main>'

                Quelqu'un sait ce qu'il faut faire dans ce cas la?
                Merci d'avance.
                • Partager sur Facebook
                • Partager sur Twitter
                  24 avril 2018 à 19:16:17

                  Salut,

                  Le conseil de réinstaller Ruby était quand même assez mauvais. Pour ton problème, essaie de supprimer le fichier .irb_history (il est dans le dossier C:\Users\<nom_utilisateur>.</nom_utilisateur>

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                  Anonyme
                    24 avril 2018 à 19:21:30

                    Je te remercie beaucoup mon problème est résolu !!
                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 avril 2018 à 19:23:12

                      Super,

                      Bonne continuation. :)

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                        13 septembre 2018 à 16:12:58

                        Console Ruby fichier vide

                        Bonjour,

                        Comme beaucoup apparemment, j'ai un petit souci pour relier le fichier boucles.rb à la console.

                        Voici ce que je dois faire :

                        créer un fichier vide boucles.rb ;

                        l'ouvrir dans votre éditeur de texte à côté de votre console ;

                        placer votre console dans le dossier qui contient votre fichier boucles.rb (pour cela tapez cd nom_du_dossier dans votre console)

                        Voici ce que je fais :

                        je créé un fichier boucles.rb où je ne mets rien dedans. Je l'enregistre dans un dossier qui s'appelle test qui est sur mon bureau.

                        je l'ouvre avec sublim text

                        dans ma console je tape tout ce qui me paraît approcher du chemin de mon dossier ... mais non, ça ne fonctionne pas ... (voir pièce jointe copie écran)

                        Avez-vous une idée ? (j'ai évidemment parcouru les précédents topics du forum en quête d'une solution qui fonctionnerait pour moi mais non, ça ne marche pas...)

                        Merci pour votre aide !

                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 septembre 2018 à 15:58:47

                          Bonjour, 

                          J'en suis à la première partie du cours avec les voyages et je voulais m'amuser, une fois le code fait, a changé quelques trucs et à vouloir des informations plus précise. 

                          Voici mon code : 

                          -------------------------------------------------------------------------------------------------------------------------------------------

                          villes = ['NewYork', 'Dubai', 'Singapour', 'Mexico', 'Bali']

                          voyages = [

                              {ville: "NewYork" , duree: 10 },

                              {ville: "Dubai", duree: 5 },

                              {ville: "Singapour", duree: 2 },

                              {ville: "Mexico", duree: 15 },

                              {ville: "Bali", duree: 365 }

                                    ]

                          voyages.each do |voyage|

                          #puts "Voyage à #{voyage[:ville] } " + "de" + " "+ "#{voyage[:duree]} jours" 

                          #Je veux faire dire à la console que cette personne veut aller à Bali pour 365 jours 

                          puts "Cette personne veut aller à #{voyage[:ville] }" + " " + "pour" + " " + "#{voyage[:duree]} jours"

                          end

                          -------------------------------------------------------------------------------------------------------------------------------------------

                          Mon but est donc de sélectionner la donnée Bali et et automatiquement la donnée 365 jours. 

                          j'ai essayé ça : 

                          puts "Cette personne veut aller à #{voyage[:4] }" + " " + "pour" + " " + "#{voyage[:4]} jours" ( pour dire la 4eme valeur dans le tableau) mais ça ne fonctionne pas.. 

                          Auriez-vous des idées ? 

                          Merci d'avance :) 

                          -
                          Edité par MustaphaAitOuayhou 14 septembre 2018 à 15:59:48

                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 septembre 2018 à 6:08:11 - Message modéré pour le motif suivant : Message complètement hors sujet


                              24 septembre 2018 à 16:34:04

                              bonjour j'ai un souci sur un exo qui demande l'année de naissance d'un utilisateur et qui va afficher chaque année depuis son année de naissance jusqu'en 2017. Pour chaque année affichée, le programme devra annoncer l'age que l'utilisateur a eu cette année voici mon code:

                              puts "annee de naissance"

                              annee gets.chomp

                              for i in annee.to_i..2017

                              puts i end

                              • Partager sur Facebook
                              • Partager sur Twitter
                                16 octobre 2018 à 12:51:06

                                Bonjour,

                                Je suis désolée si ma question est idiote... je débute !

                                Impossible de faire le lien avec la console et l'éditeur de texte... voilà ce que l'on m'affiche :

                                Pourriez-vous me préciser quels sont les outils que vous utilisez et comment vous avez procédé exactement, svp ?

                                Merci beaucoup :-)

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  16 octobre 2018 à 13:48:03

                                  Hello,

                                  Pourquoi tu est en irb? C'est une commande bash non ruby.

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Architecte logiciel - Software craftsmanship convaincu.

                                    16 octobre 2018 à 16:50:13

                                    Bonjour,

                                    J'ai un petit souci pour réaliser le TP final. J'ai suivi le cours, j'ai compris dans l'ensemble, mais à la pratique, c'est là qu'on voit que la marge de progression est énorme :)

                                    J'obtiens l'affichage suivant:

                                    Ainsi débutent les aventures de Jean-Michel Paladin
                                    Jean-Michel Paladin attaque Balrog
                                    jeu2.rb:22:in `subit_attaque': undefined method `-' for nil:NilClass (NoMethodError)
                                            from jeu2.rb:15:in `attaque'
                                            from jeu2.rb:52:in `<main>'

                                    La méthode "subit_attaque" n'est pas définie... Allons bon, je capte pas pourquoi...

                                    Je vous mets mon code:

                                    class Personne
                                      attr_accessor :nom, :points_de_vie, :en_vie
                                    
                                      def initialize(nom)
                                        @nom = nom
                                        @points_de_vie = 100
                                        @en_vie = true
                                      end
                                    
                                      def attaque(personne)
                                        # - Fait subir des dégats à la personne passée en paramètre
                                        # - Affiche ce qu'il s'est passé
                                        puts "#{nom} attaque #{personne.nom}"
                                        deg = 1
                                        personne.subit_attaque(deg)
                                      end
                                    
                                      def subit_attaque(degats_recus)
                                        # - Réduit les points de vie en fonction des dégats reçus
                                        # - Affiche ce qu'il s'est passé
                                        # - Détermine si la personne est toujours en_vie ou non
                                        points_de_vie -= degats_recus
                                        puts "#{nom} subit #{degats_recus} hp de dégâts"
                                        #if points_de_vie <= 0
                                          #en_vie = false
                                        #end
                                      end
                                    end
                                    
                                    class Joueur < Personne
                                      attr_accessor :degats_bonus
                                    
                                      def initialize(nom)
                                        # Par défaut le joueur n'a pas de dégats bonus
                                        @degats_bonus = 0
                                    
                                        # Appelle le "initialize" de la classe mère (Personne)
                                        super(nom)
                                      end
                                    end
                                    
                                    class Ennemi < Personne
                                    end
                                    
                                    
                                    joueur = Joueur.new("Jean-Michel Paladin")
                                    ennemi = Ennemi.new("Balrog")
                                    
                                    
                                    puts "Ainsi débutent les aventures de #{joueur.nom}\n"
                                    
                                    joueur.attaque(ennemi)
                                    

                                    Si vous pouvez me filer un coup de main et me mettre sur la bonne voie, ça me rendrait service.


                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      16 octobre 2018 à 20:08:38

                                      @Xt0f ça vient certainement du fait que tu modifies la valeur de point_de_vie sans préciser self.point_de_vie. Le self est implicite pour récupérer la valeur pas pour la modifier ou la redéfinir.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        16 octobre 2018 à 21:18:28

                                        Explication complementaire:

                                        attr_accessor vas creer une fonction, ici

                                        attr_accessor :points_de_vie vas creer

                                        def points_de_vie
                                          @points_de_vie
                                        end
                                        

                                        Il te faut donc appeller @points_de_vie dirrectement ou faire de meme avec le setter.

                                        Les getter et les setter sont de mauvaises pratiques objets, car une classe doit te fournir un service et non stocker de la donnee.

                                        Une petite astuce pour mieux conceptualiser est d'arreter de demander, mais d'agir, la classe sais quoi faire et quand.

                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Architecte logiciel - Software craftsmanship convaincu.

                                          17 octobre 2018 à 9:30:22

                                          Pour compléter ce que dit @necros211, on n'a aucun besoin de savoir combien de points de vie a une personne, ça fait partie de son fonctionnement interne. Nous ce qu'on veut, c'est pouvoir savoir s'il est en vie et pouvoir le frapper. Et ceci indépendamment de comment c'est codé en interne (par exemple, il pourrait ne pas y avoir de points de vie, et c'est juste qu'au bout d'un temps aléatoire il n'est pas en vie, il pourrait avoir des points de santé, des points d'énergie et des points de mental et dès qu'il n'a plus de points pour un des trois il est mort, etc.).

                                          Ceci passe par exemple par avoir une méthode alive? plutôt qu'une variable d'instance @en_vie. Avec les points de vie alive? serait juste @hp &gt; 0.

                                          De plus, ce serait bien de ne pas pouvoir modifier @nom ; on aimerait bien qu'un personnage garde le même nom pendant toute la partie. Et donc, il faudrait utiliser attr_reader pour le nom et pas attr_accessor.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                            22 octobre 2018 à 22:19:12

                                            Merci à vous 3 pour vos réponses.

                                            Tu avais raison Nicolas. Il manquait bien "self". :)

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              27 octobre 2018 à 16:03:50

                                              Je viens de commencer les cours depuis quelques heures... C'est aussi beau que l'on me l'avait  décrit, j'ai hâte de voir ce que veut dire "puissant" maintenant ! Merci pour les cours, c'est clair et très agréable à lire / regarder !
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                28 octobre 2018 à 19:38:50

                                                Salut,

                                                Ben « puissant », ça veut surtout dire tout et n'importe quoi en terme de langage de programmation. Sinon, attention à ne pas juste lire et regarder, sans pratique, ça permettra difficilement de progresser. Donc, ne pas hésiter à faire des exercices et à demander des avis à leur sujet sur le forum. Et bien sûr, ne pas hésiter à poser des questions sur le forum.

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                                  28 octobre 2018 à 21:09:45

                                                  Merci du précieux conseil, j'ai longtemps fait cette erreur... Ruby me plaît beaucoup jusque là (quelques heures :p), ça donne envie de manipuler du code !

                                                  D'ailleurs, j'en suis au TD de fin de chapitre (le jeu avec Jean-Michel Paladin), j'essaye de l'aborder petit bout par petit bout... mais je bloque déjà ! Si les coups de mains sont autorisés, j'suis pas contre une petite pichenette pour avancer ce soir !


                                                  J'ai décidé d'attaquer par la méthode "soin" :

                                                   def soin
                                                      # A faire:
                                                      points_de_vie += rand(25)
                                                      puts "#{nom} s'est soigné de #{hp_soignes} points de vie (#{points_de_vie}HP)"
                                                      # - Gagner de la vie
                                                      # - Affiche ce qu'il s'est passé
                                                    end


                                                  Lorsque j’exécute le code, j'ai une erreur "jeu.rb:49:in `soin': undefined method `+' for nil:NilClass (NoMethodError)" (49 étant "point_de_vie += rand(25)).

                                                  Quand je compare l'héritage de "Personne" et "Joueur" à celui de "Animal" et "Chat" (exercice précédent), tout me semble pourtant similaire :

                                                  • j'accède directement aux variables concernées ("point_de_vie" et "nom" pour le jeu, "nom" pour les animaux), présentent dans les constructeurs ("Personne" / "Animal").
                                                  • les méthodes sont définies dans la classe héritée ("Joueur" pour le jeu, "Chat"/"Chien" pour les animaux)


                                                  Du coup je comprends pas vraiment pourquoi il n'arrive pas à accéder à la méthode... J'ai essayé des variantes comme "Joueur.point_de_vie", "joueur.point_de_vie", "Personne.point_de_vie"... Mais le problème ne semble pas venir de là !

                                                  Si quelqu'un pouvait me guider un petit peu ce serait vraiment apprécié ... Sinon j'me gratterai la tête et referai les cours :p

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    28 octobre 2018 à 21:10:25

                                                    Oui, je te conseil de poster ton code sur le forum pour chaque exercice majeur du cours.

                                                    De plus je me permet de te proposer un outil: Rubocop.

                                                    Cet outil vas analyser ton code source et te dire si ton code:

                                                    • Ne respecte pas les normes de nomages
                                                    • Est trop complexe
                                                    • Est trop long

                                                    Ce sont des informations importante pour mieux progresser.

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter

                                                    Architecte logiciel - Software craftsmanship convaincu.

                                                      28 octobre 2018 à 21:42:03

                                                      Et bien sûr, quand tu fournis du code, il vaut mieux fournir le code nécessaire à la compréhension (par exemple le code de la classe Personnage pour ton problème précédent. Pour ton problème, la variable d'instance pour le nom, c'est @nom pas nom (ou tu crées l'accesseur nécessaire avec attr_reader, ce qui, pour le cas du prénom, n'est pas déconnant ).

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                                        28 octobre 2018 à 22:14:56

                                                        Merci necros, j'me penche plus en détail sur gem et Rubocop dès que j'aurais fini cet exercice !

                                                        Et merci aussi à toi ya@n97one, je pensais que les arobases étaient réservés à la méthode initialize... C'est reparti :D

                                                        edit : Amen, Jean-Michel est capable d'attaquer !




                                                        -
                                                        Edité par Sumak 29 octobre 2018 à 14:54:15

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          29 octobre 2018 à 19:53:07

                                                          Non, les arobases indiquent qu'il s'agit d'une variable d'instance. On peut accéder et modifier une variable d'instance dans les méthodes de classe.

                                                          class Personne
                                                            def initialize(nom, prenom)
                                                              @nom = nom.upcase
                                                              @prenom = prenom.capitalize
                                                            end
                                                          
                                                            def to_s
                                                              return "#{@nom} #{@prenom}"
                                                            end
                                                          end
                                                          

                                                          Mais, on ne peut pas y accéder depuis l'extérieur.

                                                          p = Personne.new("aa", "bb")
                                                          print(p) # On obtient "AA Bb"
                                                          print(p.nom) # Une erreur, la méthode nom n'existe pas
                                                          

                                                          Il nous faut donc définir une méthode pour donner accès à @nom.

                                                          class Personne
                                                            def nom
                                                              @nom
                                                            end
                                                          
                                                            # Le reste du code.
                                                          end
                                                          

                                                          Cette fois, après avoir créé une personne p, on peut faire p.nom, la méthode p existe.

                                                          Mais, on ne peut pas modifier nom, pour cela, il nous faut créer une autre méthode qui prend en paramètre le nouveau nom et fait @nom = nouveau_nom. Généralement, on appelle cette méthode nom_attribut=, donc ici nom= et prenom=Et là, c'est OK (en fait, comme je l'ai dit plus haut, on préférerait ne pas pouvoir modifier les noms et donc on ne créerait pas nom=.

                                                          Mais, Ruby est gentil et avec attr_reader, attr_writer et attr_accessor, on peut créer ces méthodes plus facilement. attr_reader crée seulement nom (donc en gros, permet d'accéder à la variable d'instance en lecture), attr_writer crée nom= (et permet donc d'accéder à la variable d'instance en écriture), et attr_accessor crée les deux.

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                                            29 octobre 2018 à 22:33:57

                                                            Wow c'est super clair, merci de répondre aux questions que je ne m'étais pas encore posé ! :D

                                                            Si j'essaye de reformuler et de synthétiser, les variables d'instance sont donc des variables "verrouillées" et nécessaires à l'instanciation, dont on peut ajuster les propriétés (lecture/écriture) attr_ ?

                                                            Du coté de Jean-Michel Paladin ça avance, c'est "fini avec plein de bug" ! J'ai des petits soucis avec l'état mort ou vivant des ennemis et des petits soucis d'affichage... Mais j'me pencherai dessus demain, en espérant réussir à terminer ! J'ai pas défini ni utiliisé la méthode (fonction ?) "Personne.subit_attaque" par contre... c'est peut être pour ça que ça bug :p

                                                            Merci beaucoup en tout cas, bonne fin de soirée à toi

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              31 octobre 2018 à 18:43:57

                                                              Bonsoir,

                                                              Bon, j'ai l'impression de bloquer à la dernière ligne de code des Aventures de Jean-Michel. Tout fonctionne à merveille, sauf si j'ai mal débuggé, sauf une condition de victoire : "tout les ennemis sont morts".

                                                              Le soucis que lorsque je veux déterminé si les conditions de victoire sont remplies ou non, la méthode "Jeu.est_fini" renvoie "true" (alors que je m'attends à ce qu'elle renvoie false : il reste des ennemis en vie)
                                                              J'ai pas touché aux conditions du break en fin de boucle :
                                                              break if Jeu.est_fini(joueur, monde)

                                                              def self.est_fini(joueur, monde)
                                                                  # Renvoi "true" si le jeu doit se finir     
                                                              # A faire: # - Déterminer la condition de fin du jeu joueur.en_vie == false monde.ennemis do |ennemi| ennemi.en_vie == false end end end

                                                              J'ai également tenté

                                                               joueur.en_vie == false && monde.ennemis.each do |ennemi|
                                                                   ennemi.en_vie == false

                                                              et naïvement, j’espérais accéder à la propriété qui m’intéresse via "monde.ennemis.en_vie", mais je semble être contraint d'utiliser un ".each do ||"...


                                                              Pourtant, un "puts ennemi.en_vie" dans ma methode "ennemis_en_vie" retourne bien "false" une fois les ennemis tués

                                                              def ennemis_en_vie
                                                                  # A faire:
                                                                  # - Ne retourner que les ennemis en vie
                                                                  ennemis.each do |ennemi| 
                                                                    puts ennemi.en_vie
                                                                    if ennemi.en_vie == true    
                                                                      puts "#{ennemi.nom} inflige #{ennemi.degats} dégats\n" 
                                                                    else
                                                                      ennemi.en_vie = false
                                                                    end
                                                                  end   
                                                                end

                                                              Mais impossible de d'utiliser ce booléen pour créer ma condition de victoire :'(




                                                              -
                                                              Edité par Sumak 31 octobre 2018 à 18:46:10

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              MOOC Ruby

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown