Ruby は初めてで、数週間前に始めたばかりです。ゲームのプレイ方法をシミュレートするアルゴリズムを作成しようとしていますが、無限ループに陥っています。制御フローに問題があり、それがわかりません。現時点では、war 部分のループを追加するのではなく、配列の最後からカードを取り出して最初に戻すだけです。また、注意してください、私は .shuffle を使用しません! しないように言われたからです。これは私のアルゴリズム クラスの一部です。また、私は不正行為をしているわけではありません。スタック オーバーフローやその他のリソースを使用するように言われました。
誰かが私が間違っている場所を理解するのを手伝ってくれますか? ありがとう!
deck = (2..14).to_a*4
deck.sort! {|a, b| rand <=> rand}
player1 = deck.values_at(0..25)
player2 = deck.values_at(26..51)
print "Player 1's cards: #{player1}"
print "Player 2's cards: #{player2}"
hand_count = 0
until player1.count == 52 || player2.count == 52
hand_count += 1
state = player1[-1] <=> player2[-1]
if state == -1
player2.unshift(player2.pop)
player2.unshift(player1.pop)
puts "Player 2 won hand #{hand_count}"
elsif state == 1
player1.unshift(player1.pop)
player1.unshift(player2.pop)
puts "Player 1 won hand #{hand_count}"
else
player2.unshift(player2.pop)
player1.unshift(player1.pop)
puts "It's a tie"
end
end
puts "Player 1 wins" if player1.length == 52
puts "Player 2 wins" if player2.length == 52