Partage
  • Partager sur Facebook
  • Partager sur Twitter

MOOC Ruby

    7 février 2017 à 19:09:54

    Salut,

    Le @ indique qu’il s’agit d’une variable d’instance. Elles sont spécifique à chaque instance de la classe. Dans ton code, @points_de_vie est une variable d’instance (chaque personnage a ses points_de_vie).

    Voici un exemple.

    class Contact
      attr_reader :nom
      attr_accessor :numero
      
      def initialize(nom, numero)
        # @nom est le nom du contact qu’on est en train d’initialiser ici.
        # Chaque personnage a son nom et son numéro.
        @nom = nom 
        @numero = numero
      end
      
      def to_s
        return "#{@nom} : #{@numero}"
      end
    end
    
    lui = Contact.new("Elle", "123456789")
    elle = Contact.new("Lui", "002345678")
    
    puts lui
    puts elle 
    contacts = []
    puts "Voici la liste des contacts."
    contacts << lui
    contacts << elle
    puts contacts
    
    • Partager sur Facebook
    • Partager sur Twitter
    Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
    Anonyme
      11 février 2017 à 12:18:45

      Bonjour , 

      j'ai un probleme ;

      lorsque j'essaye de mettre des crochet ([]) dans la console pour effectuer une tableau , cela m'est impossible . pourquoi ? 

      • Partager sur Facebook
      • Partager sur Twitter
        11 février 2017 à 15:44:46

        Salut,

        Montre-nous ce que tu as essayé.

        • Partager sur Facebook
        • Partager sur Twitter
        Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
          12 février 2017 à 11:11:46

          Bonjour je suis le cour pour apprendre ruby.

          Mais quand je met les commandes d'exemple, sa me dit que ma commande n'est pas reconnu en tant que commande externe ou interne, un programme exécutable ou un fichier de commande. 

          Merci de m'aider a résoudre ce problème. 

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            14 février 2017 à 16:36:38

            Excusez moi pour ma question je me suis rendu compte que c’était une erreur de frappe :)

            Pardon 

            • Partager sur Facebook
            • Partager sur Twitter
              18 février 2017 à 0:31:09

              Synekon, tu utilises quel OS ?
              • Partager sur Facebook
              • Partager sur Twitter
              Ce qui se comprend aisément s'énonce clairement / DocPHP / DocHTML/CSS/JS
                18 février 2017 à 0:45:19

                Synekon, tu utilises quel OS ?

                Je pense qu’il utilise Windows et qu’il a tapé le code dans la console sans lancer irb d’où l’erreur.

                • Partager sur Facebook
                • Partager sur Twitter
                Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                  18 février 2017 à 20:29:59

                  Oui j'utilise windows.

                  Et qu'est que c'est qu'un irb?

                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 février 2017 à 22:09:16

                    irb singifie Interactive Ruby et permet d’entrer une instruction Ruby et de l’exécuter tout de suite. Regarde ici. Quand tu ouvres ta console, tu tapes irb et tu appuies sur Entrée pour lancer irb. Et là, tu peux entrer du code Ruby.

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                      20 février 2017 à 16:00:26

                      Ha d'accord.

                      Il faut donc que je mette irb dans ma console avant de rentrer les commandes?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 février 2017 à 16:10:41

                        Il faut donc que je mette irb dans ma console avant de rentrer les commandes?

                        Tu as regardé le lien que j’ai donné plus haut. Je cite.

                        Une fois l’invite de commande ouverte, il faut taper irb. Nous avons maintenant une magnifique console qui interprète ce que nous écrivons en Ruby.

                        En lançant IRB, nous nous retrouvons face au symbole >. Ce chevron signifie une chose : IRB est à nos ordres, il attend nos instructions. Lorsqu’il nous « répond », sa réponse est située après le signe => sur une nouvelle ligne. Par exemple, en tapant 2 il répond 2 (oui, il répond bien 2).

                        Donc oui, tu ouvre ta console, tu tape irb et tu valides en appuyant sur Entrée.

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                          21 février 2017 à 11:03:51

                          @yo@n97one merci beaucoup pour ta réponse !
                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 février 2017 à 14:30:09

                            De rien. 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
                              22 février 2017 à 18:45:55

                              Merci beaucoup.

                              Dans n'importe quel console ou il en faut une spécifique ? 

                              • Partager sur Facebook
                              • Partager sur Twitter
                                22 février 2017 à 18:52:44

                                Dans n'importe quel console ou il en faut une spécifique ?

                                Ça marche normalement dans n’importe quelle console si Ruby est installé et que son chemin est ajouté aux variable d’environnements de Windows (on te le propose à l’installation).

                                Ça fonctionne bien pour toi ?

                                -
                                Edité par yo@n97one 22 février 2017 à 18:56:13

                                • Partager sur Facebook
                                • Partager sur Twitter
                                Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                  24 février 2017 à 21:28:51

                                  Pourrais tu m'en conseiller une?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    24 février 2017 à 21:45:47

                                    Ben sur Windows, tu as l’invite de commande qui est installée. Elle est parfaitement suffisante.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                      3 mars 2017 à 15:42:13

                                      Bonjour,

                                      j'ai fait la 1ère partie du cours et j'ai un soucis pour le défi n°2 du TP, n'arrivant pas à trouver la solution après plusieurs essais, je voulais regarder l'aide idem pour la solution, une fenêtre noire s'affiche et s'en va en 1 seconde.

                                      je précise que je travaille avec SublimeText3 et la console Cmder, tout fonctionne de ce côté puisque j'ai réussi à suivre le 1ère partie.

                                      J'aurais voulu juste une aide pour le déni n°2 : je n'arrive pas à savoir comment afficher les valeurs d'une ville et de la durée.

                                      J'imagine qu'on doit  lire le tableau Voyages avec each puis utiliser un puts pour l'affichage. Mais mon problème est comment afficher les valeurs de villes et de durée ?

                                      est-il possible aussi d'entrer deux variables après do ? comme ceci |ville,duree| ?

                                      finalement j'ai trouvé la solution

                                      merci de m'aider

                                      -
                                      Edité par gillian59 3 mars 2017 à 16:01:51

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        29 mars 2017 à 5:09:01

                                        Saut! 

                                        j'ai un problème à comprendre comment on peut déduire le nombre de dégâts q'un personne subit 

                                        ce nombre est random ou quoi ?

                                        je parle de l'activité qu'on doit faire pour terminé le tuto de Ruby

                                        Merci

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          29 mars 2017 à 20:53:48

                                          Saut!

                                          j'ai un problème à comprendre comment on peut déduire le nombre de dégâts q'un personne subit

                                          ce nombre est random ou quoi ?

                                          je parle de l'activité qu'on doit faire pour terminé le tuto de Ruby

                                          Merci

                                          Salut,

                                          Je crois bien que c’est laissé à ton appréciation. Pour le hasard, voir la classe Random. Avec Random.rand(10), tu tires un nombre au hasard entre 0 et 10, mais tu peux aussi donner à rand un intervalle en paramètre (Random.random(2..10) te renverra un nombre entre 2 et 10).

                                          -
                                          Edité par yo@n97one 29 mars 2017 à 20:55:46

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                            31 mars 2017 à 17:14:30

                                            Bonjour;

                                            en F2 : Date depot.

                                            en G2 : Date Ajourd'huit().

                                            en H2 : Nombre de jours = ;[Ajourd''huit]-[DATE  DEPOT ])

                                            en J2 : Date accord.

                                            en I2 : =SI(J2)=date;"Accord";SI(G2>=60;"Alerte";"En cours")))

                                            j'aimerai convertir ce code en vba en mettant un simple bouton sur ma feuille sur toute la plage de mon tableau

                                            merci

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              1 avril 2017 à 17:29:52

                                              Salut .. Merci yo@n97one

                                              j'ai un autre problème

                                              Mon code (j'ai pas encore terminé):

                                              class Personne
                                                attr_accessor :nom, :points_de_vie, :en_vie
                                              
                                                def initialize(nom)
                                                  @nom = nom
                                                  @points_de_vie = 100
                                                  @en_vie = true
                                                end
                                              
                                                def info
                                                  # A faire:
                                                  # - Renvoie le nom et les points de vie si la personne est en vie
                                                  if @en_vie
                                                    "#{@nom} (#{@points_de_vie}/100 pv)"
                                                  # - Renvoie le nom et "vaincu" si la personne a été vaincue
                                                  else
                                                    "#{@nom} (vaincu)"
                                                  end
                                                end
                                              
                                                def attaque(personne)
                                                  # A faire:
                                                  # - Fait subir des dégats à la personne passée en paramètre
                                                  subit_attaque(rand(25..50))######A refaire
                                                  # - Affiche ce qu'il s'est passé
                                                  puts "#{@nom} attaque #{personne}"
                                                end
                                              
                                                def subit_attaque(degats_recus)
                                                  # A faire:
                                                  # - Réduit les points de vie en fonction des dégats reçus
                                                  @points_de_vie-=degats_recus
                                                  # - Affiche ce qu'il s'est passé
                                                  puts "#{@nom} subit #{degats_recus}hp de dégats!"
                                                  # - Détermine si la personne est toujours en_vie ou non
                                                  puts "#{@nom} a été vaincu" unless @en_vie
                                                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
                                              
                                                def degats
                                                  # A faire:
                                                  # - Calculer les dégats
                                                  # - Affiche ce qu'il s'est passé
                                                end
                                              
                                                def soin
                                                  # A faire:
                                                  # - Gagner de la vie
                                                  # - Affiche ce qu'il s'est passé
                                                end
                                              
                                                def ameliorer_degats
                                                  # A faire:
                                                  # - Augmenter les dégats bonus
                                                  # - Affiche ce qu'il s'est passé
                                                end
                                              end
                                              
                                              class Ennemi < Personne
                                                def degats
                                                  # A faire:
                                                  # - Calculer les dégats
                                                  100-points_de_vie
                                                end
                                              end
                                              
                                              class Jeu
                                                def self.actions_possibles(monde)
                                                  puts 'ACTIONS POSSIBLES :'
                                              
                                                  puts '0 - Se soigner'
                                                  puts '1 - Améliorer son attaque'
                                              
                                                  # On commence à 2 car 0 et 1 sont réservés pour les actions
                                                  # de soin et d'amélioration d'attaque
                                                  i = 2
                                              
                                              
                                                  monde.ennemis.each do |ennemi|
                                                    puts "#{i} - Attaquer #{ennemi.info}"
                                                    i += 1
                                                  end
                                                  puts '99 - Quitter'
                                                end
                                              
                                                def self.est_fini(joueur, monde)
                                                  # A faire:
                                                  # - Déterminer la condition de fin du jeu
                                                  !joueur.en_vie && !monde.ennemis_en_vie.empty?
                                                end
                                              end
                                              
                                              class Monde
                                                attr_accessor :ennemis
                                              
                                                  # A faire:
                                                  # - Ne retourner que les ennemis en vie
                                                  def ennemis_en_vie
                                                    ennemis.select { |e| e.en_vie }
                                                  end
                                              end
                                              
                                              ##############
                                              
                                              # Initialisation du monde
                                              monde = Monde.new
                                              
                                              # Ajout des ennemis
                                              monde.ennemis = [
                                                Ennemi.new('Balrog'),
                                                Ennemi.new('Goblin'),
                                                Ennemi.new('Squelette')
                                              ]
                                              
                                              # Initialisation du joueur
                                              joueur = Joueur.new('Jean-Michel Paladin')
                                              
                                              # Message d'introduction. \n signifie "retour à la ligne"
                                              puts "\n\nAinsi débutent les aventures de #{joueur.nom}\n\n"
                                              
                                              # Boucle de jeu principale
                                              100.times do |tour|
                                                puts "\n------------------ Tour numéro #{tour} ------------------"
                                              
                                                # Affiche les différentes actions possibles
                                                Jeu.actions_possibles(monde)
                                              
                                                puts "\nQUELLE ACTION FAIRE ?"
                                                # On range dans la variable "choix" ce que l'utilisateur renseigne
                                                choix = gets.chomp.to_i
                                              
                                                # En fonction du choix on appelle différentes méthodes sur le joueur
                                                if choix == 0
                                                  joueur.soin
                                                elsif choix == 1
                                                  joueur.ameliorer_degats
                                                elsif choix == 99
                                                  # On quitte la boucle de jeu si on a choisi
                                                  # 99 qui veut dire "quitter"
                                                  break
                                                else
                                                  # Choix - 2 car nous avons commencé à compter à partir de 2
                                                  # car les choix 0 et 1 étaient réservés pour le soin et
                                                  # l'amélioration d'attaque
                                                  ennemi_a_attaquer = monde.ennemis[choix - 2]
                                                  joueur.attaque(ennemi_a_attaquer)
                                                end
                                              
                                                puts "\nLES ENNEMIS RIPOSTENT !"
                                                # Pour tous les ennemis en vie ...
                                                monde.ennemis_en_vie.each do |ennemi|
                                                  # ... le héro subit une attaque.
                                                  ennemi.attaque(joueur)
                                                end
                                              
                                                puts "\nEtat du héro: #{joueur.info}\n"
                                              
                                                # Si le jeu est fini, on interompt la boucle
                                                break if Jeu.est_fini(joueur, monde)
                                              end
                                              
                                              puts '\nGame Over!\n'
                                              
                                              # A faire:
                                              # - Afficher le résultat de la partie
                                              
                                              if joueur.en_vie
                                                puts 'Vous avez gagné !'
                                              else
                                                puts 'Vous avez perdu !'
                                              end
                                              
                                              
                                              
                                              
                                              

                                              ici un problème s'affiche et il s'ffiche dans des déférent place dans ce code

                                               def self.actions_possibles(monde)
                                                  puts 'ACTIONS POSSIBLES :'
                                              
                                                  puts '0 - Se soigner'
                                                  puts '1 - Améliorer son attaque'
                                              
                                                  # On commence à 2 car 0 et 1 sont réservés pour les actions
                                                  # de soin et d'amélioration d'attaque
                                                  i = 2
                                              
                                              
                                                  monde.ennemis.each do |ennemi|
                                                    puts "#{i} - Attaquer #{ennemi.info}"
                                                    i += 1
                                                  end
                                                  puts '99 - Quitter'
                                                end

                                              il me dit que la table ennemis n'existe pas est la même chose pour les methodes

                                              j'éspère que j'ai bien identifier mon problème

                                              Merci d'avance


                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                1 avril 2017 à 19:28:53

                                                Salut,

                                                Je n’ai pas compris ton problème, peux-tu copier-coller l’erreur que tu obtiens. Sinon, par rapport au code.

                                                • Ce serait mieux de définir la méthode to_s à la place de la méthode infos (pour pouvoir écrire puts joueur).
                                                • On préfère les variables et méthodes du genre vivant? à la place de en_vie. D’ailleurs, ce serait mieux de faire une méthode vivant? plutôt que d’utiliser une variable. Cette méthode renverrait juste @points_de_vie > 0.
                                                • C’est plutôt #{@nom} attaque #{personne.nom}.
                                                • Si Jeu n’a pas vocation à être instancié, autant en faire un module.
                                                • Dans les actions possibles, on ne doit pouvoir attaquer que les ennemis encore en vie.
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                                  1 avril 2017 à 22:02:54

                                                  Merci pour ces explications .. is sont très utiles

                                                  L'erreur est:

                                                  cannot find 'ennemis'

                                                  cela s'affiche dans la ligne numero 90

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    1 avril 2017 à 22:24:26

                                                    Tu es sûr que c’est exactement le code plus haut que tu utilises ? Je viens de le tester et je n’obtiens pas l’erreur que tu donnes (et monde.ennemis existe bien).

                                                    -
                                                    Edité par yo@n97one 1 avril 2017 à 22:24:36

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                                      1 avril 2017 à 22:33:18

                                                      Oui maintenant le code marche

                                                      j'ai copier coller mon code par la création d'un nouveau File et ça fonctionne

                                                      je sais pas quel a été le problème

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        1 avril 2017 à 22:48:55

                                                        Peut-être qu’il y avait une petite modification, ou un autre truc du genre. Le plus important c’est qu’il n’y ait plus d’erreur.

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                                          5 avril 2017 à 8:44:57

                                                          Avis perso, l'exercice proposé n'est pas très motivant.
                                                          Il aurait fallut un exercice guidé étape par étape.

                                                          -
                                                          Edité par Keanny 6 avril 2017 à 8:49:35

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            8 avril 2017 à 2:50:19

                                                            Avis perso, l'exercice proposé n'est pas très motivant. Il aurait fallut un exercice guidé étape par étape.

                                                            C’est vrai que l’exercice final ne motive pas tout le monde et généralement ceux qui suivent le tutoriel trouvent qu’il n’est pas assez guidé et est d’un niveau trop élevé par rapport au reste du cours. Personnellement, j’ai juste survolé le tutoriel pour voir les points qu’il abordait et il est vrai que le tutoriel est assez léger. Tu trouveras d’autres ressources sur Internet (ou avec des livres) et tu peux poster sur le forum si tu as besoin d’aide.

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                            Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs

                                                            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