我的建议也只是通过甲板数组放入方法并返回一个数组[player1,player2,deck]。如果您只从纸牌的“顶部”进行绘图,则只需使用shift
即可将第一个元素从阵列中取出。
的长期解决方案
deck = [[2,"spades"],[3,"hearts"],[6,"diamonds"],[10,"clubs"],[8,"hearts"],[9,"clubs"]]
def drawTwo(arr)
if arr.count >= 4
player_one = [deck.shift, deck.shift]
player_two = [deck.shift, deck.shift]
return [player_one, player_two, deck]
else
return "Not enough cards in deck, please provide a new deck"
end
end
round = drawTwo(deck)
player_one = round[0]
player_two = round[1]
deck = round[2]
puts "Player one: #{player_one}"
puts "Player two: #{player_two}"
puts "Deck: #{deck}"
我想是非常详细并没有太多的混淆这个代码,以便它应该阅读漂亮解释。
你可以使它有点短重写它这样的,我只是想这是可以理解发生了什么事:
浓缩液
deck = [[2,"spades"],[3,"hearts"],[6,"diamonds"],[10,"clubs"],[8,"hearts"],[9,"clubs"]]
def drawTwo(arr)
arr.count >= 4 ? [[arr.shift, arr.shift], [arr.shift, arr.shift]] : raise "Not enough cards..."
end
player_one, player_two = drawTwo(deck)
puts "Player one: #{player_one}"
puts "Player two: #{player_two}"
puts "Deck: #{deck}"
一定要包括deck.shuffle
当你首先生成甲板。
而且,我不知道你正在使用生成甲板上的东西,但因为我是有它的乐趣:
产生打乱甲板
def newShuffledDeck
ranks = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"]
suits = ["hearts", "spades", "clubs", "diamonds"]
deck = ranks.product(suits)
deck.shuffle
end
注意这样一个事实,每个“甲板”的元素是一个数组无关紧要。如果'deck = [:card1,:card2,...,:card6]',同样的解决方案也适用。顺便说一下,你的意思是''黑桃''或':空格'。如前所述'spades'必须是一个变量或一个方法。 –
@max paspa做了任何提供的答案为你工作?如果是这样,请选择一个答案,以便当用户搜索时显示为答案的问题。谢谢! – OneNeptune