Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Number Guessing Game

by flexvault (Parson)
on Sep 23, 2012 at 17:30 UTC ( #995220=note: print w/ replies, xml ) Need Help??


in reply to Number Guessing Game

randomhero1270,

What is the exact question? If ran for me, except the guesses was off by 1(too high).

The script said 4 tries, when I only typed 3 times. Easy to fix!

Good Luck!

"Well done is better than well said." - Benjamin Franklin


Comment on Re: Number Guessing Game
Re^2: Number Guessing Game
by randomhero1270 (Novice) on Sep 23, 2012 at 17:36 UTC

    I fixed the counter so now it works. My questions are, how do I make it actually guess higher when I type "low" or guess lower when I type "high" and why does it still guess 0? Here is my updated code

    use strict; my ($number, $new_guess, $my_hint, @guesses); my $range = 9; my $count = 1; $number = int(rand($range)); #min of 1 and high of 10, range does 0-gi +ven int so i made the range 9 (0-9) and added one to it -> (1-10) print "My guess is: $number \n"; print "High, low, or right?\n"; while($my_hint ne "right"){ chomp($my_hint = <STDIN>); @guesses[$count] = $my_hint; if ($my_hint eq "low"){ $new_guess = int(rand($number)); print "I guess: " . $new_guess . "\n"; print "High, low, or right?\n"; } elsif ($my_hint eq "high"){ $new_guess = int(rand($number)); print "I guess: " . $new_guess . "\n"; print "High, low, or right?\n"; } elsif ($my_hint eq "right"){ print "It took me " . $count . " tries\n"; } else{ print "What? Am I high, low, or right?\n"; } $count++; }

      randomhero1270:

      The problem is that you're selecting a number at random throughout the range, and you're never adjusting the range. For example, if we were playing the game using 1-100 as the range and you guessed 65 and I said "low", then you'd want to guess a number between 66 and 100. If you then guessed 75 and I said "high", you'd want to guess a number between 66 and 74.

      So you need to update the upper or lower limit based on the feedback from the user.

      ...roboticus

      When your only tool is a hammer, all problems look like your thumb.

        thanks I understand what you are saying. How do you define a range?

        I made it stop guessing zero. I just don't really understand how to set a new minimum or maximum and have it still guess a random number. Updated code below

        use strict; my ($number, $new_guess, $my_hint, @guesses); my $range = 9; my $count = 1; my $number = 1 + int rand 10; #min of 1 and high of 10, range does 0-g +iven int so i made the range 9 (0-9) and added one to it -> (1-10) print "My guess is: $number \n"; print "High, low, or right?\n"; while($my_hint ne "right"){ chomp($my_hint = <STDIN>); @guesses[$count] = $my_hint; if ($my_hint eq "low"){ $new_guess = ((1 + int rand 10); print "I guess: " . $new_guess . "\n"; print "High, low, or right?\n"; } elsif ($my_hint eq "high"){ $new_guess = (1 + int rand 10); print "I guess: " . $new_guess . "\n"; print "High, low, or right?\n"; } elsif ($my_hint eq "right"){ print "It took me " . $count . " tries\n"; } else{ print "What? Am I high, low, or right?\n"; } $count++; }

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://995220]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (6)
As of 2014-11-23 17:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (134 votes), past polls