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
end
if
answer == 'y'
play = true
end
end
puts "OK. Goodbye"
Any suggestions? Where am I going wrong?
I think your problem (the one I can see anyway) is with number checking code.
If
guessis 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: