'
'   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!)
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 25
   casillas
   LOCATE 8, 63: COLOR 4: PRINT PREGUNTA
   diccionario
   COLOR 31, 4: LOCATE 25, 17: PRINT SPACE$(46);

   tipo = INT(RND * 4) + 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
         NP = 1
         LOCATE 12, 43: PRINT trad$
      CASE 2
         NP = 2
         LOCATE 14, 43: PRINT pre$
      CASE 3
         NP = 3
         LOCATE 16, 43: PRINT pa$
      CASE 4
         NP = 4
         LOCATE 18, 43: PRINT part$
   END SELECT

     
   IF NP <> 1 THEN
      LOCATE 12, 39: COLOR 20, 15: PRINT ""
      LOCATE 12, 43: COLOR 15, 4: PRINT SPACE$(17)
      LOCATE 12, 43: 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 12, 43: COLOR 1, 15: PRINT UCASE$(p$); SPACE$(17 - LEN(p$))
      LOCATE 12, 39: COLOR 0, 15: PRINT ""
   END IF


   IF NP <> 2 THEN
      LOCATE 14, 39: COLOR 20, 15: PRINT ""
      LOCATE 14, 43: COLOR 15, 4: PRINT SPACE$(17)
      LOCATE 14, 43: INPUT "", p$: IF UCASE$(p$) = pre$ THEN :  ELSE : errores = errores + 1: entrada$ = entrada$ + p$ + SPACE$(17 - LEN(p$)): correcto$ = correcto$ + pre$ + SPACE$(17 - LEN(pre$)): tiempo$ = tiempo$ + "Infinitive     "
      IF UCASE$(p$) = "/S" THEN : abandonar PREGUNTA, errores: GOSUB PRINCIPIO
      LOCATE 14, 43: COLOR 1, 15: PRINT UCASE$(p$); SPACE$(17 - LEN(p$))
      LOCATE 14, 39: COLOR 0, 15: PRINT ""
   END IF


   IF NP <> 3 THEN
      LOCATE 16, 39: COLOR 20, 15: PRINT ""
      LOCATE 16, 43: COLOR 15, 4: PRINT SPACE$(17)
      LOCATE 16, 43: INPUT "", p$: IF UCASE$(p$) = pa$ THEN :  ELSE : errores = errores + 1: entrada$ = entrada$ + p$ + SPACE$(17 - LEN(p$)): correcto$ = correcto$ + pa$ + SPACE$(17 - LEN(pa$)): tiempo$ = tiempo$ + "Past Simple    "
      IF UCASE$(p$) = "/S" THEN : abandonar PREGUNTA, errores: GOSUB PRINCIPIO
      LOCATE 16, 43: COLOR 1, 15: PRINT UCASE$(p$); SPACE$(17 - LEN(p$))
      LOCATE 16, 39: COLOR 0, 15: PRINT ""
   END IF


   IF NP <> 4 THEN
      LOCATE 18, 39: COLOR 20, 15: PRINT ""
      LOCATE 18, 43: COLOR 15, 4: PRINT SPACE$(17)
      LOCATE 18, 43: INPUT "", p$: IF UCASE$(p$) = part$ THEN :  ELSE : errores = errores + 1: entrada$ = entrada$ + p$ + SPACE$(17 - LEN(p$)): correcto$ = correcto$ + part$ + SPACE$(17 - LEN(part$)): tiempo$ = tiempo$ + "Past Participle"
      IF UCASE$(p$) = "/S" THEN : abandonar PREGUNTA, errores: GOSUB PRINCIPIO
      LOCATE 18, 43: COLOR 1, 15: PRINT UCASE$(p$); SPACE$(17 - LEN(p$))
      LOCATE 18, 39: COLOR 0, 15: PRINT ""
   END IF

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 - ((25 * 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 IRREGULARES"
  palabra$(3) = ""
  palabra$(4) = "SER/ESTAR     BE            WAS/WERE      BEEN"
  palabra$(5) = "GOLPEAR       BEAT          BEAT          BEATEN"
  palabra$(6) = "LLEGAR A SER  BECOME        BECAME        BECOME"
  palabra$(7) = "EMPEZAR       BEGIN         BEGAN         BEGUN"
  palabra$(8) = "ENCORBARSE    BEND          BENT          BENT"
  palabra$(9) = "APOSTAR       BET           BET           BET"
 palabra$(10) = "MORDER        BITE          BIT           BITTEN"
 palabra$(11) = "SOPLAR        BLOW          BLEW          BLOWN"
 palabra$(12) = "ROMPER        BREAK         BROKE         BROKEN"
 palabra$(13) = "TRAER         BRING         BROUGHT       BROUGHT"
 palabra$(14) = "CONSTRUIR     BUILD         BUILT         BUILT"
 palabra$(15) = "REVENTAR      BURST         BURST         BURST"
 palabra$(16) = "COMPRAR       BUY           BOUGHT        BOUGHT"
 palabra$(17) = "COGER         CATCH         CAUGHT        CAUGHT"
 palabra$(18) = "ELEGIR        CHOOSE        CHOSE         CHOSEN"
 palabra$(19) = "VENIR         COME          CAME          COME"
 palabra$(20) = "COSTAR        COST          COST          COST"
 palabra$(21) = "CORTAR        CUT           CUT           CUT"
 palabra$(22) = "TRATAR        DEAL          DEALT         DEALT"
 palabra$(23) = "CAVAR         DIG           DUG           DUG"
 palabra$(24) = "HACER         DO            DID           DONE"
 palabra$(25) = "DIBUJAR       DRAW          DREW          DRAWN"
 palabra$(26) = "BEBER         DRINK         DRANK         DRUNK"
 palabra$(27) = "CONDUCIR      DRIVE         DROVE         DRIVEN"
 palabra$(28) = "COMER         EAT           ATE           EATEN"
 palabra$(29) = "CAER          FALL          FELL          FALLEN"
 palabra$(30) = "ALIMENTAR     FEED          FED           FED"
 palabra$(31) = "SENTIR        FEEL          FELT          FELT"
 palabra$(32) = "LUCHAR        FIGHT         FOUGHT        FOUGHT"
 palabra$(33) = "ENCONTRAR     FIND          FOUND         FOUND"
 palabra$(34) = "VOLAR         FLY           FLEW          FLOWN"
 palabra$(35) = "PROHIBIR      FORBID        FORBADE       FORBIDEN"
 palabra$(36) = "OLVIDAR       FORGET        FORGOT        FORGOTTEN"
 palabra$(37) = "PERDONAR      FORGIVE       FORGAVE       FORGIVEN"
 palabra$(38) = "HELAR         FREEZE        FROZE         FROZEN"
 palabra$(39) = "OBTENER       GET           GOT           GOT"
 palabra$(40) = "DAR           GIVE          GAVE          GIVEN"
 palabra$(41) = "IR            GO            WENT          GONE"
 palabra$(42) = "CRECER        GROW          GREW          GROWN"
 palabra$(43) = "COLGAR        HANG          HUNG          HUNG"
 palabra$(44) = "TENER         HAVE          HAD           HAD"
 palabra$(45) = "OIR           HEAR          HEARD         HEARD"
 palabra$(46) = "ESCONDER      HIDE          HID           HIDEN"
 palabra$(47) = "GOLPEAR       HIT           HIT           HIT"
 palabra$(48) = "SOSTENER      HOLD          HELD          HELD"
 palabra$(49) = "HERIR         HURT          HURT          HURT"
 palabra$(50) = "MANTENER      KEEP          KEPT          KEPT"
 palabra$(51) = "SABER         KNOW          KNEW          KNOWN"
 palabra$(52) = "PONER         LAY           LAID          LAID"
 palabra$(53) = "LIDERAR       LEAD          LED           LED"
 palabra$(54) = "LLEGAR        LEAVE         LEFT          LEFT"
 palabra$(55) = "PRESTAR       LEND          LENT          LENT"
 palabra$(56) = "PERMITIR      LET           LET           LET"
 palabra$(57) = "TENDERSE      LIE           LAY           LAIN"
 palabra$(58) = "ENCENDER      LIGHT         LIT           LIT"
 palabra$(59) = "PERDER        LOSE          LOST          LOST"
 palabra$(60) = "FABRICAR      MAKE          MADE          MADE"
 palabra$(61) = "SIGNIFICAR    MEAN          MEANT         MEANT"
 palabra$(62) = "PAGAR         PAY           PAID          PAID"
 palabra$(63) = "PONER         PUT           PUT           PUT"
 palabra$(64) = "LEER          READ          READ          READ"
 palabra$(65) = "CABALGAR      RIDE          RODE          RIDDEN"
 palabra$(66) = "SONAR         RING          RANG          RUNG"
 palabra$(67) = "ASCENDER      RISE          ROSE          RISEN"
 palabra$(68) = "CORRER        RUN           RAN           RUN"
 palabra$(69) = "DECIR         SAY           SAID          SAID"
 palabra$(70) = "VER           SEE           SOW           SEEN"
 palabra$(71) = "BUSCAR        SEEK          SOUGHT        SOUGHT"
 palabra$(72) = "VENDER        SELL          SOLD          SOLD"
 palabra$(73) = "ENVIAR        SEND          SENT          SENT"
 palabra$(74) = "PONER         SET           SET           SET"
 palabra$(75) = "COSER         SEW           SEWED         SEWED/SEWN"
 palabra$(76) = "SACUDIR       SHAKE         SHOOK         SHAKEN"
 palabra$(77) = "BRILLAR       SHINE         SHONE         SHONE"
 palabra$(78) = "DISPARAR      SHOOT         SHOT          SHOT"
 palabra$(79) = "ENSEAR       SHOW          SHOWED        SHOWN"
 palabra$(80) = "ENCOGER       SHRINK        SHRANK        SHRUNK"
 palabra$(81) = "CERRAR        SHUT          SHUT          SHUT"
 palabra$(82) = "CANTAR        SING          SANG          SUNG"
 palabra$(83) = "HUNDIR        SINK          SANK          SUNK"
 palabra$(84) = "SENTARSE      SIT           SAT           SAT"
 palabra$(85) = "DORMIR        SLEEP         SLEPT         SLEPT"
 palabra$(86) = "HABLAR        SPEAK         SPOKE         SPOKEN"
 palabra$(87) = "GASTAR        SPEND         SPENT         SPENT"
 palabra$(88) = "DIVIDIR       SPLIT         SPLIT         SPLIT"
 palabra$(89) = "EXTENDER      SPREAD        SPREAD        SPREAD"
 palabra$(90) = "SALTAR        SPRING        SPRANG        SPRUNG"
 palabra$(91) = "DE PIE        STAND         STOOD         STOOD"
 palabra$(92) = "ROBAR         STEAL         STOLE         STOLEN"
 palabra$(93) = "PEGAR         STICK         STUCK         STUCK"
 palabra$(94) = "PICAR         STING         STUNG         STUNG"
 palabra$(95) = "OLER MAL      STINK         STANK         STUNK"
 palabra$(96) = "GOLPEAR       STRIKE        STRUCK        STRUCK"
 palabra$(97) = "JURAR         SWEAR         SWORE         SWORN"
 palabra$(98) = "BARRER        SWEEP         SWEPT         SWEPT"
 palabra$(99) = "NADAR         SWIM          SWAM          SWUM"
palabra$(100) = "MECER         SWING         SWUNG         SWUNG"
palabra$(101) = "TOMAR         TAKE          TOOK          TAKEN"
palabra$(102) = "ENSEAR       TEACH         TAUGHT        TAUGHT"
palabra$(103) = "RASGAR        TEAR          TORE          TORN"
palabra$(104) = "DECIR         TELL          TOLD          TOLD"
palabra$(105) = "PENSAR        THINK         THOUGHT       THOUGHT"
palabra$(106) = "TIRAR         THROW         THREW         THROWN"
palabra$(107) = "COMPRENDER    UNDERSTAND    UNDERSTOOD    UNDERSTOOD"
palabra$(108) = "DESPERTAR     WAKE          WOKE          WOKEN"
palabra$(109) = "LLEVAR        WEAR          WORE          WORN"
palabra$(110) = "GANAR         WIN           WON           WON"
palabra$(111) = "ESCRIBIR      WRITE         WROTE         WRITTEN"



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 " IRREGULARES"
LOCATE 9, 13: PRINT " EN INGLS"

COLOR 0
LOCATE 7, 50: PRINT "Ŀ"
LOCATE 8, 50: PRINT " Pregunta N    "
LOCATE 9, 50: PRINT ""
LOCATE 11, 15: PRINT "      Ŀ"
LOCATE 12, 15: PRINT "            TRADUCCIN                     "
LOCATE 13, 15: PRINT "      Ĵ"
LOCATE 14, 15: PRINT "            INFINITIVE                     "
LOCATE 15, 15: PRINT "      Ĵ"
LOCATE 16, 15: PRINT "           PAST SIMPLE                     "
LOCATE 17, 15: PRINT "      Ĵ"
LOCATE 18, 15: PRINT "       PAST PARTICIPLE                     "
LOCATE 19, 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 trad$, pre$, pa$, part$, ACLR$, PREGUNTA


ACLR$ = ""

DO
   NUMERO = INT(RND * 108) + 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
SELECT CASE NUMERO
CASE 4
ser = INT(RND * 4) + 1
SELECT CASE ser
  CASE 1: trad$ = "SER": pre$ = "BE": pa$ = "WAS": part$ = "BEEN": ACLR$ = " Traduccin= Palabra +corta ; Pasado= +corta"
  CASE 2: trad$ = "SER": pre$ = "BE": pa$ = "WERE": part$ = "BEEN": ACLR$ = " Traduccin= Palabra +corta ; Pasado= +larga"
  CASE 3: trad$ = "ESTAR": pre$ = "BE": pa$ = "WAS": part$ = "BEEN": ACLR$ = " Traduccin= Palabra +larga ; Pasado= +corta"
  CASE 4: trad$ = "ESTAR": pre$ = "BE": pa$ = "WERE": part$ = "BEEN": ACLR$ = " Traduccin= Palabra +larga ; Pasado= +larga"
END SELECT
  CASE 5: trad$ = "GOLPEAR": pre$ = "BEAT": pa$ = "BEAT": part$ = "BEATEN": ACLR$ = "1La primera vez que aparece en la lista"
 CASE 47: trad$ = "GOLPEAR": pre$ = "HIT": pa$ = "HIT": part$ = "HIT": ACLR$ = "1La segunda vez que aparece en la lista"
 CASE 96: trad$ = "GOLPEAR": pre$ = "STRIKE": pa$ = "STRUCK": part$ = "STRUCK": ACLR$ = "1La ltima vez que aparece en la lista"
 
 CASE 79: trad$ = "ENSEAR": pre$ = "SHOW": pa$ = "SHOWED": part$ = "SHOWN": ACLR$ = "1Mostrar"
CASE 102: trad$ = "ENSEAR": pre$ = "TEACH": pa$ = "TAUGHT": part$ = "TAUGHT": ACLR$ = "1Ensear cosas para aprenderlas"


 CASE 52: trad$ = "PONER": pre$ = "LAY": pa$ = "LAID": part$ = "LAID": ACLR$ = "1Los tres tiempos no son iguales"
 CASE 63: trad$ = "PONER": pre$ = "PUT": pa$ = "PUT": part$ = "PUT": ACLR$ = "1Poner un objeto en algun sitio"
 CASE 74: trad$ = "PONER": pre$ = "SET": pa$ = "SET": part$ = "SET": ACLR$ = "1Poner en hora un reloj"


 CASE 75: trad$ = "COSER": pre$ = "SEW": pa$ = "SEWED": part$ = "SEWN": ACLR$ = " Forma irregular del participio"

 CASE 69: trad$ = "DECIR": pre$ = "SAY": pa$ = "SAID": part$ = "SAID": ACLR$ = "1Tres formas tienen distinto nmero de letras"
CASE 104: trad$ = "DECIR": pre$ = "TELL": pa$ = "TOLD": part$ = "TOLD": ACLR$ = "1Tres formas tienen igual nmero de letras"

 CASE ELSE

 trad$ = (MID$(palabra$(NUMERO), 1, 14))
 DO
  trad$ = MID$(trad$, 1, (LEN(trad$) - 1))
 LOOP UNTIL MID$(trad$, (LEN(trad$)), 1) <> " "

 pre$ = (MID$(palabra$(NUMERO), 15, 14))
 DO
  pre$ = MID$(pre$, 1, (LEN(pre$) - 1))
 LOOP UNTIL MID$(pre$, (LEN(pre$)), 1) <> " "

 pa$ = (MID$(palabra$(NUMERO), 29, 14))
 DO
  pa$ = MID$(pa$, 1, (LEN(pa$) - 1))
 LOOP UNTIL MID$(pa$, (LEN(pa$)), 1) <> " "

 part$ = (MID$(palabra$(NUMERO), 43, 14))

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 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 " Agosto de 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 cuatro campos para cada verbo:"
LOCATE 11, 20: PRINT "Traduccin, Infinitivo, Pasado y participio."
LOCATE 12, 15: PRINT "El programa propone uno y hay que completar los dems."
LOCATE 14, 15: PRINT "Hay 25 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, 15: PRINT "Ver las aclaraciones en la lnea inferior."

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 IRREGULARES EN INGLS          "
LOCATE 7, 12: COLOR 15, 0:  PRINT "  Traduccin    Infinitive    P. Simple    P. Participle  "

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 > 100 THEN : n = 100
   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 IRREGULARES 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 / 111) * 12) + 9
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

