2016-08-12 21 views
0

私はカードゲームの基本を作りようとしています。最初のデッキを作成/テストする際に、私は自分のルビーコードを実行すると次のエラーメッセージが表示されます。Rubyの構文エラー、予期しない入力の終わり、expecting keyword_end

gofish.rb:30: syntax error, unexpected '\n', expecting :: or '[' or '.' 
gofish.rb:73: syntax error, unexpected end-of-input, expecting keyword_end 
deck.add_cards 

私は可能な解決策を見上げて、私は私の行方不明エンドを見つけるように見えることはできません。それはおそらく別のものかもしれませんか?私はルビーにはとても新しいです。

class Deck 

    def initialize 
     @ranks = %w(2 3 4 5 6 7 8 9 10 Jack Queen King Ace) 
     @suits = %w(Clubs Spades Hearts Diamonds) 
     @cards = [] 

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

    def shuffle 
     @cards.shuffle 
    end 

    def deal 
     @cards.shift 
    end 

    def empty? 
     @cards.empty? 
    end 

    def add_cards(*cards) 
     *cards.each do |card| 
      @cards << card 
     end #line 30 
    end 

    def to_s 
     output = "" 

     @cards.each do |card| 
      output = output + card.to_s + "\n" 
     end 

     return output 
    end 
end 

class Hand 

    def initialize 
    end 

    def search() 
    end 
end 

class Card 

    attr_reader :rank, :suit 

    def initialize(rank, suit) 
     @rank = rank 
     @suit = suit 
    end 

    def to_s 
     "#{@rank} of #{@suit}" 
    end 
end 

deck = Deck.new 

puts deck.to_s 
deck.shuffle 
puts deck.to_s 
deck.deal 
deck.add_cards #line 73 
+0

あなたは_usは30と73_までの行番号をカウントすることを期待? – mudasobwa

+3

'* cards.each do | card |'⇒ 'cards.each do | card |' – mudasobwa

+1

@mudasobwa編集してキー行番号を追加します。ソリューションをありがとう! –

答えて

1

あなただけの引数に保管し、メソッド内スプラット演算子を使用しないでください。

def add_cards(*cards) 
    cards.each do |card| 
     @cards << card 
    end 
end 
関連する問題