试图将牌移入玩家手中

时间:2017-08-07 19:39:18

标签: ruby loops variables methods block

我创建了牌组,洗牌,现在试图将7张牌交给4名玩家。

收到以下错误:

irb(main):097:0*      deck.each do
irb(main):098:1*       Player.@hand << deck.pop()
irb(main):099:1>     end
SyntaxError: (irb):98: syntax error, unexpected tIVAR, expecting '('
      Player.@hand << deck.pop()
              ^

使用此代码:

class Player 
  attr_accessor :hand 

  def initialize(hand) 
    @hand = hand 
  end 
end

1 个答案:

答案 0 :(得分:0)

我会在播放器上定义一个接受新卡片的方法,然后将它们添加到手中。

类似于:

def take_card(card)
  hand << card
end

...导致......

deck.each do
  @player.take_card deck.pop
end

注意@player,我用它来引用Player类的实例。在这里使用播放器可能不正确。

你可以实现一个运算符..

def <<(card)
  hand << card
end

......然后......

deck.each do
  @player << deck.pop
end