试图建立一个纸牌游戏,给了5张牌的手在红宝石


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张牌时遇到了问题。我一直得到这个错误:

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

错误告诉您需要构建带有Deck的Hand。下面的两个类可以用下面的代码来代替:

deck = Deck.new # create new deck
hand = Hand.new deck # initialize hand with the deck
hand.display_hand
puts hand

相关内容

最新更新