Try putting the line
CLS 0
on the very first line after Sync On. This should stop the flashing.
Also, if you are using objects like Sphere, then you should be using Sync ON - not off.
When you have a 3D view, the Sync will put the 3D screen over the top of any text, (deleting it), but you have a couple of options:
1. Put all your text and print commands immediately AFTER the Sync which updates the 3D camera view.
2. Use Set Camera View to leave a 'non-3D' area of the screen that you can print on. This area will not be affected by the Sync.
For example, Set Camera View 0,0,800,600 will make the 3D view full screen, whereas Set Camera View 0,100,800,600 will leave a 100 pixel strip running across the top of the screen for a menu that you can print on without being affected by sync. You can even create an 800x100 image in a paint program and paste it at 0,0...
Your text problem is actually down to using Input. When you use this, the program 'freezes' while something is typed in. Therefore, the text is never replaced after the last screen refresh.
You can get round this by cheating. Simply set the camera view to 0,0,1,1 and the current 3D image will be frozen on the screen while you input. After the input command, return the camera view to what it was previously.
Here's your code which I've modified a bit for you. I wasn't too sure what you were actually trying to do so I just concentrated on demonstrating how to get round your problems...
Set Display Mode 800,600,16: Rem Required if using Set Camera View command
Sync on
CLS 0
Set Camera View 0,36,800,600
c$= "correct"
w$= "wrong"
guesses=3
currentguess=0
Randomize Timer(): Rem Without this, the random numbers will be the same every time you run the program
rem object
make object sphere 1,2
Sync
Sync
rand = rnd(4)+1: Rem Only need between 1 and 5 - not 1 and 6
Do
Sync: Rem update 3D view
Ink RGB(255,255,255),0: Text 5,580, "This text appears over the 3D section if placed after Sync"
Set Camera View 0,0,1,1
Set Cursor 0,0: Input "Please enter a word: box,circle,cube,sphere,banana: ",guess$
Inc currentguess: Rem Easier to type than 'varname = varname + 1'
Select Rand
Case 1: real$="box": EndCase
Case 2: real$="circle": EndCase
Case 3: real$="cube": EndCase
Case 4: real$="sphere": EndCase
Case 5: real$="banana": EndCase
EndSelect
IF guess$ = real$
Ink RGB(255,255,255),0: PRINT "that is ";c$
Wait 2000
Endif
IF guess$<>real$
Ink RGB(255,255,255),0: PRINT "that is ";w$
Wait 2000
Endif
IF guess$ <> real$ and currentguess = guesses
Rem Wrong and out of goes...
currentguess=0
Ink 0,0: Box 0,0,799,35
rand = rnd(4)+1: Rem New game - select new random number
Endif
Ink 0,0: Box 0,0,799,35
guess$ = ""
Set Camera View 0,36,800,600
Loop
TDK_Man