Ruby优雅的方式将卡阵列交给玩家对象

时间:2010-06-26 02:09:18

标签: ruby arrays iterator

我很难找到一个优雅的红宝石方式来做到这一点。我有一个带有52个Card对象的 deck 数组,我想迭代它并循环遍历Player个对象的数组,一次将一张卡交给他们的< em> hand 数组。类似的东西:

deck = Card.deck.shuffle!
deck.each do |card|
    @players.NEXTELEMENT.hand << card
end

其中NEXTELEMENT将产生下一个元素,并在遇到结束时返回到数组的开头。我尝试将这样的方法添加到Array,但是我得到了一个LocalJumpError。

感谢。

2 个答案:

答案 0 :(得分:3)

根据球员的数量来修改你所在的牌。

num_players = @players.size

deck.each_with_index do |card,index|
  @players[ index % num_players ].hand << card
end

答案 1 :(得分:2)

怎么样

deck.each_slice(@players.size) do |cardSet|
 @players.zip(cardSet).each {|player,card| player << card}
end