Hi everyone!
I’m currently learning Ruby, and have made this simple number guessing game:
···
____________________________
puts "I'm thinking of a number from 0 to 10. What's your guess?"
my_number = rand(11)
user_guess = gets.chomp.to_i
until user_guess == my_number
if user_guess > my_number
puts "Too high."
else my_number > user_guess
puts "Too low."
end
puts "Guess again:"
user_guess = gets.chomp.to_i
end
puts "Yep, it was " + my_number.to_s + ". You win!"
____________________________
A friend of mine wrote a Java version which you can see here: http://violasong.com/tonyguessinggame.java. In addition to what my script does, his is able to taunt you with a random message if you don’t input any data for 5 seconds :).
I want to try adding that functionality to my script, and am wondering if it's possible in Ruby – to print a message every x seconds *while* it's waiting for you to input something. If someone could point me in the right direction, that would be much appreciated!
Victoria Wang
As a method without having to worry about threads you could also use:
require 'timeout'
messages = ["What are you waiting for?", "I don't have all day.", "When
I said 'take your time', I didn't mean this long!", "Hurry up and enter
a value!"]
s = nil
until s
begin
Timeout::timeout(5) do
puts "Enter a value: "
s = gets
end
rescue Timeout::Error
puts messages[rand(messages.length).to_i]
end
end
I thought this was a good example, so I tried running your code. It
doesn't work using the latest One-Click Installer for Windows (1.8.4).
The timeout never occurs. It does however work under Fedora Core Linux
using Ruby 1.8.4.
I wonder if this is a Ruby problem or a One-Click Installer problem.
···
On 2/12/06, Timothy Goddard <interfecus@gmail.com> wrote:
As a method without having to worry about threads you could also use:
require 'timeout'
messages = ["What are you waiting for?", "I don't have all day.", "When
I said 'take your time', I didn't mean this long!", "Hurry up and enter
a value!"]
s = nil
until s
begin
Timeout::timeout(5) do
puts "Enter a value: "
s = gets
end
rescue Timeout::Error
puts messages[rand(messages.length).to_i]
end
end
--
R. Mark Volkmann
Partner, Object Computing, Inc.