2016-07-05 6 views
0
puts "Enter your a number:" 

class Card 

    attr_accessor :rank, :suit 

    def initialize(rank,suit) 
    self.rank = rank 
    self.suit = suit 
    end 


    def output_card 
    puts "#{self.rank} of #{self.suit}" 
    end 

end 


class Deck 

    def initialize 
    @cards = [] 
    @ranks = [:A, 2, 3, 4, 5, 6, 7, 8, 9, 10, :J, :Q, :K] 
    @suits = [:Spades, :Hearts, :Diamonds, :Clubs]  

    @suits.each do |suit| 
     @ranks.each do |rank| 
     @cards << Card.new(rank, suit) 
     end 
    end 
    end 

    def shuffle 
    @cards.shuffle! 
    end 

    def deal 
    @cards.shift 
    end 


end 


class Hand 

    def initialize(deck) 
     @hand = [] 
     5.times do 
     @hand << deck.deal 
     end 
    end 

    def display_hand 
     @hand.each do |card| 
     @hand.output_card 
     end 

    end  
end 




hand = Hand.new 
hand.display_hand 
puts hand 

5枚のカードを出力するカードゲームを構築しようとしています。しかし、5枚のカードを出力するのに問題があります。私が呼ぶときルビーで5枚のカードを手に入れたカードゲームを作成しようとしています

card_game.rb:46:in `initialize': wrong number of arguments (given 0, expected 1) (ArgumentError) 
    from card_game.rb:64:in `new' 
    from card_game.rb:64:in `<main>' 

:私はこのエラーを取得しておく

hand = Hand.new 
hand.display_hand 
puts hand 

答えて

1

エラーは、ハンドウィットにデッキを構築する必要があることを語っています。 2つのクラスの下で、代わりにこのコードを試してください:

deck = Deck.new # create new deck 
hand = Hand.new deck # initialize hand with the deck 
hand.display_hand 
puts hand 
関連する問題