Undefined method `name' for nil:NilClass [Fermé]

Signaler
Messages postés
81
Date d'inscription
vendredi 24 octobre 2014
Statut
Membre
Dernière intervention
29 juin 2016
-
Bonjour, je suis tout tout nouveau dans la programmation ruby, j'essaie quelques petites choses et je suis bloqué à une erreur qui est celle mentionnée dans le titre.

Voilà le code des fichiers qui posent problème:
load 'deck_characters.rb'
load 'chara_d.rb'
load 'player.rb'

begin
    deck = Deck_Characters.new
    je = Player.new("Cyprien", 4, 2, deck)
    je.draw_character(deck)
    puts je.character.name
end

load 'deck_characters.rb'
load 'nilChar.rb'

class Player
    attr_reader     :name
    attr_reader     :hand
    attr_reader     :gold
    attr_reader     :character
    attr_accessor   :gold

    def initialize(name, nb_cards, money, deck)
        @name = name
        @hand = Deck.new
        @hand.draw_mult(deck, nb_cards)
        @gold = money
        @character = NilChar.new
    end

    def draw_character(deck_char)
        @character = deck_char.draw
    end
end

load 'deck.rb'
load 'assassin.rb'
load 'voleur.rb'
load 'magicien.rb'
load 'roi.rb'

class Deck_Characters < Deck
    attr_reader :cards

    def initialize
        super( Assassin.new , Voleur.new , Magicien.new , Roi.new )
    end

    def draw
        @cards.pop
    end
end


L'erreur précise est la suivante:
main.rb:9:in `<main>': undefined method `name' for nil:NilClass (NoMethodError)


J'ai essayé de remplacer le contenu de la méthode Deck_Characters.draw par Assassin.new pour voir si ça allait marcher et ça fonctionne, mais c'est pas trop ce que j'ai envie de faire avec cette méthode.
Je suis habitué aux pointeurs du C, et ça aurait été plus facile avec, parce que là je ne comprends juste pas la raison du disfonctionnement, y'a-t-il une bonne âme disposée à éclairer ma lanterne ? :)

Merci par avance !