0

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
4

1 に答える 1