我开始学习Ruby,并且我坚持使用这个程序我正在写这是假设游戏“骰子”的一小部分,至少反正即使在随机骰子满足循环条件时,代码仍在第2个while循环中循环。当条件得到满足时,Ruby while while循环不停止
这是一个不断循环
while new_dice_sum != 7 or new_dice_sum != 11 or new_dice_sum != 2 or new_dice_sum != 3 or new_dice_sum != 12 or new_dice_sum != point
dice1 = 1 + rand(6)
dice2 = 1 + rand(6)
new_dice_sum = dice1.to_i + dice2.to_i
这是程序的完整代码回路。
input = ""
point = 0
balance = 100
Bet = 10
dice1 = 0
dice2 = 0
dice_sum = 0
new_dice_sum = 0
won = 0
lost = 0
while input != "Q"
print "Please choose R to roll the dice or Q to exit the game: "
input = gets.chomp.upcase
if input == "R"
if balance > 10
dice1 = 1 + rand(6)
dice2 = 1 + rand(6)
dice_sum = dice1.to_i + dice2.to_i
puts "First dice is #{dice1} while the second dice is #{dice2} both are a total of #{dice_sum}"
if dice_sum == 7 || dice_sum == 11
balance = balance + Bet
won = won + 1
puts "You won, Your new balance is #{balance}"
elsif dice_sum == 2 || dice_sum == 3 || dice_sum == 12
balance = balance - Bet
lost = lost + 1
puts "You lost, Your new balance is #{balance}"
else
point = dice_sum
while new_dice_sum != 7 or new_dice_sum != 11 or new_dice_sum != 2 or new_dice_sum != 3 or new_dice_sum != 12 or new_dice_sum != point
dice1 = 1 + rand(6)
dice2 = 1 + rand(6)
new_dice_sum = dice1.to_i + dice2.to_i
puts "In the new roll with your point #{point}, The first dice is #{dice1} while the second dice is #{dice2} both are a total of #{new_dice_sum}"
if new_dice_sum == 7 || new_dice_sum == 11
balance = balance + Bet
won = won + 1
puts "You won, Your new balance is #{balance}"
elsif new_dice_sum == 2 || new_dice_sum == 3 || new_dice_sum == 12
balance = balance - Bet
lost = lost + 1
puts "You lost, Your new balance is #{balance}"
elsif new_dice_sum == point
balance = balance + Bet
won = won + 1
puts "Your Total dice is equal to your point you won, your new balance is #{balance}"
end
end
end
else
puts "Your balance is not enough to place a bet, Your balance now is #{balance}"
end
elsif input != "Q"
puts "#{input} is not valid choice"
end
end
puts "Your current balance is #{balance}$ and you won #{won} times and lost #{lost} times"
exit
如果要停止循环,你应该叫回归。而且你的代码使用嵌套的if和loop来复杂化。 – araratan
如果你有你的答案我建议关闭帖子或标记接受的答案。并非所有人都阅读评论部分。 – Rishav