Hey Sagax
I liked some things about your code so I spent a while on it
hope this helps. You gave some good opportunities for me to lecture on logic and loops haha

You've been OBese'd
rem Using loops is much tidier and more efficient than GOTOs
DO
cls
ink rgb(244,214,210),0
set cursor 230,0
print "Reaction Time"
print
print "Keep your hand on the return key!"
rem "s are only used to open and close strings use ' for quotation inside strings
print "When the word 'now' appears, press the return key to stop the timer."
print
rem when you don't need to use the keyboard input you can simply use WAIT KEY
rem which will halt the program until a key is pressed
rem but since your text suggests you would like to check for the return key, let's do that
print "Press return to start"
rem this line will loop until the return key is pressed. You could also add code inside the loop to be
rem executed until the return key is pressed.
REPEAT : UNTIL returnkey()=1
CLS
ink rgb(255,0,0),1
rem no need for parentheses () here, but doesn't hurt if you like using them
rem good use of variables here to turn the data into information you can understand :)
rem I changed them a bit because
rem A: I think X and Y are better names because they store the position of the ellipse
rem B: ellipseheight is quite long for a variable name :P
x=275 : y=250
ew=200 : eh=200
ellipse x,y,ew,eh
ink rgb(255,255,255),1
print "On your mark..."
sleep rnd(3000)
print "Get set...."
sleep rnd(3000)
ink rgb(0,255,0),1
print "NOW!"
ink rgb(0,255,0),1
ew=200 : eh=200 :
ellipse left,top,ellipsewidth,ellipseheight
a=timer()
REPEAT : UNTIL returnkey()=1
b=timer()
c=b-a
rem I'm impressed you worked out that you need to divide by a float to produce a float
rem although you only need the decimal point (or one zero for clarity)
print c/1000.0;" seconds"
ink rgb(255,255,255),0 : `ink foreground_colour,background_colour : 0=black
print "TRY AGAIN?"
remstart
This statement poses a question: would the user like to exit the program or run through the game once more.
Because we need to wait for the user's response, a loop is in order. A simple DO loop wouldn't help as we
need our loop to exit on a condition (whether the user chooses to exit or continue);
the conditional loops are REPEAT UNTIL and WHILE ENDWHILE. The major, and only difference between the two
is that a WHILE loop checks for its conditions for exit before running the code inside,
while a REPEAT loop only checks its conditions after it has completed a pass of the code it contains.
Before we can decide which to use we must decide what we are going to check for; since the question is
"TRY AGAIN?" we can use the "y" and "n" keys as options to continue or exit. A bit of logical thinking is
required to work out which key should be checked in the loop.
If we were to check for the "n" key's state then pressing "n" would cause the loop's condition to be true
and the program would exit the loop and continue with the program, but we want to exit on "n"!
So then we would have to add END after the loop to make the program end, then we would have to create a label
after the END to jump to, if "y" is pressed, and so avoiding exiting the program when we want to continue.
As you may have guessed this is the wrong way to go about it.
Checking the "y" key's state is the more logical option, as exiting the loop and continuing is the action we want
to happen. We can now check for "n" inside the loop and end the program if it is pressed.
Now we have the structure of our loop we just need to pick which type to use, again we will use logic to find
which is the better option.
To help us with this decision, lets imagine that both keys are pressed at the same time, what would happen?
If we used a REPEAT loop, the loop would run until it found that "n" was pressed and so end the program.
If we used a WHILE loop, the loop would straight away see that "y" was pressed and so exit the loop and continue.
This is up to you but I would prefer to use the WHILE loop as it is the "safer" option.
After all that ranting, we can finally write our loop :)
It will look like this:
WHILE y=0
if n=1 then END
ENDWHILE
But of course y and n are just variables, so we will have to replace them with the states of their respective
keys. This works in the same way as RETURN KEY() but we need to use the KEYSTATE() command and give it the
number of the key we want to check.
remend
WHILE keystate(21)=0
if keystate(49)=1 then END
ENDWHILE
LOOP
