Bueno, hago este post para pedirles su ayuda amigos de GLBasic, ya que he escrito un código que tiene 3 opciones, en 3 IF diferentes, el problema es que solo es usable la opción 1, las demás solo aparece en negro... se supone que la opcion 3 debe de SALIR, pero no lo hace...
aqui el código:
//--MAIN COMMANDS
SETCURRENTDIR("Media")
LIMITFPS 60
LOADFONT "smalfont.png", 0
GETSCREENSIZE sx,sy
//--variables
GLOBAL sx,sy
//--CODE STARTS
PRINT "Presiona una tecla para continuar", sx/2-130,sy/3
SHOWSCREEN
KEYWAIT
GOTO menu
menu:
CLEARSCREEN
LOCAL x$,r$
PRINT "Bienvenido aventurero! Dime, ¿Cual es tu nombre?", sx/2-170,sy/4
INPUT x$, sx/2-50,sy/2
SHOWSCREEN
PRINT "Excelente! Bienvenido " + x$ + "!", sx/2-140,sy/3
SHOWSCREEN
KEYWAIT
GOTO ops
ops:
CLEARSCREEN
PRINT "Despiertas en tu casa vacía, y te diriges a la cocina...",sx/5,sy/3
PRINT "¿Qué deseas hacer?",sx/5, sy/3+30
PRINT "a) Comer manzana",sx/5,sy/3+50
PRINT "b) Beber agua",sx/5,sy/3+60
PRINT "c) Salir de PRUEBA",sx/5,sy/3+70
INPUT r$,sx/5,sy/3+90
SHOWSCREEN
WHILE TRUE
IF r$ = "a" THEN PRINT "chop* chop* chop*", sx/5,sy/3+110
SHOWSCREEN
KEYWAIT
GOTO ops
IF r$ = "b" THEN PRINT "gulp* gulp* gulp*", sx/5,sy/3+110
SHOWSCREEN
KEYWAIT
GOTO ops
IF r$ = "c" THEN PRINT "Gracias por testear PRUEBA!", sx/5,sy/3+110
SHOWSCREEN
KEYWAIT
END
WEND
Hola jonaspm:
El problema está en que el IF ejecuta sólo como condicional lo que viene depués del THEN, dentro de esa línea. El resto lo ejecuta si o sí. Entonces debes evitar el THEN y acabar el condicional con un ENDIF que englobe todas tus instrucciones. De esta forma:
IF r$ = "a"
PRINT "chop* chop* chop*", sx/5,sy/3+110
SHOWSCREEN
KEYWAIT
GOTO ops
ENDIF
he dicho lo que dices, he eliminado los THEN del código, el problema ahora es que no me deja compilar, pues dice que al último IF le falta THEN o ENDIF:
IF r$ = "c"
PRINT "Gracias por testear PRUEBA!", sx/5,sy/3+110
SHOWSCREEN
KEYWAIT
END
ENDIF
Posiblemente te falta un ENDIF también en la primera o en la segunda opción. Pero tienes otro problema, y es que tienes un bucle WHILE infinito, con GOTOS a fuera del bucle. Lo cual es un sacrilegio en programación :D. Ese WHILE debería de incluir desde el CLEARSCREEN hasta el final. Y no te harían falta los GOTOS que lian bastante, cuando el programa sea mucho más grande te puedes volver loco. El 99% de los programas se pueden hacer sin GOTO, sólo usando bloques WHILE...WEND, bucles FOR...NEXT e IF...ENDIF.