代码之家  ›  专栏  ›  技术社区  ›  mk12

Ruby优雅的方式处理卡阵列到播放器对象

  •  1
  • mk12  · 技术社区  · 14 年前

    我很难找到一种优雅的红宝石做这个。我有一个 甲板 52数组 Card 对象,我想遍历它并循环遍历 Player 对象,一次处理一张卡 数组。类似:

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

    哪里 NEXTELEMENT 将生成下一个元素,并在遇到结尾时返回到数组的开头。我尝试向数组中添加这样的方法,但得到了一个localJumpError。

    谢谢。

    2 回复  |  直到 13 年前
        1
  •  3
  •   Joshua Cheek    14 年前

    只需根据玩家数量修改你的牌。

    num_players = @players.size
    
    deck.each_with_index do |card,index|
      @players[ index % num_players ].hand << card
    end
    
        2
  •  2
  •   jason.rickman    14 年前

    怎么样

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