Ruby 中的简单高低游戏
我正在尝试编写一个简单的高低程序,其输出如下:
$ ./highlow.rb Please tell me the max value of the random number: 100 Ok. The random number is generated between 1 and 100. Make your guess: 50 That's too low. Guess again: 75 That's too high. Guess again: 63 That's too low. Guess again: 68 Correct! You guessed the answer in 4 tries! Would you like to play again? no OK. Goodbye. $
这是我的代码,但我在某个地方出错了。它有时似乎有效:
count=0
play = true
while play = true
print "Please tell me the max value of the random number: "
max= gets.to_i
num= rand(max)
puts "Ok. The random number is generated between 1 and " + max.to_s +
"."
print "Make your guess: "
guess=gets.to_i
while guess != num && play != false
if guess > num
print "That's too high. Guess again: "
guess=gets.to_i
count+=1
end
if guess < num
print "That's too low. Guess again: "
guess=gets.to_i
count+=1
else
break
end
end
提出“正确!您在“+ count.to_s +”尝试中猜到了答案!”
print "你想再玩一次吗?"
answer=gets.chomp!
如果答案=='n'
播放=假
休息
结束
if
answer == 'y'
play = true
end
结束
放“好吧。再见”
有什么建议吗?我哪里出错了?
I'm trying to write a simple high-low program that will output like this:
$ ./highlow.rb Please tell me the max value of the random number: 100 Ok. The random number is generated between 1 and 100. Make your guess: 50 That's too low. Guess again: 75 That's too high. Guess again: 63 That's too low. Guess again: 68 Correct! You guessed the answer in 4 tries! Would you like to play again? no OK. Goodbye. $
This is the code I have, but I'm going wrong somewhere. It appears to work sometimes:
count=0 play = true while play = true
print "Please tell me the max value of the random number: " max= gets.to_i num= rand(max) puts "Ok. The random number is generated between 1 and " + max.to_s + "." print "Make your guess: " guess=gets.to_i while guess != num && play != false if guess > num print "That's too high. Guess again: " guess=gets.to_i count+=1 end if guess < num print "That's too low. Guess again: " guess=gets.to_i count+=1 else break end end
puts "Correct! You guessed the answer in " + count.to_s + " tries!"
print "Would you like to play again? "answer=gets.chomp!
if answer == 'n'
play = false
break
endif answer == 'y' play = true end
end
puts "OK. Goodbye"
Any suggestions? Where am I going wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为你的问题(无论如何我都能看到)是数字检查代码。
如果
guess
大于num
,则第一个 if 语句将执行,但第二个 if 语句将重定向到 else,从而跳出循环。您需要使用
elsif
。尝试将其更改为这样:I think your problem (the one I can see anyway) is with number checking code.
If
guess
is greater thannum
, then the first if statement will execute, but then the second one will redirect to the else, breaking out of the loop.You need to use an
elsif
. Try changing it to this: