home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / t / turkish1.zip / TEACHER.BAS < prev    next >
BASIC Source File  |  1991-09-10  |  9KB  |  345 lines

  1. ' Code by Turgut Kalfaoglu 
  2. ' Elementary Turkish Teacher with incomplete lessons.
  3. ' If you like this program, PLEASE send $20 to:
  4. '    Turgut Kalfaoglu
  5. '    1378 Sok, 8/10
  6. '    Alsancak, Izmir
  7.  
  8. REM $INCLUDE: 'bsedospc.bi'
  9. DEFINT A-Z
  10. DECLARE SUB GRABKEY (V$)
  11. declare sub os2sound(freq,dur)
  12.  
  13. 100     OPTION BASE 1
  14.     DIM TURK$(500), ENG$(500), FOUND%(500), SCR(2000)
  15. 110      CLS
  16.     RANDOMIZE TIMER
  17.     COLOR 3
  18.         PRINT "                   Turkish Tutor Version 0.9"
  19.     PRINT "                 A program by Turgut Kalfaoglu"
  20.     PRINT "                 1378 Sok. 8/10, Izmir, Turkey"
  21.     PRINT
  22.     PRINT "Special Key assignments: See bottom of screen."
  23.     KEY ON
  24.     KEY 1, CHR$(153)
  25.     KEY 2, CHR$(154)
  26.     KEY 3, CHR$(143)
  27.     KEY 4, CHR$(128)
  28.     KEY 5, CHR$(36)
  29.     PRINT
  30.     COLOR 9
  31.     PRINT "Choose lesson number(s) -separated by commas&dashes- to begin:"
  32.     PRINT
  33.     COLOR 4
  34.         CLOSE 1
  35.     OPEN "TEACHER.DAT" FOR RANDOM AS 1 LEN = 34
  36.     FIELD #1, 2 AS LES.NO$, 16 AS WORD$, 16 AS CORR$
  37.     PR$ = ""
  38.     WHILE NOT EOF(1)
  39.         GET #1
  40.         IF VAL(LES.NO$) <> 0 THEN
  41.             IF INSTR(PR$, "\" + (LES.NO$) + "\") = 0 THEN PRINT LES.NO$, : PR$ = PR$ + "\" + LES.NO$ + "\"
  42.         END IF
  43.     WEND
  44.     COLOR 3
  45. ASK.AGAIN:
  46.     LOCATE 20, 1, 1
  47.     PRINT "Other commands:"
  48.     PRINT
  49.         COLOR 31: PRINT "A"; : COLOR 11: PRINT "dd words,lessons  ";
  50.         COLOR 31: PRINT "S"; : COLOR 11: PRINT "earch definition  ";
  51.         COLOR 31: PRINT "H"; : COLOR 11: PRINT "elp  ";
  52.         COLOR 31: PRINT "Q"; : COLOR 11: PRINT "uit   ";
  53. t$ = ""
  54. AG:
  55.     CALL GRABKEY(Q$)
  56.     PRINT Q$;
  57.     IF (Q$ >= "0" AND Q$ <= "9") OR (Q$ = ",") OR Q$ = "-" THEN t$ = t$ + Q$: GOTO AG
  58.     A$ = t$
  59.     IF Q$ = "A" THEN GOSUB ADD: CLOSE : GOTO 100
  60.     IF Q$ = "S" THEN GOSUB SEARCH: CLOSE : GOTO 100
  61.     IF Q$ = "Q" THEN CLOSE : PRINT : LOCATE 24, 1: PRINT "Hope you had fun!": END
  62.     IF VAL(A$) = 0 THEN t$ = "": GOSUB EXPLAIN: GOTO 110
  63.  
  64.         WHILE (INSTR(A$, "-"))  'resolving dashes
  65.     I = INSTR(A$, "-")
  66.     IF t > 0 THEN
  67.         L$ = LEFT$(A$, I - 1)
  68.         r$ = MID$(A$, I + 1)
  69.         FROM$ = ""
  70.         FOR t = LEN(L$) TO 1 STEP -1
  71.         t$ = MID$(L$, t, 1)
  72.         IF t$ < "0" OR t$ > "9" THEN EXIT FOR
  73.         FROM$ = t$ + FROM$
  74.         NEXT
  75.         FROM = VAL(FROM$)
  76.         L$ = LEFT$(L$, t)
  77.  
  78.         FOR t = 1 TO LEN(r$)
  79.         t$ = MID$(r$, t, 1)
  80.         IF t$ < "0" OR t$ > "9" THEN EXIT FOR
  81.         NEXT
  82.         till = VAL(LEFT$(r$, t - 1))
  83.         r$ = MID$(r$, t)
  84.  
  85.         IF till < FROM THEN SWAP till, FROM
  86.         n$ = ""
  87.         FOR t = FROM TO till
  88.         n$ = n$ + "," + MID$(STR$(t), 2)
  89.         NEXT
  90.         n$ = MID$(n$, 2)
  91.         A$ = L$ + n$ + r$
  92.     END IF 'does - exist here?
  93.     WEND
  94.  
  95.         A$ = "," + A$ + ","
  96.     GET #1, 1
  97.     I = 1
  98.         COLOR 7
  99.     WHILE NOT EOF(1) AND I < 501
  100.            GET #1 'read a record
  101.            t$ = "," + RTRIM$(LES.NO$) + ","
  102.        IF INSTR(A$, t$) > 0 THEN
  103.             LOCATE 24, 1
  104.             PRINT "Loading lesson #"; LES.NO$; "                    ";
  105.             TURK$(I) = WORD$
  106.             ENG$(I) = CORR$ + LES.NO$
  107.             FOUND%(I) = 0
  108.             I = I + 1
  109.        END IF
  110.     WEND
  111.         COLOR 9
  112.     TOTAL.WORDS = I - 1
  113.     IF TOTAL.WORDS = 0 THEN 100
  114. WORDS:
  115.     COLOR 9
  116.     QUEST = QUEST + 1
  117.  CLS
  118.     RN = INT(RND * 2) + 1
  119.     PRINT "What does this word mean in ";
  120.     IF RN = 2 THEN PRINT "Turkish?";  ELSE PRINT "English?";
  121.  
  122.     DONE = 0
  123.     COUNTER = 0
  124.  
  125.     WHILE COUNTER < 100 AND NOT DONE
  126.             Q = INT(RND * TOTAL.WORDS) + 1
  127.             IF FOUND%(Q) = 0 THEN DONE = -1
  128.             COUNTER = COUNTER + 1
  129.     WEND
  130.  
  131.     FROM.LESSON = VAL(MID$(ENG$(Q), 17))
  132.     TMP$ = ENG$(Q)
  133.     ENG$(Q) = LEFT$(ENG$(Q), 16)
  134.  
  135.     IF FROM.LESSON > 0 THEN PRINT "  ( from lesson"; FROM.LESSON; " )" ELSE PRINT
  136.         IF RN = 1 THEN
  137.             ASKFOR$ = TURK$(Q)
  138.             ANSWER$ = ENG$(Q)
  139.         ELSE
  140.             ASKFOR$ = ENG$(Q)
  141.             ANSWER$ = TURK$(Q)
  142.         END IF
  143.  
  144.         LOCATE 10, 25
  145.         COLOR 5
  146.         PRINT ASKFOR$
  147.         t = INSTR(ANSWER$, "  ")
  148.         IF t > 0 THEN ANS$ = LEFT$(ANSWER$, t - 1) ELSE ANS$ = ANSWER$
  149.         FAUL = 0
  150. AGAIN:  LOCATE 12, 25
  151.         PRINT SPACE$(40);
  152.         LOCATE , 25
  153.         COLOR 7
  154.                 INPUT "", GUESS$
  155.         GUESS$ = UCASE$(GUESS$)
  156.         COLOR 9
  157.         G = LEN(GUESS$)
  158.         IF G = 0 THEN FAUL = 5
  159.         IF ANS$ <> GUESS$ THEN
  160.                 IF INSTR(ANS$, GUESS$ + "/") > 0 AND LEN(GUESS$) > 1 THEN GOTO NEWPAT
  161.                 IF INSTR(ANS$, "/" + GUESS$) > 0 AND LEN(GUESS$) > 1 THEN GOTO NEWPAT
  162.                 FAUL = FAUL + 1
  163.                 IF FAUL < 3 THEN
  164.                     LOCATE 24, 1
  165.                     COLOR 31
  166.                     PRINT "Try again!";
  167.                                         OS2SOUND 40, 40
  168.                     COLOR 9
  169.                     GOTO AGAIN
  170.                 ELSE
  171.                     LOCATE 24, 1
  172.                     COLOR 6
  173.                     PRINT "The word was:";
  174.                     FOR KK = 80 TO 40 STEP -20
  175.                                                 OS2SOUND KK, 40
  176.                     NEXT KK
  177.                     LOCATE 11, 27
  178.                     PRINT "is";
  179.                     LOCATE 12, 25
  180.                     COLOR 7
  181.                     PRINT ANS$; SPACE$(30);
  182.                     COLOR 9
  183.                     CALL GRABKEY(Q$)
  184.                 END IF
  185.         ELSE
  186. NEWPAT:         LOCATE 12, 25
  187.                 COLOR 7, 0
  188.                 PRINT ANS$; SPACE$(30);
  189.                 LOCATE 24, 1
  190.                 COLOR 31
  191.                 PRINT "Correct!  ";
  192.                 FOR KK = 1 TO 2
  193.                                         OS2SOUND 2500, 40
  194.                                         OS2SOUND 40, 40
  195.                 NEXT
  196.                 COLOR 9
  197.                 SCORE = SCORE + 1
  198.                 IF GEN < 5 THEN sleep 1
  199.                 FOUND%(Q) = FOUND%(Q) + 1
  200.         END IF
  201.         
  202.         ENG$(Q) = TMP$
  203.         LOCATE 20, 1
  204.         COLOR 3
  205.         IF GEN < 5 THEN GEN = GEN + 1: GOTO WORDS
  206.         PRINT "More words? "
  207.         GEN = 0
  208.         COLOR 9
  209. AGAINST:
  210.         CALL GRABKEY(Q$)
  211.         IF Q$ = "Y" OR Q$ = "y" THEN GOTO WORDS
  212.         IF Q$ <> "N" AND Q$ <> "n" THEN GOTO AGAINST
  213.                 FOR I = 0 TO 5
  214.             PRINT
  215.         NEXT
  216.         PRINT
  217.         COLOR 2
  218.         PRINT "Your score after "; QUEST; " questions is:"
  219.         PRINT
  220.         COLOR 12
  221.         SLEEP 2
  222.         GRADE = SCORE / QUEST * 100
  223.  
  224.                 IF GRADE > 89 THEN L$ = "A" ELSE IF GRADE > 79 THEN L$ = "B" ELSE IF GRADE > 69 THEN L$ = "C" ELSE IF GRADE > 59 THEN L$ = "D" ELSE L$ = "F"
  225.  
  226.         L$ = "(" + L$ + ")"
  227.         PRINT USING "###.##\              \ \ \"; GRADE; "% correct"; L$
  228.         CALL GRABKEY(Q$)
  229.         CLOSE : GOTO 100
  230. ADD:
  231.     CLS
  232.     PRINT
  233.     COLOR 3
  234.     PRINT "Locating free space..";
  235.     GET #1, 1
  236.     I = 1
  237.     WHILE NOT EOF(1)
  238.         GET #1, I
  239.         I = I + 1
  240.     WEND
  241.     I = I - 1
  242.     LOCATE , 1
  243.     PRINT SPACE$(70);
  244.     PRINT
  245.     PRINT "Enter lesson number to be entered: ";
  246.     INPUT LN
  247.     IF LN < 1 THEN RETURN
  248.     LSET LES.NO$ = MID$(STR$(LN), 2)
  249.     DONE = 0
  250.     WHILE NOT DONE
  251.           CLS
  252.           PRINT "Lesson number:"; LES.NO$
  253.           PRINT
  254.           PRINT "Enter word in Turkish, or blank return to save and exit."
  255.           INPUT W$
  256.                   w$=ucase$(w$)
  257.           IF W$ = "" THEN DONE = -1
  258.           IF NOT DONE THEN
  259.                 LSET WORD$ = W$
  260.                 PRINT "Enter the corresponding English word for "; W$
  261.                 INPUT W$
  262.                                 w$=ucase$(w$)
  263.                 LSET CORR$ = W$
  264.                 PUT #1, I
  265.                 I = I + 1
  266.           END IF
  267.     WEND
  268.     RETURN
  269.  
  270. SEARCH:
  271.     CLS
  272.     LOCATE 5, 1
  273.     TITLE = 0
  274.     PRINT "Enter word to be searched, or blank RETURN to get back."
  275.     LOCATE 12, 25
  276.     COLOR 7
  277.     INPUT W$
  278.         w$=ucase$(w$)
  279.     COLOR 3
  280.     W = LEN(W$)
  281.     IF W$ > "" THEN
  282.         GET #1, 1
  283.         WHILE NOT EOF(1)
  284.             IF INSTR(WORD$, W$) > 0 THEN GOSUB ECHO
  285.             IF INSTR(CORR$, W$) > 0 THEN GOSUB ECHO
  286.             IF INSTR(LES.NO$, W$) > 0 THEN GOSUB ECHO
  287.             GET #1
  288.         WEND
  289.         GET #1, 1
  290.         PRINT "Search complete. Hit any key"
  291.         CALL GRABKEY(Q$)
  292.     END IF
  293.     RETURN
  294.  
  295. ECHO:
  296.     IF TITLE = 0 THEN PRINT "Lesson #", "Turkish        ", "English      ": TITLE = -1
  297.     PRINT LES.NO$, WORD$, CORR$
  298.     RETURN
  299.  
  300.  
  301. EXPLAIN:
  302.     CLS
  303.     RESTORE INFO
  304.     READ Q$
  305.     IZ = 1
  306.     WHILE Q$ <> "*"
  307.         IZ = IZ + 1
  308.         LOCATE LROW + IZ, LCOL + (70 - LEN(Q$)) / 2
  309.         PRINT Q$;
  310.         READ Q$
  311.     WEND
  312.  
  313.     CALL GRABKEY(Q$)
  314.     RETURN
  315. INFO:
  316.     DATA "User-Supported Software"," "
  317.     DATA "Instructions:"
  318.     DATA "This program has a rather large dictionary that contains both"
  319.     DATA "Turkish and English equivalents of every word. You may choose"
  320.     DATA "to be drilled on one or more chapters. If you wish to be quizzed"
  321.     DATA "on just one chapter, enter the number of the chapter, then hit"
  322.     DATA "SPACE BAR to begin. If you wish to combine several chapters into"
  323.     DATA "the quiz, then separate the chapter numbers by commas or dashes."
  324.     DATA "The program will keep asking the questions that you missed"
  325.         DATA "previously, mixing them with the unasked questions."
  326.     DATA "(A)dd option allows you to enter new words, even chapters."
  327.     DATA "(S)earch provides a quick look-up for unknown words."
  328.     DATA " ","If you like this program please send $20 to the address"
  329.         DATA "shown on the title screen. Thank you for supporting shareware!"
  330.     DATA "*"
  331.  
  332. SUB GRABKEY (V$) STATIC
  333.     V$ = ""
  334.     LOCATE , , 1,1,30
  335.     WHILE V$ = ""
  336.         V$ = INKEY$
  337.     WEND
  338.     V$ = UCASE$(V$)
  339.     END SUB
  340.  
  341.  
  342. sub OS2SOUND(FREQ,DUR) STATIC
  343.         x = DOSBEEP(FREQ,DUR)
  344.         END SUB
  345.