help - computer guessing game 
	 
	
		| Author | 
		Message | 
	 
		 
		whoareyou
 
  
 
    
		 | 
		
		
			
				  Posted: Tue Mar 08, 2011 9:48 am    Post subject: help - computer guessing game  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				What is it you are trying to achieve?
 
The computer is supposed to guess a number you have thought of.
 
The computer should guess a number that you have thought of until it gets it right.
 
It should be smart, so if the computer guesses 2 and you say that the number is low, it would go
 
to one and then if you press low to that, if would say you changed your number.
 
 
 
What is the problem you are having?
 
I have no idea where to start.
 
 
 
Post any relevant code (You may choose to attach the file instead of posting the code if it is too long)
 
 
I will upload the sample program (exe) file later for you to actually see what its supposed to look like.
 
 
	  | Turing: | 	 		  
var hidden, guess  : int
var reply  : string (1)
put "See if you can guess the hidden number"
put "It is between 1 and 99 inclusive"
loop
    var count  : int := 0
    put "Do you want to play? Answer y or n " ..
     get reply
     exit when reply  = "n"
    randint (hidden,  1,  99)
    loop
        put "Enter your guess ",
             "(any number between 1 and 99) " ..
         get guess
 
        count  := count +  1
        if guess < hidden  then
            put "You are low"
        elsif guess > hidden  then
            put "You are high"
        else
            put "You got it in ", count,  " guesses"
            exit
        end if
    end loop
end loop
  | 	  
 
 
Please specify what version of Turing you are using
 
4.1.1
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
		 
		Sponsor Sponsor 
		 
  
		 | 
		
 | 
	 
	 
		  | 
	 
				 
		mirhagk
 
 
 
    
		 | 
		
		
			
				  Posted: Tue Mar 08, 2011 2:21 pm    Post subject: RE:help - computer guessing game  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				| your code is doing the opposite, it's letting the user guess, the computer is not doing the guess, verify what it's actually supposed to do.
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		whoareyou
 
  
 
    
		 | 
		
		
			
				  Posted: Tue Mar 08, 2011 3:15 pm    Post subject: Re: help - computer guessing game  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				yes i know. this is the fundamental code; i have to rework it so that its the opposite.
 
 
but i dont know where to start.
 
 
i've also included the sample program so that you can see what i'm talking about.
		
	
  
          
							 
	
	
		
	 
	
		|  Description: | 
		
			
		 | 
		  Download | 
	 
	
		|  Filename: | 
		 GuessNumberComputer.rar | 
	 
	
		|  Filesize: | 
		 267.1 KB | 
	 
	
		|  Downloaded: | 
		 204 Time(s) | 
	 
	 
	 
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		whoareyou
 
  
 
    
		 | 
		
		
			
				  Posted: Tue Mar 08, 2011 4:37 pm    Post subject: Re: help - computer guessing game  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				here is my code so far.
 
its not working the way i want it too.
 
for example, when it produces a number (i.e. 60) and i say that the number is higher, then it will show numbers below 60 sometimes       
 
 
	  | Turing: | 	 		  
var high: int:= 99
var low: int:= 1
var reply_yesno: string
var reply_highlow: string
var fguess: int
var count: int:= 0
randint (fguess,  1,  99)
put "I will try to find out a number you guess between 1 and 99 inclusive."
loop
put "Do you want to play? Y or N?"
get reply_yesno
     if reply_yesno  = "Y" or reply_yesno  = "n" or reply_yesno  = "y" or reply_yesno  = "n" then
    else
    put "Invalid response!"
    end if
    exit when reply_yesno  = "N" or reply_yesno  = "n"
    
loop
put "Is your number ", fguess,  "?"
get reply_yesno
 if reply_yesno  = "Y" or reply_yesno  = "y" then
put "Great! I got in in ", count,  " tries!"    
else
put "Is your number 'high'er or 'low'-er?"
    get reply_highlow
    
         if reply_highlow  = "high" then
        
            fguess  := low
            
             randint (fguess, low, high )
                 
                    
        elsif reply_highlow  = "low" then
        
            fguess: = high
            
             randint (fguess, low, high )
            
        else
        
        put "Incorrect Response!"
        
end if
end if
end loop
end loop
  | 	  
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Tony
 
  
 
    
		 | 
		
		 | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		whoareyou
 
  
 
    
		 | 
		
		
			
				  Posted: Tue Mar 08, 2011 5:17 pm    Post subject: Re: help - computer guessing game  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				Tony @ Tue Mar 08, 2011 5:09 pm wrote: whoareyou @ Tue Mar 08, 2011 4:37 pm wrote: it will show numbers below 60 sometimes         
Yes. Since you are telling the computer to guess by picking a random number.
 
If you rewrite you code to use  Rand.Int instead of  randint, you will probably see your problem.  
 
 
i tried to re-write the code using the Rand.Int, and no difference. also, i think im changing the range of the random integer when i write
 
 
	  | Turing: | 	 		  
put "Is your number 'high'er or 'low'-er?"
    get reply_highlow
   
         if reply_highlow  = "high" then
       
            fguess  := low
           
             randint (fguess, low, high )
                 
                   
        elsif reply_highlow  = "low" then
       
            fguess: = high
           
             randint (fguess, low, high )
           
        else
       
        put "Incorrect Response!" 
  | 	  
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Tony
 
  
 
    
		 | 
		
		
			
				  Posted: Tue Mar 08, 2011 5:22 pm    Post subject: RE:help - computer guessing game  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				| The latest code still uses randint, not Rand.Int
		
 | 
			 
			
				 
Tony's programming blog. DWITE - a programming contest. | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		whoareyou
 
  
 
    
		 | 
		
		
			
				  Posted: Tue Mar 08, 2011 6:12 pm    Post subject: Re: help - computer guessing game  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				is there a difference between randint and Rand.Int? they seem pretty similar except that Rand.Int is assigned to the var directly (i.e. var hello:int:=Rand.Int ...) where as randint changes the value later on ...     (i.e. randint (hello, 1, 6)
 
 
the way i learned in school was randint ...
 
 
anyways, the i updated my code to use the Rand.Int, and it still does not make a difference.
 
 
	  | Turing: | 	 		  
 
 
var high : int := 99
 
var low : int := 1
 
var reply_yesno : string
 
var reply_highlow : string
 
var fguess : int:= Rand.Int (low, high)
 
var count : int := 0
 
 
put "I will try to find out a number you guess between 1 and 99 inclusive."
 
 
 
loop
 
    put "Do you want to play? Y or N?"
 
    get reply_yesno
 
    if reply_yesno = "Y" or reply_yesno = "n" or reply_yesno = "y" or reply_yesno = "n" then
 
    else
 
        put "Invalid response!"
 
    end if
 
    exit when reply_yesno = "N" or reply_yesno = "n"
 
 
 
    loop
 
 
        put "Is your number ", fguess, "?"
 
        get reply_yesno
 
 
        if reply_yesno = "Y" or reply_yesno = "y" then
 
            put "Great! I got in in ", count, " tries!"
 
 
        else
 
 
 
            put "Is your number 'high'er or 'low'-er?"
 
            get reply_highlow
 
 
            if reply_highlow = "high" then
 
 
                fguess := low
 
 
                fguess := Rand.Int (low, high)
 
 
 
 
            elsif reply_highlow = "low" then
 
 
                fguess := high
 
 
                fguess := Rand.Int (low, high)
 
 
            else
 
 
                put "Incorrect Response!"
 
 
            end if
 
        end if
 
    end loop
 
end loop
 
 
  | 	  
 
i dont understand why it keeps doing that when i put the if statement to change the range of the random integer being generated.
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
		 
		Sponsor Sponsor 
		 
  
		 | 
		
 | 
	 
	 
		  | 
	 
				 
		Tony
 
  
 
    
		 | 
		
		
			
				  Posted: Tue Mar 08, 2011 6:16 pm    Post subject: RE:help - computer guessing game  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				Good. Now look at this part really hard. Read it out loud to yourself. Explain it to a rubber duck -- http://compsci.ca/blog/rubber-ducks-help-best-with-computer-science/
 
 
Try to answer the question: how is the "high" guess different from "low" guess?
 
 
	  | code: | 	 		  
 
 
if reply_highlow = "high" then 
 
  fguess := low 
 
  fguess := Rand.Int (low, high) 
 
elsif reply_highlow = "low" then 
 
  fguess := high 
 
  fguess := Rand.Int (low, high) 
 
  | 	  
		
 | 
			 
			
				 
Tony's programming blog. DWITE - a programming contest. | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		whoareyou
 
  
 
    
		 | 
		
		
			
				  Posted: Tue Mar 08, 2011 6:32 pm    Post subject: RE:help - computer guessing game  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				For "HIGH"
 
if the number is higher than what the computer guessed, it would take that current number stored in fguess and make that the new "low" value, then the computer will generate a new fguess using the fguess as a starting point, to high, which is still 99.
 
 
For "LOW"
 
if the number is lower than what the computer guess, then that current number would be stored as the new high value, then a new fguess would be generated starting from low to the previous number the computer generated.
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Tony
 
  
 
    
		 | 
		
		
			
				  Posted: Tue Mar 08, 2011 6:44 pm    Post subject: RE:help - computer guessing game  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				That sounds like the right thing to do. Good.
 
 
But in your code, compare the lines where the number is actually picked:
 
	  | code: | 	 		  
 
fguess := Rand.Int (low, high)
 
...
 
fguess := Rand.Int (low, high)
 
  | 	  
 
low and high never change.
		
 | 
			 
			
				 
Tony's programming blog. DWITE - a programming contest. | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		whoareyou
 
  
 
    
		 | 
		
		
			
				  Posted: Tue Mar 08, 2011 7:08 pm    Post subject: Re: help - computer guessing game  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				so basically, i was just setting fguess back to one for "high" and back to 99 for "low"
 
so to fix that ...
 
 
	  | Turing: | 	 		  
 
 
if reply_highlow = "high" then
 
        
 
            low := fguess + 1
 
            
 
            fguess := Rand.Int (low, high)
 
 
                 
 
                    
 
        elsif reply_highlow = "low" then
 
        
 
            high := fguess - 1
 
            
 
            fguess := Rand.Int (low, high)
 
 
  | 	  
 
 
?  
 
 
and the +1 and -1 are so that the numbers don't repeat themselves?
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Tony
 
  
 
    
		 | 
		
		 | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		whoareyou
 
  
 
    
		 | 
		
		
			
				  Posted: Tue Mar 08, 2011 9:01 pm    Post subject: RE:help - computer guessing game  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				ok THANK YOU!
 
 
i think i'll be learning about algorithms laters on in the semester!
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		 | 
	 
 
	
	
	 
	
	 |