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
on 2006-02-12 07:08
on 2006-02-12 11:38
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
on 2006-02-12 19:26
On 2/12/06, Timothy Goddard <email@example.com> wrote: > 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.