| Typing Game Help 
 
	 
	
		| Author | Message |   
		| TerW 
 
 
 
 
 | 
			
				|  Posted: Tue May 05, 2009 10:50 pm    Post subject: Typing Game Help |  |   
				| 
 |  
				| Im trying to create a typing game. And i wanted a bunch of sentences on screen, and the user would have to input what is shown on the screen.  Then the program will show how many mistakes the user made.  The problem I am having is that im trying to find another way then making each word a variable.  I have tried a procedure, but it verifies the whole sentence, instead of each individual word.
 
 
 
 
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| Sponsor Sponsor
 
  
   |  |   
		|  |   
		| Analysis Mode 
 
 
 
 
 | 
			
				|  Posted: Tue May 05, 2009 10:51 pm    Post subject: Re: Typing Game Help |  |   
				| 
 |  
				| ok why don't you post your code?  And when parsing the input, look for spaces and punctuation as indicators that a word has ended. |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| TerW 
 
 
 
 
 | 
			
				|  Posted: Wed May 06, 2009 6:42 pm    Post subject: Re: Typing Game Help |  |   
				| 
 |  
				| TerW @ Tue May 05, 2009 10:50 pm wrote: 
Im trying to create a typing game. And i wanted a bunch of sentences on screen, and the user would have to input what is shown on the screen.  Then the program will show how many mistakes the user made.  The problem I am having is that im trying to find another way then making each word a variable.  I have tried a procedure, but it verifies the whole sentence, instead of each individual word.
 
 
 
 
 
 	  | Turing: |  	  | 
%Typing Game, displays sentences, that require the user to input exact sentences on screen
%Written by TerW
var This : string := "This"
var  is : string := "is"
var  my : string := "my"
var  computer : string := "computer"
var  game : string := "game."
var  Thank : string := "Thank"
var  you : string := "you"
var  for1 : string := "for"
var  helping : string := "helping"
var  me : string := "me"
var  with : string := "with"
var  the : string := "the"
var  code : string := "code"
var  mistakes : int := 0
var  reply : string
put "Do you want to play?"
get  reply
loop
    if  reply = "yes" then
        put  This, " ",  is, " ",  my, " ",  computer, " ",  game, " "
        locate (5 , 1)
        put  Thank, " ",  you, " ",  for1, " ",  helping, " ",  me, " ",  with, " ",  the, " ",  code
        locate (4 , 1)
        get  This
 
        This :=  This
        loop
            if  This = "This" then
                exit
            else 
                mistakes :=  mistakes + 1
                exit
            end if
        end loop
        
        get  is
 
        is :=  is
        loop
            if  is = "is" then
                exit
            else 
                mistakes :=  mistakes + 1
                exit
            end if
        end loop
        
        get  my
 
        my :=  my
        loop
            if  my = "my" then
                exit
            else 
                mistakes :=  mistakes + 1
                exit
            end if
        end loop
        
        get  computer
 
        is :=  is
        loop
            if  is = "is" then
                exit
            else 
                mistakes :=  mistakes + 1
                exit
            end if
        end loop
        
        get  game
 
        game :=  game
        loop
            if  game = "game." then
                exit
            else 
                mistakes :=  mistakes + 1
                exit
            end if
        end loop
        locate (6 , 1)
        
        get  Thank
 
        Thank :=  Thank
        loop
            if  Thank = "Thank" then
                exit
            else 
                mistakes :=  mistakes + 1
                exit
            end if
        end loop
        
        get  you
 
        you :=  you
        loop
            if  you = "you" then
                exit
            else 
                mistakes :=  mistakes + 1
                exit
            end if
        end loop
        
        get  for1
 
        for1 :=  for1
        loop
            if  for1 = "for" then
                exit
            else 
                mistakes :=  mistakes + 1
                exit
            end if
        end loop
        
        get  helping
 
        helping :=  helping
        loop
            if  helping = "helping" then
                exit
            else 
                mistakes :=  mistakes + 1
                exit
            end if
        end loop
        
        get  me
 
        me :=  me
        loop
            if  me = "me" then
                exit
            else 
                mistakes :=  mistakes + 1
                exit
            end if
        end loop
        
        get  with
 
        with :=  with
        loop
            if  with = "with" then
                exit
            else 
                mistakes :=  mistakes + 1
            end if
        end loop
        
        get  the
 
        the :=  the
        loop
            if  the = "the" then
                exit
            else 
                mistakes :=  mistakes + 1
            end if
        end loop
        
        get  code
 
        code :=  code
        loop
            if  code = "code" then
                exit
            else 
                mistakes :=  mistakes + 1
            end if
        end loop
        put "You made ",  mistakes, " mistake(s)."
        exit
        end if
    end loop | 
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| tjmoore1993 
 
  
 
 
 | 
			
				|  Posted: Wed May 06, 2009 7:01 pm    Post subject: RE:Typing Game Help |  |   
				| 
 |  
				| 	  | Turing: |  	  | 
var Word : array 1 . . 13 of string
var  Selection : int
var  Score : array 1 . . 2 of int 
Word (1) := "Transportation" 
Word (2) := "Alcohol" 
Word (3) := "Pickles" 
Word (4) := "Mississippi" 
Word (5) := "United Kingdom" 
Word (6) := "Mistake" 
Word (7) := "Elephant" 
Word (8) := "Eggplant" 
Word (9) := "Extremely" 
Word (10) := "Hurriedly" 
Word (11) := "Belittling" 
Word (12) := "Erection" 
Score (1) := 0 
Score (2) := 0
loop
    cls
    locate (1 , 1)
    put "Correct : ",  Score (1), " Incorrect : ",  Score (2) 
    Selection :=  Rand.Int (1 , 12)
    put "Spell the word"
    put  Word ( Selection)
    get  Word (13)
    if  Word (13) =  Word ( Selection) then 
        Score (1)  += 1
        put "Correct!"
    else 
        Score (2)  += 1
        put "Incorrect!"
    end if
end loop | 
 
 This should help you out with efficiency. However you should look at this guide...
 
 
 http://compsci.ca/v3/viewtopic.php?t=8229
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| Dusk Eagle 
 
  
 
 
 | 
			
				|  Posted: Wed May 06, 2009 7:12 pm    Post subject: Re: Typing Game Help |  |   
				| 
 |  
				| I hate to be blunt, but you're going to have to scrap 90% of that code and start over. Here is a MUCH better way to do it: 
 Store a sentence inside of a text file. Use File I/O to read that sentence to a variable, with each word being a seperate element in a flexible array. For this example, let's call the array "words". Then, have a separate variable (just one!) to "get" the input from the user. Have a for loop that runs for the length of your sentence, and after each word checks if the input is equal to the word stored in "words" at that position.
 
 If this sounds complicated to you, it kind of is. But if you can implement at least some of this, it will make you a far better programmer. What you are doing is comparable to solving an arithmetic problem like 10^5 by grabbing a pencil and adding 10 + 10 + 10 + 10 + 10 ... Sure, you won't learn exponents overnight, but you might as well start now. You may not learn everything posted up there in a week (such as the flexible arrays - those can be tricky when you're starting), but ultimately you're going to have to strive to improve or go nowhere at all.
 
 Edit: I want to point out that you can always find plenty of Turing tutorials at http://compsci.ca/v3/viewtopic.php?t=8808.
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| TerW 
 
 
 
 
 | 
			
				|  Posted: Wed May 06, 2009 7:40 pm    Post subject: Re: Typing Game Help |  |   
				| 
 |  
				| Thanks, Ill look into the tutorials and flexible arrays.  I also want to know how i can incorporate a procedure into this program. Thank you. |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| Dusk Eagle 
 
  
 
 
 | 
			
				|  Posted: Wed May 06, 2009 7:59 pm    Post subject: Re: Typing Game Help |  |   
				| 
 |  
				| There is, in fact. Here's a couple you could use: 
 
 	  | Turing: |  	  | 
/*Called by getWord below - see documentation there.*/
fcn getKey () : string
    var  ch : string (1)
    loop
        getch ( ch)
        exit when  ch ~=  KEY_BACKSPACE
    end loop
    cls
    result  ch
end  getKey
/*Gets word from user without allowing backspacing, and exits as soon as word is of appropriate length (available at http://compsci.ca/v3/viewtopic.php?t=20879)*/
fcn
  getWord ( word_length : int) : string
    var  word : string := ""
    loop
        exit when length( word) =  word_length
        locate (1 , length ( word)  + 1) 
        word +=  getKey ()
        put  word
    end loop
    result  word
end  getWord
/*Returns true if word1 = word2*/
fcn  compareWords ( word1, word2 : string) : boolean
    result  word1 =  word2
end  compareWords
 | 
 
 Here's just some examples - see if you can come up with your own.
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| TerW 
 
 
 
 
 | 
			
				|  Posted: Wed May 06, 2009 9:07 pm    Post subject: Re: Typing Game Help |  |   
				| 
 |  
				| Thanks, haha, its a little complicated for me, but I will try to comprehend this.  Any other suggestions, or tips will be much appreciated. |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| Sponsor Sponsor
 
  
   |  |   
		|  |   
		| TerW 
 
 
 
 
 | 
			
				|  Posted: Thu May 07, 2009 10:35 pm    Post subject: Re: Typing Game Help |  |   
				| 
 |  
				| Hey, does this seem fine so far? Uh, I have a question as to how to put the words in certain postions, like starting a new sentence, or so a word would not get cut off? 
 	  | Turing: |  	  | 
var text : flexible array 1 . . 0 of string
var  stream : int
var  mistakes : int := 0
var  input : string
open :  stream, "text1.txt", get
loop
    exit when eof ( stream)
    new  text, upper ( text)  + 1
    get :  stream, text (upper ( text))
end loop
for  i : 1 . . upper ( text)
    put  text ( i) . .
    put " " . .
    exit 
end for
locate (3 , 1)
loop
    for  i : 1 . . upper ( text)
        get  input
        if  input =  text ( i) then
            put  text ( i), " " . .
            exit
        else 
            mistakes :=  mistakes + 1
        end if
    end for
end loop
put "You have made ",  mistakes, " mistakes." | 
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| Dusk Eagle 
 
  
 
 
 | 
			
				|  Posted: Thu May 07, 2009 11:02 pm    Post subject: Re: Typing Game Help |  |   
				| 
 |  
				| It looks pretty good when a couple things are fixed. Both the problems I can tell stem from this piece of your code: 
 	  | Turing: |  	  | if input = text (i) then
put text (i), " " ..
 exit
 
 | 
 First of all, why do you exit the for loop? That is like saying "If you type the word correctly, you have to start over." The other issue is that you only display the word the user needs to type in only after they have typed in said word. I can see what you were getting at; you meant to put "text(i+1)", but even that won't work because your for loop will continue on whether or not the user enters in the correct word. So why not just display the word above your "get" line, thus avoiding this problem?
 
 I can't answer your main question because I don't understand it, but my suggestions above should help your code anyway.
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| TerW 
 
 
 
 
 | 
			
				|  Posted: Fri May 08, 2009 6:14 pm    Post subject: RE:Typing Game Help |  |   
				| 
 |  
				| Alright, sorry for not stating the question more clearly.  My question is asking how I can control the position of words on the screen. For example; when i get the words from the file, and i put them on screen they appear without any spaces in between the lines like this: 
 "The words all appear, but there are no spaces into between each line, even if the text file does have spaces.  I want to have spaces between the lines because that is the space I wanted to user to type in."
 
 I would prefer something like this:
 
 "All I want are spaces between each line, so
 
 there is a space for the user to input and type
 
 in the words that appear on the screen."
 
 I have tried using "locate" but I have difficulty using it in a loop changing the row every certain number of words.
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		|  |  
 |