在 ruby 中使用 .slice 和 .shift

using .slice and .shift in ruby

我正在努力让这个纸牌游戏继续下去。它应该允许用户设置玩家数量并向每个玩家分发两张牌。

我把一副牌分成纸牌对,所以

@deck = [["2","hearts"], ["A","spades"]],
        [["J", "clubs"], ["K","hearts"]]

我正在尝试通过使用 shift 弹出牌组中的第一对卡片来分发下一对卡片,然后重复我的用户次数。我认为它非常接近工作 - 我将不胜感激任何帮助。

    @cards=["2","3","4","5","6","7","8","9","10","Jack","Queen","King","Ace"]*4
    @suits = ["hearts", "spades", "clubs", "diamonds"]*13
    @deck = []

    puts "how many players are there?"
    number_of_players = gets.chomp.to_i


    @deck << [@cards,@suits].transpose.shuffle.each_slice(2)

      1.upto(number_of_players) do |n|
        @deck.shift
        puts "player #{n} cards are: #{@deck}"

      end
@deck = [@cards,@suits].transpose.shuffle.each_slice(2).to_a
@initial = @deck.shift(number_of_players)

@initial.each.with_index(1) do |cards, n|
  puts "player #{n} cards are: #{cards}"
end

#⇒ player 1 cards are: [["5", "diamonds"], ["7", "spades"]]
#  player 2 cards are: [["7", "clubs"], ["10", "hearts"]]
#  player 3 cards are: [["9", "spades"], ["Queen", "spades"]]

puts "Left pairs in the deck: #{@deck.count}"
#⇒ 23 # for 3 players, it’s 26 - number_of_players