Computer Science Canada Turing Get Statement Timer |
Author: | Shadow456732 [ Sat Sep 08, 2012 9:38 pm ] |
Post subject: | Turing Get Statement Timer |
What is it you are trying to achieve? Im trying to make it so the get statement will only accept input for "blank" amount of seconds, when that time is up, it continues the script, but if u finish, it keeps the input in a variable. for later use. What is the problem you are having? It seems that the get statement pauses everything else until you are finished typing and hit enter Describe what you have tried to solve this problem ive looked around alot on these forums, and havent found anything that works quite the way i want it to Post any relevant code (You may choose to attach the file instead of posting the code if it is too long) loop var number : int var random := Rand.Int (1, 100) put random get number if number = random + 1 then cls else cls put "YOU LOSE!" delay (1000) exit end if end loop This is what i have so far, im trying to add the timer in that get statement called "number" Please specify what version of Turing you are using I'm using 4.1.1 (the newest) I Appreciate any help i can get! Thanks guys! |
Author: | Amarylis [ Sat Sep 08, 2012 11:50 pm ] |
Post subject: | RE:Turing Get Statement Timer |
You might want to consider using getch inside a loop for specific amount of time, as opposed to using a get statement. |
Author: | Tony [ Sun Sep 09, 2012 2:47 am ] |
Post subject: | RE:Turing Get Statement Timer |
getch could also block, unless you specifically check that there's something in the buffer with hasch. |
Author: | Shadow456732 [ Sun Sep 09, 2012 9:34 am ] |
Post subject: | RE:Turing Get Statement Timer |
Thanks so far guys, but if you don't mind, could you maybe elaborate, or give an example please? Thanks a bunch! |
Author: | Insectoid [ Sun Sep 09, 2012 9:57 am ] |
Post subject: | RE:Turing Get Statement Timer |
Well, it's a lot more complicated than just 'get'. Probably a lot more complicated than you expected too. Basically, you're gonna need a loop that quits after X seconds. Inside that loop, use hasch() to check if a key is pressed. If it is, use getch() to input that key and add it to a string. If the user hits 'enter', save that string, quit the loop and move on. If time runs out, delete the string, quit the loop and move on. |
Author: | Tony [ Sun Sep 09, 2012 5:05 pm ] |
Post subject: | RE:Turing Get Statement Timer |
backspaces are interesting. What if user deletes more characters than they've entered? |
Author: | Insectoid [ Sun Sep 09, 2012 5:44 pm ] |
Post subject: | RE:Turing Get Statement Timer |
I actually included that in my original write-up, but it was too long and I figured OP could/should work out the details on his own. |
Author: | Shadow456732 [ Sun Sep 09, 2012 8:45 pm ] |
Post subject: | RE:Turing Get Statement Timer |
Well I've tried as you guys have suggested, but to no avail, it seems I don't really understand how to use the getch or the getchar commands, it's a pretty essential part to the program so it would be nice if I could get it to work |
Author: | Amarylis [ Sun Sep 09, 2012 9:44 pm ] |
Post subject: | RE:Turing Get Statement Timer |
Try first playing around with hasch and getch on their own. Then, play around with timers (Time.Elapsed, etc). Afterwards, try to link the two together, and if you're still having problems, post what you've tried so far. |
Author: | QuantumPhysics [ Mon Sep 10, 2012 7:27 am ] |
Post subject: | RE:Turing Get Statement Timer |
Turing has an open documention in the interpreter itself. If its the same as python - you can just hit f1 hotkey and the documentation will appear where you can then go to index and type in the command you are struggling with at the top and it will give you a nice explanation of how it works. |
Author: | Insectoid [ Mon Sep 10, 2012 8:10 am ] |
Post subject: | RE:Turing Get Statement Timer |
Actually, Turing's docs are broken since they just link to Holtsoft which doesn't host it anymore. Luckily, compsci.ca has a copy here. |
Author: | QuantumPhysics [ Mon Sep 10, 2012 8:48 am ] |
Post subject: | RE:Turing Get Statement Timer |
Oh sorry, didnt know that, never used turing. |
Author: | Amarylis [ Mon Sep 10, 2012 7:54 pm ] |
Post subject: | RE:Turing Get Statement Timer |
Turing has compressed HTML docs as well in one of it's folders (no longer have Turing, couldn't tell you the directory) |
Author: | Shadow456732 [ Mon Sep 10, 2012 8:26 pm ] |
Post subject: | RE:Turing Get Statement Timer |
Ok, so , after messing around with getch, getchar, and hatch... My brain melted, and i decided to scratch that and come up with a new method of doing the same thing... Buttons! So after learning how they work, procedure's, calling the buttons variables, and all the other button stuff... I ran into more problems, that i believe can be fixed quite quickly, i just cant seem to find them. Here's the code i have so far: import GUI setscreen("graphics:500;500") %TITLE AND STARTING CODE loop loop cls var continue : string put "Welcome To The Number Game!" put "Type start to begin" get continue if continue = "start" then cls exit else cls put "That's Not Start " delay (1000) end if end loop put "Ok! Lets GO!" delay (1000) cls %END TITLE AND STARTING CODE: Will later add buttons to start, and no if statement will be needed to tell if input was not correct % ========================================================================================================================================== %This is the code for the game itself after the titles loop var number : int var random := Rand.Int (1, 100) put random % ================================================================================================== %START BUTTONCODE %procedures (for buttons)this one is for the answer var button1text : int := Rand.Int(1, 100) var button2text : int := Rand.Int(1, 100) var button3text : int := Rand.Int(1, 100) var answerbuttontext : int := random + 1 procedure button1procedure var answer := button1text end button1procedure procedure button2procedure var answer := button2text end button2procedure procedure button3procedure var answer := button3text end button3procedure procedure correctanswer var answer := answerbuttontext end correctanswer %Button Names var randombutton1 : int := GUI.CreateButton (25,25,0,button1text,useranswer) var randombutton2 : int := GUI.CreateButton (50,50,0,button2text,useranswer) var randombutton3 : int := GUI.CreateButton (75,75,0,button3text,useranswer) var answerbutton : int := GUI.CreateButton (100,100,0,answerbuttontext,useranswer) %ButtoncodeEnd % ================================================================================================== if answer = random + 1 then cls else cls put "YOU LOSE!" delay (1000) exit end if end loop % END GAME CODE (THIS WILL NOW GO TO TITLE IF YOU LOSE) might add code to give you strikes based on difficulty. As in, counts number of times either "answer" variable % was wrong, or the time allocated was not met end loop |
Author: | Shadow456732 [ Mon Sep 10, 2012 8:32 pm ] |
Post subject: | RE:Turing Get Statement Timer |
Forgot to include my problem, in my last post... Sorry, anyways, it seems that, the procedure's themselves don't work. It says that procedure's may only be declared at the program, module, or monitor level... I dont really understand what they mean by that. could use some explanation if you guys don't mind. Also, it says that in all the "randombuttons" that "randombutton1text" is an invalid argument. I'm trying to make it so the value of the variable is displayed as the button name, not so much the variable name.... I've done the same before just not with buttons, and i don't kow why exactly it dosen't work here. Also, thanks soooo much for all the help guys, sorry if i don't seem like a appreciate it. I'm just concentrating alot on the project it self. It makes a huggee difference to my understanding of turing, so, yeah, thanks again! |
Author: | Insectoid [ Mon Sep 10, 2012 10:09 pm ] |
Post subject: | RE:Turing Get Statement Timer |
You can't declare a procedure inside a loop. |
Author: | QuantumPhysics [ Tue Sep 11, 2012 7:37 am ] |
Post subject: | RE:Turing Get Statement Timer |
Is a procedure in turing the same as a function in C/C++? |
Author: | Raknarg [ Tue Sep 11, 2012 9:43 am ] |
Post subject: | RE:Turing Get Statement Timer |
Yes. In turing, they have both procedures and functions, but the difference is taht a function will produce a result at the end, where a prodecure simply ends. I believe in C++ when someone wants to accomplish that they make function that just results 0 and does nothing with it. It's not necessary, but I think the creators of turing thought it would make more sense to make separate options. |
Author: | 2goto1 [ Tue Sep 11, 2012 10:01 am ] |
Post subject: | RE:Turing Get Statement Timer |
The thought process for Turing having functions and procedures as separate entities can be summarized in the function help documentation found at http://compsci.ca/holtsoft/doc/function.html. Here is the relevant portion: In principle, a function (1) should not change any variables outside of itself (global variables) or (2) should not have var parameters. In other words, it should have no side effects. The original implementation prevented (1) and (2) and thereby prevented function side effects. Current implementations of Turing do not enforce this restriction. Some languages today still actually enforce this type of rule. But I'm only familiar with database languages enforcing this type of rule today, typically for database query optimization / performance purposes. |