'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...        es.geocities.com/jm00092
'
'______________________________________________________________________
'                                      
'                                     
'                                  
'                                  
'                               
'                                      
'                                  
'                                    
'                                    
'                                   
'                                
'                                  
'                               
'                               
'                                  
'                                
'                                     
'                                     
'                                 

DECLARE SUB colores ()
DECLARE SUB gracias ()
DECLARE SUB cargarpalabras ()
DECLARE SUB bienvenido ()
DECLARE SUB listaerrores ()
DECLARE SUB presentacionerrores (n!)
DECLARE SUB lista ()
DECLARE SUB pantalla ()
DECLARE SUB instrucciones ()
DECLARE SUB casillas ()
DECLARE SUB diccionario ()
DECLARE SUB abandonar (pre!, er!)
DECLARE SUB cuadro ()
DECLARE SUB presentaciondelista (n!)

RANDOMIZE TIMER
CLS

DIM SHARED palabra$(1 TO 111)
DIM SHARED REPETICIONES(1 TO 25)
PALETTE 7, 63
PALETTE 4, 36
PALETTE 6, 62


PALETTE 3, 51   'fondo
PALETTE 5, 10   'sombra

pantalla

bienvenido


PRINCIPIO:

CLEAR

pantalla
instrucciones


cargarpalabras

DO
   KBD$ = UCASE$(INKEY$)
LOOP UNTIL KBD$ = "E" XOR KBD$ = "L" XOR KBD$ = "S" XOR KBD$ = "C"

SELECT CASE KBD$
   CASE "E": GOSUB examen
   CASE "L": lista: GOSUB PRINCIPIO
   CASE "S": gracias
   CASE "C": colores: GOSUB PRINCIPIO
END SELECT


examen:

INICIO = INT(TIMER)
COLOR 14, 4: LOCATE 25, 1: PRINT "   Salir = /S                                 ";

SOUND 933, 12


FOR PREGUNTA = 1 TO 20
   casillas
   LOCATE 8, 63: COLOR 4: PRINT PREGUNTA
   diccionario
   COLOR 31, 4: LOCATE 25, 17: PRINT SPACE$(46);

   tipo = INT(RND * 2) + 1

   IF MID$(ACLR$, 1, 1) = " " XOR MID$(ACLR$, 1, 1) = MID$(STR$(tipo), 2, 1) THEN : LOCATE 25, 17: PRINT MID$(ACLR$, 2, LEN(ACLR$) - 1);

   COLOR 2, 15
   SELECT CASE tipo
      CASE 1
         LOCATE 14, 40: PRINT vf$
         LOCATE 16, 36: COLOR 20, 15: PRINT ""
         LOCATE 16, 40: COLOR 15, 4: PRINT SPACE$(20)
         LOCATE 16, 40: INPUT "", p$: IF UCASE$(p$) = trad$ THEN :  ELSE : errores = errores + 1: entrada$ = entrada$ + p$ + SPACE$(17 - LEN(p$)): correcto$ = correcto$ + trad$ + SPACE$(17 - LEN(trad$)): tiempo$ = tiempo$ + "Traduccin     "
         IF UCASE$(p$) = "/S" THEN : abandonar PREGUNTA, errores: GOSUB PRINCIPIO
         LOCATE 16, 40: COLOR 1, 15: PRINT UCASE$(p$); SPACE$(22 - LEN(p$))
         LOCATE 16, 36: COLOR 0, 15: PRINT ""

      CASE 2
         LOCATE 16, 40: PRINT trad$
         LOCATE 14, 36: COLOR 20, 15: PRINT ""
         LOCATE 14, 40: COLOR 15, 4: PRINT SPACE$(20)
         LOCATE 14, 40: INPUT "", p$: IF UCASE$(p$) = vf$ THEN :  ELSE : errores = errores + 1: entrada$ = entrada$ + p$ + SPACE$(17 - LEN(p$)): correcto$ = correcto$ + vf$ + SPACE$(17 - LEN(vf$)): tiempo$ = tiempo$ + "Verbo frasal   "
         IF UCASE$(p$) = "/S" THEN : abandonar PREGUNTA, errores: GOSUB PRINCIPIO
         LOCATE 14, 40: COLOR 1, 15: PRINT UCASE$(p$); SPACE$(22 - LEN(p$))
         LOCATE 14, 36: COLOR 0, 15: PRINT ""

   END SELECT

   COLOR 13, 4

NEXT
final = INT(TIMER)
HORA$ = TIME$
SOUND 933, 12


salida:

COLOR 14, 4: LOCATE 25, 1: PRINT " E = Ver errores  L = Lista  V = Volver a empezar  S = Salir   Hecho en Ronda   ";

cuadro
COLOR 0
LOCATE 8, 15: PRINT "FIN DEL EXAMEN"
LOCATE 10, 15: PRINT "El examen ha terminado y ha sido vlido."
COLOR 4
           LOCATE 12, 40: PRINT "Ŀ"
LOCATE 13, 29: PRINT "NOTA FINAL             "
           LOCATE 14, 40: PRINT ""
COLOR 0
SELECT CASE errores
   CASE 0: frase$ = "No ha cometido ningun error."
   CASE 1: frase$ = "Ha cometido un slo error."
   CASE IS > 1: frase$ = "Ha cometido" + STR$(errores) + " errores."
END SELECT
LOCATE 15, 15: PRINT frase$
LOCATE 16, 15: PRINT "El examen ha durado"; (final - INICIO); "segundos."
FECHA$ = MID$(DATE$, 4, 2) + "/" + MID$(DATE$, 1, 2) + "/" + MID$(DATE$, 7, 4)

LOCATE 18, 15: PRINT FECHA$; "   "; HORA$
COLOR 14, 4
nota = 10 - errores
IF nota < 0 THEN : nota = 0
LOCATE 13, 45: PRINT nota
DO
   KBD$ = UCASE$(INKEY$)
LOOP UNTIL KBD$ = "V" XOR KBD$ = "S" XOR KBD$ = "E" XOR KBD$ = "L"

SELECT CASE KBD$
   CASE "V": GOSUB PRINCIPIO
   CASE "S": gracias
   CASE "E": listaerrores: GOSUB salida
   CASE "L": lista: GOSUB salida
END SELECT

gracias
SLEEP

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                                    
'Hecho en Ronda
'
'
'Presenta el cuadro diciendo los errores cometidos hasta ahora y hace
'los clculos sobre la nota que se habra sacado de haber seguido el
'examen.
'Permite ver la lista de verbos, la de errores, volver a empezar o salir
'
'
'
SUB abandonar (pre, er)
   COLOR 14, 4: LOCATE 25, 1: PRINT " E = Ver errores  L = Lista  V = Volver a empezar  S = Salir   Hecho en Ronda   ";

   IF er > 0 THEN : er = er - 1
   cuadro
   COLOR 0
   LOCATE 8, 15: PRINT "EXAMEN NO TERMINADO"
   LOCATE 10, 15: PRINT "Ha decidido dejar el examen cuando"
   LOCATE 11, 15: PRINT "iba por la pregunta nmero"; pre
   LOCATE 13, 15: PRINT "Llevaba cometidos"; er; "errores."
   SELECT CASE er
      CASE IS <= 5: LOCATE 14, 15: PRINT "Todava era posible aprobar el examen."
      CASE IS > 5: LOCATE 14, 15: PRINT "Ya no era posible aprobar el examen."
   END SELECT

   nota = 10 - ((20 * er) / pre)
   IF nota < 0 THEN : nota = 0
   final = 10 - er
   IF final < 0 THEN : final = 0
   LOCATE 15, 15: PRINT "La nota final mxima posible hubiera sido"; final; "puntos."
   LOCATE 16, 15: PRINT "La nota final estimada hubiera sido"; nota; "puntos."
   FECHA$ = MID$(DATE$, 4, 2) + "/" + MID$(DATE$, 1, 2) + "/" + MID$(DATE$, 7, 4)

   LOCATE 18, 15: PRINT FECHA$
   DO
      KBD$ = UCASE$(INKEY$)
   LOOP UNTIL KBD$ = "V" XOR KBD$ = "S" XOR KBD$ = "E" XOR KBD$ = "L"

   SELECT CASE KBD$
      CASE "V": EXIT SUB
      CASE "S": gracias
      CASE "E": listaerrores: abandonar pre, er
      CASE "L": lista: abandonar pre, er
   END SELECT

END SUB

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                                    
'Hecho en Ronda
'
'Presenta la pantalla de entrada.
'
'
'
SUB bienvenido
cuadro
COLOR 14, 4: LOCATE 25, 1: PRINT "            Pulsa cualquier tecla para empezar             ";
COLOR 4, 15
 LOCATE 8, 15: PRINT "   Bienvenido al programa para hacer un examen de"
 LOCATE 9, 15: PRINT "      "
LOCATE 10, 15: PRINT "        "
LOCATE 11, 15: PRINT "     "
LOCATE 12, 15: PRINT "         "
LOCATE 13, 15: PRINT "            "
LOCATE 14, 15: PRINT "          "
LOCATE 15, 15: PRINT "                 "
LOCATE 16, 15: PRINT "                 "
LOCATE 17, 15: PRINT "             "
COLOR 20
LOCATE 19, 54: PRINT " SUERTE !!!"
DO: LOOP WHILE INKEY$ = ""

END SUB

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                                    
'Hecho en Ronda
'
'Carga todas las formas verbales en la matriz palabra$
'para qe puedan ser usadas en el examen y en la lista de verbos.
'
'
'
SUB cargarpalabras

  palabra$(1) = " "
  palabra$(2) = "LISTA DE VERBOS FRASALES"
  palabra$(3) = ""
  palabra$(4) = "BRING UP              EDUCAR"
  palabra$(5) = "CARRY ON              CONTINUAR"
  palabra$(6) = "COME ACROSS           ENCONTRARSE CON"
  palabra$(7) = "DIE OUT               EXTINGUIRSE"
  palabra$(8) = "FALL FOR              ENAMORARSE"
  palabra$(9) = "FIND OUT              AVERIGUAR"
  palabra$(10) = "GET BY                APARESELAS"
  palabra$(11) = "GET ON WITH           TENER XITO"
  palabra$(12) = "GET RID OF            LIBRARSE DE"
  palabra$(13) = "GO AHEAD WITH         INICIAR"
  palabra$(14) = "LOOK AFTER            CUIDAR"
  palabra$(15) = "LOOK FOR              BUSCAR"
  palabra$(16) = "LOOK FORWARD TO       DESEAR"
  palabra$(17) = "LOOK UP               ENCONTRAR"
  palabra$(18) = "PICK UP               APRENDER"
  palabra$(19) = "PUT OFF               APLAZAR"
  palabra$(20) = "PUT UP WITH           AGUANTAR"
  palabra$(21) = "RUN OUT OF            QUEDARSE SIN"
  palabra$(22) = "SET OFF               SALIR DE VIAJE"
  palabra$(23) = "TAKE AFTER            PARECERSE A"
  palabra$(24) = "TAKE IN               ENTENDER"
  palabra$(25) = "TAKE OFF              IMITAR"
  palabra$(26) = "TAKE ON               CONTRATAR"
  palabra$(27) = "TAKE OVER             ENCARGARSE"
  palabra$(28) = "TAKE TO               GUSTAR"
  palabra$(29) = "TAKE UP               EMPEZAR ALGO"
  palabra$(30) = "TELL OFF              REGAAR"
  palabra$(31) = "TURN DOWN             RECHAZAR"
  palabra$(32) = "TURN INTO             CONVERTIRSE"
  palabra$(33) = "TURN UP               APARECER"

END SUB

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                                    
'Hecho en Ronda
'
'Dibuja los recuadros de las preguntas del examen.
'
'
'
SUB casillas
cuadro
COLOR 4
LOCATE 7, 13: PRINT " VERBOS"
LOCATE 8, 13: PRINT " FRASALES"
LOCATE 9, 13: PRINT " EN INGLS"

COLOR 0
LOCATE 7, 50: PRINT "Ŀ"
LOCATE 8, 50: PRINT " Pregunta N    "
LOCATE 9, 50: PRINT ""
LOCATE 13, 15: PRINT "      Ŀ"
LOCATE 14, 15: PRINT "       VERBO FRASAL                        "
LOCATE 15, 15: PRINT "      Ĵ"
LOCATE 16, 15: PRINT "         TRADUCCIN                        "
LOCATE 17, 15: PRINT "      "

END SUB

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                                    
'Hecho en Ronda
'
'
'Dibuja la pantalla de la opcin "Cambio de color" con la
'lista de conbinaciones disponibes y cambia los colores del
'fondo de la pantalla y la sombra del cuadro alpulsar las
'teclas que aparecen en la lista presentada usando el
'comando Palette de QBasic y los valores de color
'predispuestos para cada caso.
'
'
SUB colores




COLOR 14, 4: LOCATE 25, 1: PRINT " Pulsa las letras para cambiar el color       ESC = Salir      Hecho en Ronda   ";
cuadro
LOCATE 6, 12: COLOR 15, 4:  PRINT "              OPCIONES PARA CAMBIAR EL COLOR              "
LOCATE 7, 12: COLOR 15, 0:  PRINT "  Letra  Color                 Letra  Color               "
COLOR 0, 15
 LOCATE 8, 12: PRINT "ĿĿ"
 LOCATE 9, 12: PRINT "   A    Verde claro           L    Celeste            "
LOCATE 10, 12: PRINT "   B    Marrn claro          M    Amarillo oscuro    "
LOCATE 11, 12: PRINT "   C    Violeta claro         N    Verde              "
LOCATE 12, 12: PRINT "   D    Azul grisaceo             Violeta azulado    "
LOCATE 13, 12: PRINT "   E    Naranja               O    Verde claro fuerte "
LOCATE 14, 12: PRINT "   F    Gris claro            P    Gris oscuro        "
LOCATE 15, 12: PRINT "   G    Amarillo              Q    Rosa               "
LOCATE 16, 12: PRINT "   H    Celeste grisaceo      R    Celeste claro      "
LOCATE 17, 12: PRINT "   I    Azul fuerte           S    Verde muy oscuro   "
LOCATE 18, 12: PRINT "   J    Rosa muy claro        T    Rojo anaranjado    "
LOCATE 19, 12: PRINT "   K    Amarillo muy claro    U    Azul muy oscuro    "
LOCATE 20, 12: PRINT ""

DO

   DO
      KBD$ = UCASE$(INKEY$)
   LOOP WHILE KBD$ = ""


   SELECT CASE KBD$
CASE "A"
PALETTE 3, 51   'fondo
PALETTE 5, 10   'sombra
CASE "B"
PALETTE 3, 28
PALETTE 5, 32
CASE "C"
PALETTE 3, 47
PALETTE 5, 61
CASE "D"
PALETTE 3, 49
PALETTE 5, 1
CASE "E"
PALETTE 3, 52
PALETTE 5, 20
CASE "F"
PALETTE 3, 7
PALETTE 5, 24
CASE "G"
PALETTE 3, 62
PALETTE 5, 14
CASE "H"
PALETTE 3, 35
PALETTE 5, 49
CASE "I"
PALETTE 3, 9
PALETTE 5, 8
CASE "J"
PALETTE 3, 39
PALETTE 5, 53
CASE "K"
PALETTE 3, 55
PALETTE 5, 62
CASE "L"
PALETTE 3, 43
PALETTE 5, 33
CASE "M"
PALETTE 3, 46
PALETTE 5, 20
CASE "N"
PALETTE 3, 10
PALETTE 5, 16
CASE ""
PALETTE 3, 13
PALETTE 5, 5
CASE ""
PALETTE 3, 13
PALETTE 5, 5
CASE "O"
PALETTE 3, 22
PALETTE 5, 10
CASE "P"
PALETTE 3, 24
PALETTE 5, 0
CASE "Q"
PALETTE 3, 53
PALETTE 5, 12
CASE "R"
PALETTE 3, 59
PALETTE 5, 15
CASE "S"
PALETTE 3, 48
PALETTE 5, 0
CASE "T"
PALETTE 3, 60
PALETTE 5, 36
CASE "U"
PALETTE 3, 8
PALETTE 5, 0

   END SELECT


LOOP UNTIL KBD$ = CHR$(27)
END SUB

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                                    
'Hecho en Ronda
'
'Dibuja un cuadro blanco con su sombra en el centro de la pantalla.
'
'
'
SUB cuadro
COLOR 1, 7
FOR V = 6 TO 20
   LOCATE V, 11: COLOR 7, 7: PRINT SPACE$(60)
   LOCATE V + 1, 71: COLOR 2, 5: PRINT "  "
NEXT
LOCATE 21, 13: PRINT SPACE$(60)
COLOR , 15
END SUB

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                                    
'Hecho en Ronda
'
'Calcula un nmero aleatorio que se corresponde con un subindice de la
'matriz palabra$ para proponer una pregunta
'Dispone de varios verbos que pueden causar comfusiones y los utiliza
'sin usar los de la matriz palabra$ para poder presentar en la lnea
'inferior de la pantalla una aclaracin
'
'Evita que las preguntas se repitan
'
'
'
SUB diccionario

SHARED vf$, trad$, PREGUNTA


ACLR$ = ""

DO
   NUMERO = INT(RND * 30) + 4

   nORREPETICION = 0
   FOR n = 1 TO PREGUNTA
      IF REPETICIONES(n) = NUMERO THEN : nORREPETICION = 1
   NEXT
   IF PREGUNTA > 1 THEN : SOUND 933, 1
LOOP UNTIL nORREPETICION = 0


REPETICIONES(PREGUNTA) = NUMERO

 vf$ = (MID$(palabra$(NUMERO), 1, 22))
 DO
  vf$ = MID$(vf$, 1, (LEN(vf$) - 1))
 LOOP UNTIL MID$(vf$, (LEN(vf$)), 1) <> " "

 trad$ = (MID$(palabra$(NUMERO), 23, 22))
 DO
  trad$ = MID$(trad$, 1, (LEN(trad$)))
 LOOP UNTIL MID$(trad$, (LEN(trad$)), 1) <> " "

END SUB

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                                    
'Hecho en Ronda
'
'Presenta la pantalla de salida.
'
'
'
SUB gracias
pantalla
cuadro
COLOR 0, 15
LOCATE 9, 18: PRINT "Ŀ"
FOR A = 10 TO 16
   LOCATE A, 18: PRINT ""; SPACE$(44); ""
NEXT
LOCATE 17, 18: PRINT ""

COLOR 15, 0
FOR V = 15 TO 19
   LOCATE V, 14: PRINT "                    "
NEXT
LOCATE 16, 16: PRINT " Programa basic "
LOCATE 17, 16: PRINT " Hecho en Ronda "
LOCATE 18, 16: PRINT " Marzo del 1996 "

COLOR 4, 15
LOCATE 13, 26: PRINT "GRACIAS POR USAR ESTE PROGRAMA"

COLOR 14, 4: SYSTEM: END

END SUB

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                                    
'Hecho en Ronda
'
'Presenta la pantalla de instrucciones y permite
'acceder a la opcin de cambiode color, a la lista
'de verbos, iniciar el examen o salir.
'
'
'
SUB instrucciones
cuadro
COLOR 0
LOCATE 8, 15: PRINT "INSTRUCCIONES"
LOCATE 10, 15: PRINT "Hay dos campos para cada verbo:"
LOCATE 11, 20: PRINT "Verbo frasal y traduccin"
LOCATE 12, 15: PRINT "El programa propone uno y hay que escribir el otro."
LOCATE 14, 15: PRINT "Hay 20 preguntas para contestarlas por orden."
LOCATE 15, 15: PRINT "Se obtiene una nota entre 0 y 10 puntos."
LOCATE 16, 15: PRINT "Cada error baja 1 punto."
LOCATE 18, 17: PRINT "Activar BLOQUEO DE MAYSCULAS para evitar errores."

END SUB

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                                    
'Hecho en Ronda
'
'Dibuja los encabezados y el recuadro de la lista de verbos
'y reconoce las teclas pulsadas para movimiento
'
'
'
SUB lista
COLOR 15, 4
LOCATE 8, 69: PRINT ""
LOCATE 20, 69: PRINT ""
LOCATE 6, 12: COLOR 15, 4:  PRINT "            LISTA DE VERBOS FRASALES EN INGLS            "
LOCATE 7, 12: COLOR 15, 0:  PRINT "   Verbo frasal          Traduccin                       "

COLOR 14, 4
LOCATE 25, 1: PRINT "   Mover:   AvPg RePg Inicio Fin        Salir: ESC      ";


COLOR 0, 15: LOCATE 8, 12: PRINT "" + STRING$(56, 196)
FOR A = 9 TO 19
   LOCATE A, 12: PRINT ""
NEXT
LOCATE 20, 12: PRINT "" + STRING$(56, 196)

presentaciondelista 4
n = 4
DO
   WHILE INKEY$ <> "": WEND
   DO
      KBD$ = INKEY$
   LOOP WHILE KBD$ = ""
   SELECT CASE KBD$
      CASE CHR$(0) + "H" 'arriba
         n = n - 1
      CASE CHR$(0) + "P" 'abajo
         n = n + 1
      CASE CHR$(0) + "Q" 'avpg
         n = n + 11
      CASE CHR$(0) + "I" 'repg
         n = n - 11
      CASE CHR$(0) + "G" 'inicio
         n = 4
      CASE CHR$(0) + "O" 'fin
         n = 100
   END SELECT
   IF n < 4 THEN : n = 4
   IF n > 23 THEN : n = 23
   presentaciondelista n
LOOP UNTIL KBD$ = CHR$(27)

END SUB

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                                    
'Hecho en Ronda
'
'Dibuja los encabezados y el recuadro de la lista de errores
'y reconoce las teclas pulsadas para movimiento si hay ms
'de once errores
'
'
SUB listaerrores
SHARED errores, entrada$, correcto$, tiempo$

entrada$ = UCASE$(entrada$)

cuadro
COLOR 15, 4
LOCATE 8, 69: PRINT ""
LOCATE 20, 69: PRINT ""
COLOR 14, 4
LOCATE 25, 1: PRINT "   Mover:   AvPg RePg Inicio Fin        Salir: ESC      ";

LOCATE 6, 12: COLOR 15, 4:  PRINT "                ERRORES EN EL LTIMO EXAMEN               "
LOCATE 7, 12: COLOR 15, 0: PRINT "   Correcto         Error            Campo                "

COLOR 0, 15: LOCATE 8, 12: PRINT "" + STRING$(56, 196)
FOR A = 9 TO 19
   LOCATE A, 12: PRINT ""
NEXT
LOCATE 20, 12: PRINT "" + STRING$(56, 196)
COLOR 15, 4
FOR A = 9 TO 19
   LOCATE A, 69: PRINT ""
NEXT
LOCATE 9, 69: PRINT " "

IF errores = 0 THEN : DO: LOOP UNTIL INKEY$ = CHR$(27): EXIT SUB

presentacionerrores 1
IF errores < 12 THEN : DO: LOOP UNTIL INKEY$ = CHR$(27): EXIT SUB
n = 1
DO
   WHILE INKEY$ <> "": WEND
   DO
      KBD$ = INKEY$
   LOOP WHILE KBD$ = ""
   SELECT CASE KBD$
      CASE CHR$(0) + "H"
         n = n - 1
      CASE CHR$(0) + "P"
         n = n + 1
      CASE CHR$(0) + "Q" 'avpg
         n = n + 11
      CASE CHR$(0) + "I" 'repg
         n = n - 11
      CASE CHR$(0) + "G" 'inicio
         n = 1
      CASE CHR$(0) + "O" 'fin
         n = errores - 10
   END SELECT
   IF n < 1 THEN : n = 1
   IF n > errores - 10 THEN : n = errores - 10
   presentacionerrores n
LOOP UNTIL KBD$ = CHR$(27)

END SUB

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                                    
'Hecho en Ronda
'
'Dibuja la pantalla del programa:
' El letrero "Examen automtico de verbos..."
' La lnea de ayuda para el inicio del programa
'
'
'
SUB pantalla
SCREEN 0

COLOR 15, 3: CLS
FOR V = 2 TO 24
   LOCATE V, 1: PRINT SPACE$(80);
NEXT
COLOR 15, 1: LOCATE 1, 1: PRINT "                 EXAMEN AUTOMTICO DE VERBOS FRASALES EN INGLS                 "
COLOR 14, 4: LOCATE 25, 1: PRINT " E = Examen   L = Lista de verbos   C = Color   S = Salir      Hecho en Ronda   ";
COLOR 30, 4: LOCATE 25, 1: PRINT " E = Examen";

END SUB

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                                    
'Hecho en Ronda
'
'
'Dibuja en el recuadro de la lista de verbos once lneas
'sacadas de la matriz palabra$ mpezando por el nmero pedido
'por la sub LISTA y actualiza la posicin del cursor de la
'barra de desplazamiento a la derecha del cuadro
'
'
SUB presentaciondelista (n)
COLOR 0, 15
LL = 8
FOR C = n TO n + 10
   LL = LL + 1

   IF LL / 2 = INT(LL / 2) THEN : COLOR 0, 15:  ELSE : COLOR 0, 6

   LIN$ = palabra$(C)
   LOCATE LL, 13: PRINT "  "; LIN$ + SPACE$(54 - LEN(LIN$))
NEXT
COLOR 15, 4
FOR A = 9 TO 19
   LOCATE A, 69: PRINT ""
NEXT
LC = INT((n / 25) * 12) + 8
LOCATE LC, 69: PRINT " "
END SUB

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                                    
'Hecho en Ronda
'
'
'Dibuja en el recuadro de la lista de errores once lneas (o menos
'si no hay once) sacadas de las variables provisionales de almacenaje
'de errores que simulan a matrices empezando por el nmero pedido
'por la sub LISTAERRORES y actualiza la posicin del cursor de la
'barra de desplazamiento que hay a la derecha del cuadro
'
'
SUB presentacionerrores (n)
SHARED entrada$, correcto$, errores, tiempo$
COLOR 0, 15
LL = 8
IF errores < 12 THEN : MM = errores - 1:  ELSE : MM = 10
FOR C = n TO n + MM
   LL = LL + 1

   IF LL / 2 = INT(LL / 2) THEN : COLOR 0, 15:  ELSE : COLOR 0, 6
   ENT$ = MID$(entrada$, (C * 17) - 16, 17)
   IF ENT$ = "                 " THEN : ENT$ = "--               "
   LIN$ = MID$(correcto$, (C * 17) - 16, 17) + ENT$ + MID$(tiempo$, (C * 15) - 14, 15)
   LOCATE LL, 13: PRINT "  "; LIN$ + SPACE$(54 - LEN(LIN$))
NEXT
COLOR 15, 4
FOR A = 9 TO 19
   LOCATE A, 69: PRINT ""
NEXT
fALLOS = errores - 10

LC = INT((n / errores) * 12)


LC = LC + 9
IF n = fALLOS THEN : LC = 19
IF n = 1 THEN : LC = 9
IF errores < 12 THEN : LC = 9

LOCATE LC, 69: PRINT " "

END SUB

