简单的文字游戏循环

时间:2014-08-24 20:18:35

标签: ruby loops

# Guessing Game
# 1.0
# by Proto


words = ["cat", "snake", "wolf", "giraffe", "elephant"]

picked = words.sample

puts "Welcome to the guessing game! I'm thinking of an animal. 
It's a #{picked.length} letter word. Can you guess what it is?"

try = gets.chomp

while try != picked 
    puts "Try again."
    try = gets.chomp
    if try == picked
        puts "You win!"
        break
    end
end

它有效,但有时只是运行它没有错误。问题是,如果我在第一次尝试时得到了正确的猜测,那么游戏似乎根本就没有进入循环(它没有告诉我"你赢了!") ,它只是退出程序。但结果不一致。如果我马上重新启动并且有时它会告诉我我赢了。有时候它有效,有时它不起作用。我的循环或语法似乎有问题,但我无法看到它。任何帮助赞赏。感谢。

1 个答案:

答案 0 :(得分:2)

删除if块并将"You win!"语句放在while语句之外。理由是,最终,在你当前的逻辑中,玩家将获胜,只有逻辑中断,所以你不妨将其移出。

while try != picked 
    puts "Try again."
    try = gets.chomp
end

puts "You win!"

在现有代码中未打印"You win!"的原因是,最初try == picked时永远不会输入循环,因为这是while循环中的条件。 上述更改也会照顾到这种情况。