私の推薦は、ちょうどデッキを渡すことであろう配列をメソッドに挿入し、[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
時にあなたを必ず含めてください最初にデッキを生成します。
また、私はあなたがデッキを生成するために使用しているかわからないが、私はそれを楽しんで持っていたので、:
生成AたShuffledデッキ
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'の要素は配列ではありません。 'deck = [:card1、:card2、...、:card6]'と同じ解決策が適用されます。ちなみに、あなたは '' spades ''や':spaces'を意味しますか?前述のように、「スペード」は変数または方法でなければならない。 –
@max paspa提供された回答のいずれかがあなたに役立ちましたか?その場合は、回答を選択してください。これは、ユーザーが検索する際に回答として質問として表示されます。ありがとう! – OneNeptune