Simultaneous text input/output in a command line game

R

rubyvic

Hi everyone!

I=92m 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 =3D rand(11)
user_guess =3D gets.chomp.to_i

until user_guess =3D=3D my_number
if user_guess > my_number
puts "Too high."
else my_number > user_guess
puts "Too low."
end
puts "Guess again:"
user_guess =3D 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:=20
http://violasong.com/tonyguessinggame.java. In addition to what my=20
script does, his is able to taunt you with a random message if you don=92=
t=20
input any data for 5 seconds :).

I want to try adding that functionality to my script, and am wondering=20
if it's possible in Ruby =96 to print a message every x seconds *while*=20
it's waiting for you to input something. If someone could point me in=20
the right direction, that would be much appreciated!

Victoria Wang
 
T

Timothy Goddard

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,902
Latest member
Elena68X5

Latest Threads

Top