Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 Typing Game Help
Index -> Programming, Turing -> Turing Help
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
TerW




PostPosted: 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
Sponsor
sponsor
Analysis Mode




PostPosted: 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




PostPosted: 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




PostPosted: 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




PostPosted: 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




PostPosted: 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




PostPosted: 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




PostPosted: 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
Sponsor
sponsor
TerW




PostPosted: 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




PostPosted: 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




PostPosted: 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.
Display posts from previous:   
   Index -> Programming, Turing -> Turing Help
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 11 Posts ]
Jump to:   


Style:  
Search: