我的建議也只是通過甲板數組放入方法並返回一個數組[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