home *** CD-ROM | disk | FTP | other *** search
/ M.u.C.S. Disc 2000 / MUCS2000.iso / anwend / 10finger / 10f_men1.lst next >
File List  |  1994-09-22  |  27KB  |  907 lines

  1. Datum$="26.09.1987"
  2. Cls
  3. Anfang=Timer
  4. Stufe=0
  5. Tippzahl=0
  6. Dim A$(150),X1(150),X2(150),Y1(150),Y2(150)
  7. Dim Stufe(150),Art$(150),Shift(150),Finger(150)
  8. Dim Kleinkon$(50),Grosskon$(50),Zeich$(50),Vok$(50)
  9. Dim Finger$(9),Pfeil_x(9),Pfeil_y(9)
  10. Dim Spielzeichen$(29)
  11. Dim Menue$(50)
  12. For I=0 To 50
  13.   Read Menue$(I)
  14.   Exit If Menue$(I)="***"
  15. Next I
  16. Data  Desk  ,  Info
  17. Data --------------------
  18. Data 1,2,3,4,5,6,""
  19. Data  Programm,  Erklärung,  Stufe wählen,  Statistik,  Musik,-------------------,  Programmende,""
  20. Data Übung, Einführung, Übungstext,------------------, Spiel
  21. Data ,,***
  22. Gosub Bildbau
  23. Deftext 1,16,0,32
  24. Text 125,90,"Zehn-Finger-Lehrgang"
  25. Deftext 1,0,0,4
  26. Text 40,370,"programmiert in GfA-BASIC von Heiko Müller, Mozartstra₧e 17, 2905 Edewecht"
  27. Text 40,380,"Version vom "+Datum$
  28. Gosub Speicher_einlesen
  29. Menu Menue$()
  30. Print At(58,1);"Schwierigkeitsstufe ";Stufe
  31. On Menu  Gosub Menue
  32. Do
  33.   On Menu
  34. Loop
  35. Procedure Menue
  36.   If Menue$(Menu(0))="  Info"
  37.     Al$="1 0 F I N G E R . P R G   |          "+Chr$(189)+" 1987|"
  38.     Al$=Al$+"            by |       Heiko Müller|"
  39.     Alert 0,Al$,1," Aha ",Dummy
  40.   Endif
  41.   If Menue$(Menu(0))="  Stufe wählen"
  42.     Gosub Stufe_eingeben
  43.   Endif
  44.   If Menue$(Menu(0))="  Erklärung"
  45.     Gosub Erklaerung
  46.   Endif
  47.   If Menue$(Menu(0))="  Statistik"
  48.     Gosub Statistik
  49.   Endif
  50.   If Menue$(Menu(0))="  Musik"
  51.     Gosub Musik
  52.   Endif
  53.   If Menue$(Menu(0))="  Programmende"
  54.     Alert 2,"Soll das Programm|wirklich beendet werden?",2,"  Ja  | Nein ",Antw
  55.     If Antw=1
  56.       Edit
  57.     Endif
  58.   Endif
  59.   If Menue$(Menu(0))=" Einführung"
  60.     If Stufe<9
  61.       Gosub Einfuehrung
  62.     Else
  63.       Gosub Erklaerung3
  64.     Endif
  65.   Endif
  66.   If Menue$(Menu(0))=" Übungstext"
  67.     If Stufe<9
  68.       Gosub Ueben
  69.     Else
  70.       Gosub Text_abschreiben
  71.     Endif
  72.   Endif
  73.   If Menue$(Menu(0))=" Spiel"
  74.     @Tippen
  75.   Endif
  76.   Menu Menue$()
  77.   Menu 14,-Musik
  78.   Print At(58,1);"Schwierigkeitsstufe ";Stufe
  79.   Menu Off
  80. Return
  81. Procedure Erklaerung
  82.   Cls
  83.   Print
  84.   Print "  Unter dem dem Menüpunkt >>Stufe wählen<< kannst Du die Schwierigkeits-"
  85.   Print "  stufe verändern. Die Buchstaben, die bei der gewählten Stufe geübt werden"
  86.   Print "  sollen, sind schwarz unterlegt."
  87.   Print
  88.   Print "  Die Auswahl kannst Du treffen, indem Du einfach auf die Zahlentaste mit"
  89.   Print "  der gewünschten Stufe tippst. Es ist auch möglich, die Stufe mit der Maus"
  90.   Print "  oder den Pfeiltasten zu bestimmen. Wenn Du Deine Wahl getroffen hast,"
  91.   Print "  tippst Du auf die Taste [Return] oder klickst das Return-Feld mit der Maus"
  92.   Print "  an."
  93.   Print
  94.   Print "  Wenn Du eine neue Schwierigkeitsstufe gewählt hast, kannst Du Dir auf"
  95.   Print "  dem Monitor zeigen lassen, welche Taste mit welchem Finger getippt wird."
  96.   Print "  Wähle dazu >>Erklärung<< aus dem Menü aus. Wenn Du meinst, da₧ Du die"
  97.   Print "  Tasten gut genug finden kannst, wählst Du dann den >>Übungstext<<."
  98.   Print
  99.   Print "  Regle bitte die Lautstärke so, da₧ Du den Tastenanschlag hören kannst."
  100.   Print "  (am besten gleich mit irgendeiner Taste ausprobieren)"
  101.   Print
  102.   Print "  Mit [Esc] geht's zurück zum Menü";
  103.   Repeat
  104.   Until Asc(Inkey$)=27
  105.   Cls
  106. Return
  107. Procedure Uebungsstring_erstellen
  108.   Ueb$=""
  109.   Repeat
  110.     Wort$=""
  111.     If Stufe>6
  112.       Wort$=Str$(Random(100))+" "
  113.     Endif
  114.     If Stufe>5
  115.       Wort$=Wort$+Grosskon$(Random(Gko))
  116.     Else
  117.       Wort$=Wort$+Kleinkon$(Random(Kko))
  118.     Endif
  119.     Wort$=Wort$+Vok$(Random(Vo))
  120.     Wort$=Wort$+Kleinkon$(Random(Kko))
  121.     Wort$=Wort$+Vok$(Random(Vo))
  122.     Wort$=Wort$+Kleinkon$(Random(Kko))
  123.     Wort$=Wort$+Vok$(Random(Vo))
  124.     If Stufe>4
  125.       Wort$=Wort$+Kleinkon$(Random(Kko))
  126.       Wort$=Wort$+Zeich$(Random(Ze))
  127.     Endif
  128.     If Left$(Wort$,1)<>" "
  129.       Wort$=Wort$+" "
  130.     Endif
  131.     Ueb$=Ueb$+Wort$
  132.   Until Len(Ueb$)>65
  133.   Ueb$=Left$(Ueb$,65)
  134. Return
  135. Procedure Ueben
  136.   Repeat
  137.     Gosub Uebungsstring_erstellen
  138.     Tippanfang=Timer
  139.     L=Len(Ueb$)
  140.     If Right$(Ueb$,1)=" "
  141.       Dec L
  142.     Endif
  143.     Fehler=0
  144.     Cls
  145.     Print At(8,3);"Schwierigkeitsstufe ";Stufe
  146.     Print At(8,7);"Übungstext bitte abschreiben:"
  147.     Print At(8,20);"[Esc] = Abbruch"
  148.     Rbox 40,120,600,220
  149.     Print Chr$(27);"e"            ! Cursor einschalten
  150.     Print At(8,10);Ueb$
  151.     Print At(8,12);
  152.     For S=1 To L
  153.       Inc Tippzahl
  154.       X$=Mid$(Ueb$,S,1)
  155.       Wiederholung=0
  156.       Repeat
  157.         Repeat
  158.           A$=Inkey$
  159.         Until A$>""
  160.         If A$<>X$ And Asc(A$)<>27
  161.           Print Chr$(27);"j";      ! Cursorposition merken
  162.           Print A$;
  163.           Print Chr$(27);"k";      ! an gespeicherte Cursorposition gehen
  164.           Out 2,7
  165.           Inc Fehler
  166.           Inc Wiederholung
  167.           Inc Fehlerzahl
  168.           If Wiederholung>1
  169.             Sget Bild$
  170.             Print Chr$(27);"f";      ! Cursor ausschalten
  171.             Print Chr$(27);"j";      ! Cursorposition merken
  172.             Gosub Hilfe
  173.             Print Chr$(27);"e";      ! Cursor anschalten
  174.             Print Chr$(27);"k";      ! an gespeicherte Cursorposition gehen
  175.             Sput Bild$
  176.           Endif
  177.         Endif
  178.         If Asc(A$)=27 And S<50
  179.           Print " - abgebrochen"
  180.         Endif
  181.         Exit If Asc(A$)=27
  182.       Until A$=X$
  183.       Exit If Asc(A$)=27
  184.       Print X$;
  185.     Next S
  186.     Tippzeit=Tippzeit+Timer-Tippanfang
  187.     If Fehler=0 And Asc(A$)<>27 And Musik=True
  188.       Gosub Dreiklang
  189.     Endif
  190.     Print Chr$(27);"f"                              ! Cursor ausschalten
  191.     Print At(8,7);"                              "
  192.     Print At(8,16);Fehler;" Fehler"
  193.     Print At(8,19);"[Return] = Neuer Übungstext"
  194.     Print At(8,20);"[Esc]    = zurück zum Menü"
  195.     Repeat
  196.       A$=Inkey$
  197.     Until Asc(A$)=13 Or Asc(A$)=27
  198.   Until Asc(A$)=27
  199.   Cls
  200. Return
  201. Procedure Musik
  202.   If Musik=True
  203.     Musik=False
  204.   Else
  205.     Musik=True
  206.     Gosub Dreiklang
  207.     Alert 1,"Wenn Du eine Übungszeile|fehlerfrei abgetippt hast,|hörst Du diesen Dreiklang.",1,"Nun ja",Dummy
  208.   Endif
  209. Return
  210. Procedure Dreiklang
  211.   Sound 1,15,1,4,4
  212.   Sound 1,15,5,4,5
  213.   Sound 1,15,8,4,5
  214.   For S=15 Downto 0
  215.     Sound 1,S,1,5,5
  216.   Next S
  217. Return
  218. Procedure Bildbau
  219.   For S=0 To 8
  220.     Read Finger$(S),Pfeil_x(S),Pfeil_y(S)
  221.   Next S
  222.   Deftext 1,0,0,13
  223.   S=0
  224.   Do
  225.     Inc S
  226.     Read A$(S),X1(S),X2(S),Y1(S),Y2(S)
  227.     Read Stufe(S),Art$(S),Shift(S),Finger(S)
  228.     Exit If A$(S)="grossende"
  229.     Box X1(S),Y1(S),X2(S),Y2(S)
  230.     Text X1(S)+5,Y1(S)+15,A$(S)
  231.   Loop
  232.   Color 0
  233.   Line 576,210,624,210     ! Unterteilung in Returntaste löschen
  234.   Color 1
  235.   Dec S
  236.   Do
  237.     Inc S
  238.     Read A$(S),X1(S),X2(S),Y1(S),Y2(S)
  239.     Read Stufe(S),Art$(S),Shift(S),Finger(S)
  240.     Exit If A$(S)="ende"
  241.     Box X1(S),Y1(S),X2(S),Y2(S)
  242.     If Len(A$(S))<2
  243.       Text X1(S)+5,Y1(S)+30,A$(S)
  244.     Endif
  245.   Loop
  246.   Sget Tastbild$
  247.   Get 515,290,585,330,Capslock$
  248.   For S=1 To 29
  249.     Read Spielzeichen$(S)
  250.   Next S
  251. Return
  252. Procedure Speicher_einlesen
  253.   S=-1
  254.   Vo=-1
  255.   Kko=-1
  256.   Gko=-1
  257.   Ze=-1
  258.   Do
  259.     Inc S
  260.     If Stufe(S)<=Stufe
  261.       If Art$(S)="vo" And Not Shift(S)
  262.         Inc Vo
  263.         Vok$(Vo)=A$(S)
  264.       Endif
  265.       If Art$(S)="ko" And Shift(S)
  266.         Inc Gko
  267.         Grosskon$(Gko)=A$(S)
  268.       Endif
  269.       If Art$(S)="ko" And Not Shift(S)
  270.         Inc Kko
  271.         Kleinkon$(Kko)=A$(S)
  272.       Endif
  273.       If Art$(S)="ze"
  274.         Inc Ze
  275.         Zeich$(Ze)=A$(S)
  276.       Endif
  277.     Endif
  278.     Exit If A$(S)="ende"
  279.   Loop
  280.   Inc Vo
  281.   Inc Gko
  282.   Inc Kko
  283.   Inc Ze
  284. Return
  285. Procedure Hilfe
  286.   Defline 1,5,0,1
  287.   Sput Tastbild$
  288.   If Stufe=6
  289.     Print At(5,3);"Die Shift-Tasten werden mit den kleinen Fingern gehalten."
  290.   Endif
  291.   If Stufe=0
  292.     Print At(5,2);"Das Zeichen, das oben eingerahmt ist, soll getippt werden. Sieh"
  293.     Print At(5,3);"dabei möglichst wenig auf das Tastenbild unten auf dem Bildschirm!"
  294.   Endif
  295.   If Einfuehrung
  296.     Print At(5,24);"Einführung in Stufe ";Stufe;
  297.     Print At(63,24);"[Esc] = Abbruch";
  298.   Endif
  299.   Deftext 1,0,0,32
  300.   Text 300,100,X$
  301.   Rbox 290,65,325,110
  302.   Graphmode 3
  303.   Such=0
  304.   Repeat
  305.     Inc Such
  306.   Until A$(Such)=X$
  307.   Deffill 0,2,8
  308.   Pbox X1(Such),Y1(Such),X2(Such),Y2(Such)
  309.   F=Finger(Such)
  310.   If Shift(Such)
  311.     If F<5
  312.       Pbox 535,250,605,290
  313.     Else
  314.       Pbox 35,250,95,290
  315.     Endif
  316.   Endif
  317.   Deffill 1,1,1
  318.   If Pfeil_x(F)<>X1(Such) Or Pfeil_y(F)<>Y1(Such)
  319.     Line Pfeil_x(F)+20,Pfeil_y(F)+20,X1(Such)+20,Y1(Such)+20
  320.   Endif
  321.   Graphmode 1
  322.   Deftext 1,16,0,13
  323.   Text 450+400*(F<5),80,Finger$(F)
  324.   Capslock:
  325.   Cl=Bios(11,-1) And 16
  326.   If Cl=16
  327.     Graphmode 3
  328.     Deffill 1,2,1
  329.     Pbox 516,291,584,329
  330.   Else
  331.     Put 515,290,Capslock$
  332.   Endif
  333.   Graphmode 1
  334.   Capslock=False
  335.   Daneben=0
  336.   Repeat
  337.     Repeat
  338.       A$=Inkey$
  339.       Clo=Bios(11,-1) And 16
  340.       If Clo<>Cl
  341.         Capslock=True
  342.       Endif
  343.       Exit If Capslock
  344.     Until A$>""
  345.     Exit If Capslock
  346.     If A$<>X$
  347.       Inc Daneben
  348.       If Daneben>2
  349.         If Cl=16
  350.           Deffill 0,1,1
  351.           Defline 1,5,2,2
  352.           Get 180,150,460,270,Sicher$
  353.           Pbox 180,150,460,270
  354.           Box 185,155,455,265
  355.           Print At(25,12);" Du hast mit der Taste CapsLock "
  356.           Print At(25,13);" auf Gro₧schreibung umgestellt! "
  357.           Print At(25,14);"                                "
  358.           Print At(25,15);"     Bitte zurückschalten!      ";
  359.           Repeat
  360.             Clo=Bios(11,-1) And 16
  361.           Until Clo=0
  362.           Put 180,150,Sicher$
  363.           Daneben=0
  364.         Endif
  365.       Endif
  366.     Endif
  367.   Until A$=X$ Or Asc(A$)=27
  368.   Defline 1,1,0,0
  369.   If Capslock
  370.     Goto Capslock
  371.   Endif
  372. Return
  373. Procedure Stufe_eingeben
  374.   Repeat
  375.     Cls
  376.     If Stufenwahl$=""
  377.       Deftext 1,0,0,13
  378.       Print At(6,2);"Bitte Schwierigkeitsstufe auswählen, dann [Return]"
  379.       Print At(6,5);"0     A S D F J K L Ö                 Anfänger"
  380.       Print At(6,7);"1     Q W E R U I O P"
  381.       Print At(6,9);"2     G H T Z"
  382.       Print At(6,11);"3     V B N M"
  383.       Print At(6,13);"4     Y X C , . -"
  384.       Print At(6,15);"5     Ä Ü ₧"
  385.       Print At(6,17);"6     ! ? ; : _ und Gro₧schreibung"
  386.       Print At(6,19);"7     1 2 3 4 5 6 7 8 9 0 + * < >"
  387.       Print At(6,21);"8     ";Chr$(34);" ▌ $ % & / ( ) = ' ` # ^       Profi"
  388.       Print At(6,23);"9     gedruckte Texte abschreiben"
  389.       Print At(63,5);"Return"
  390.       Graphmode 1
  391.       For S=1 To 10
  392.         Box 32,23+S*32,320,55+S*32
  393.       Next S
  394.       Line 64,55,64,375
  395.       Box 480,55,560,87
  396.       For S=0 To 6
  397.         Text 360,110+S*32,""
  398.       Next S
  399.       Sget Stufenwahl$
  400.     Else
  401.       Sput Stufenwahl$
  402.     Endif
  403.     Deffill 1,1,1
  404.     Graphmode 3
  405.     Pbox 32,55,320,87+Stufe*32
  406.     Do
  407.       Mouse X,Y,K
  408.       A$=Inkey$
  409.       Exit If K=1 Or Asc(A$)=13
  410.       Exit If Asc(A$)>47 And Asc(A$)<58
  411.       Exit If Len(A$)=2 And (Right$(A$)="H" Or Right$(A$)="P")
  412.     Loop
  413.     Exit If Asc(A$)=13
  414.     Repeat
  415.     Until Mousek=0
  416.     If Asc(A$)>47 And Asc(A$)<59
  417.       Stufe=Val(A$)
  418.     Endif
  419.     If K=1 And X>32 And X<320 And Y>55 And Y<375
  420.       Stufe=Int((Y-23)/32)-1
  421.     Endif
  422.     If Right$(A$)="H" And Stufe>0
  423.       Dec Stufe
  424.     Endif
  425.     If Right$(A$)="P" And Stufe<9
  426.       Inc Stufe
  427.     Endif
  428.   Until X>480 And X<560 And Y>55 And Y<87
  429.   Cls
  430.   Graphmode 1
  431.   Gosub Speicher_einlesen
  432. Return
  433. Procedure Einfuehrung
  434.   Einfuehrung=True
  435.   Do
  436.     Restore Einfuehrung
  437.     Repeat
  438.       Repeat
  439.         Read S,Ueb$
  440.       Until S=Stufe Or S=9
  441.       If S<9
  442.         For S=1 To Len(Ueb$)
  443.           X$=Mid$(Ueb$,S,1)
  444.           Gosub Hilfe
  445.           Exit If Asc(A$)=27
  446.         Next S
  447.       Endif
  448.     Until Asc(A$)=27 Or S=9
  449.     Exit If Asc(A$)=27
  450.   Loop
  451.   Einfuehrung=False
  452.   Cls
  453.   Pause 20
  454. Return
  455. Procedure Aufhoeren
  456.   Alert 2," Soll das Programm | wirklich beendet werden? ",2,"  ja  | nein ",Antw
  457.   If Antw=1
  458.     End
  459.   Endif
  460. Return
  461. Procedure Statistik
  462.   Uebzeit=Int((Timer-Anfang)/200)
  463.   Stunden=Int(Uebzeit/3600)
  464.   Minuten=Int(Uebzeit/60)-Stunden*60
  465.   Sekunden=Uebzeit-Stunden*60-Minuten*60
  466.   If Tippzeit>0
  467.     Tippquote=Int(Tippzahl*12000/Tippzeit)
  468.   Endif
  469.   If Tippzahl>0
  470.     Fehlerquote=Int((Fehlerzahl/Tippzahl*100)*10)/10
  471.   Endif
  472.   Cls
  473.   Print At(10,6);"Statistik"
  474.   Print At(10,9);"Du hast jetzt ";
  475.   If Stunden>0
  476.     Print Stunden;" Stunden, ";
  477.   Endif
  478.   If Minuten>0 Or Stunden>0
  479.     Print Minuten;" Minuten und ";
  480.   Endif
  481.   Print Sekunden;" Sekunden"
  482.   Print At(10,10);"mit diesem Programm gearbeitet."
  483.   Print
  484.   Print At(10,12);"In den Übungstexten hast Du insgesamt ";Tippzahl;" Zeichen getippt. Dabei"
  485.   Print At(10,13);"hast Du durchschnittlich ";Tippquote;" Anschläge pro Minute geschafft."
  486.   Print
  487.   Print At(10,15);"Insgesamt hast Du ";Fehlerzahl;" Fehler gemacht."
  488.   Print At(10,16);"Das entspricht einer Fehlerquote von ";Fehlerquote;"%"
  489.   Rbox 50,70,590,280
  490.   Line 50,105,590,105
  491. Return
  492. Procedure Tippen
  493.   Cls
  494.   Deftext 1,16,0,32
  495.   Print At(4,5);"Es kommt darauf an, bis zum Ablauf der Zeit"
  496.   Print At(4,6);"möglichst viele der Zufallsbuchstaben zu tippen."
  497.   Print At(4,7);"Gro₧- oder Kleinschreibung spielt keine Rolle."
  498.   Print At(4,9);"Mit der Leertaste geht's los."
  499.   Restore Spielstufen
  500.   For S=0 To Stufe
  501.     Read X
  502.   Next S
  503.   Repeat
  504.   Until Inkey$=" "
  505.   Cls
  506.   Repeat
  507.     Zeit=1000
  508.     Treffer=0
  509.     Box 280,252,340,274
  510.     Do
  511.       Print At(35,8);Treffer'"Treffer  "
  512.       X$=Spielzeichen$(Random(X)+1)
  513.       Text 300,200,X$
  514.       Repeat
  515.         A$=Inkey$
  516.         ' ----------------------
  517.         If A$="ä"          ! diese Zeilen ersetzen das Kommando A$=Upper$(A$),
  518.           A$="Ä"           ! das leider nicht vom Compiler verstanden wird.
  519.         Endif
  520.         If A$="ö"
  521.           A$="Ö"
  522.         Endif
  523.         If A$="ü"
  524.           A$="Ü"
  525.         Endif
  526.         If Asc(A$)>96 And Asc(A$)<123
  527.           A$=Chr$(Asc(A$)-32)
  528.         Endif
  529.         ' ----------------------
  530.         Dec Zeit
  531.         Print At(38,17);Zeit;'
  532.         Exit If Zeit<1
  533.         Pause 1
  534.         Exit If Asc(A$)=27
  535.       Until A$=X$
  536.       Inc Treffer
  537.       Exit If Zeit<1
  538.       Exit If Asc(A$)=27
  539.     Loop
  540.     Exit If Asc(A$)=27
  541.     For S=15 Downto 0
  542.       Sound 1,S,1,4,4
  543.     Next S
  544.     Print At(4,22);"nochmal ?  (J/N)"
  545.     Repeat
  546.       A$=Inkey$
  547.     Until A$="J" Or A$="N" Or A$="j" Or A$="n"
  548.   Until A$="N" Or A$="n"
  549.   Print At(4,22);"                "
  550. Return
  551. Procedure Text_abschreiben
  552.   Cls
  553.   Print At(15,15);"[ Help ]   = Erklärung        (oder beide Maustasten)"
  554.   Print At(15,16);"[ Return ] = weiter           (oder rechte Maustaste)"
  555.   Do
  556.     A$=Inkey$
  557.     Exit If (Asc(Left$(A$))=0 And (Asc(Right$(A$))=98)) Or Asc(A$)=13
  558.     Mouse X,Y,K
  559.     Exit If K>1
  560.   Loop
  561.   If Asc(Right$(A$))=98 Or K=3
  562.     Gosub Erklaerung2
  563.   Endif
  564.   If Asc(A$)=27
  565.     Goto Abbruch
  566.   Endif
  567.   Repeat
  568.     Repeat
  569.       Cls
  570.       Print
  571.       Print " Bitte die gewünschte Übungstext-Datei mit der linken Maustaste anklicken,"
  572.       Print " dann das Feld [OK] anklicken oder [Return] tippen."
  573.       Print At(1,24);" Übungstexte enthalten das Anhängsel .UEB. Sie befinden sich normalerweise"
  574.       Print " im Ordner UEBTEXTE, der durch Anklicken geöffnet wird.";
  575.       Fileselect "\*.ueb","",B$
  576.       Exit If Not Exist(B$)
  577.       If Exist(B$)
  578.         Open "I",#1,B$
  579.         Uebungstext$=""
  580.         S=0
  581.         Cls
  582.         Print
  583.         Do
  584.           Inc S
  585.           Line Input #1;Text$
  586.           Uebungstext$=Uebungstext$+Text$+Chr$(13)
  587.           If S<24
  588.             Print 'Text$;Chr$(13);Chr$(10);
  589.           Endif
  590.           Exit If Mousek>1 Or Eof(#1)
  591.         Loop
  592.       Endif
  593.       Close #1
  594.       Graphmode 1
  595.       Deffill 0,1,1
  596.       Defline 1,5,2,2
  597.       Prbox 150,150,450,270
  598.       Rbox 150,150,450,270
  599.       L=Len(Uebungstext$)
  600.       While Asc(Right$(Uebungstext$,1))<33
  601.         Uebungstext$=Left$(Uebungstext$,L-1)
  602.         Dec L
  603.       Wend
  604.       Print At(22,11);"Diesen Text habe ich eingelesen."
  605.       Print At(22,12);"Er hat ";L;" Zeichen."
  606.       Print At(22,14);"Ist das der richtige?"
  607.       Print At(22,16);"  Ja    Nein"
  608.       Defline 1,1,2,2
  609.       Box 170,235,270,260
  610.       Line 220,235,220,260
  611.       Do
  612.         A$=Inkey$
  613.         Exit If A$="j" Or A$="J" Or A$="n" Or A$="N"
  614.         Mouse X,Y,K
  615.         Exit If X>170 And X<270 And Y>235 And Y<260 And K=1
  616.       Loop
  617.     Until A$="J" Or A$="j" Or (K=1 And X<235)
  618.     Exit If Not Exist(B$)
  619.     Tippanfang=Timer
  620.     Fehler=0
  621.     Daneben=False
  622.     Cls
  623.     Print " Schreibe bitte den gedruckten Übungstext ab.                   [Esc] = Abbruch"
  624.     Print Chr$(27);"e"            ! Cursor einschalten
  625.     Zeile=0
  626.     Print " ";
  627.     For S=1 To L
  628.       Inc Zeile
  629.       X$=Mid$(Uebungstext$,S,1)
  630.       Repeat
  631.         Repeat
  632.           A$=Inkey$
  633.         Until A$>""
  634.         If A$=" " And X$=Chr$(13) And Zeile>50
  635.           A$=X$
  636.         Endif
  637.         Exit If Asc(A$)=27
  638.         If A$<>X$ And Asc(A$)<>27
  639.           Daneben=True
  640.           Out 2,7
  641.           Inc Fehler
  642.           Inc Wiederholung
  643.           Inc Fehlerzahl
  644.           Print Chr$(27);"j";      ! Cursorposition merken
  645.           Print A$;
  646.           Print Chr$(27);"k";      ! an gespeicherte Cursorposition gehen
  647.         Endif
  648.         Exit If Asc(A$)=27
  649.       Until A$=X$
  650.       Exit If Asc(A$)=27
  651.       If Daneben
  652.         Daneben=False
  653.         If X$<>Chr$(13)
  654.           Print Chr$(27);"p";      ! inverse Darstellung einschalten
  655.           Print X$;
  656.           Print Chr$(27);"q";      ! inverse Darstellung ausschalten
  657.         Else
  658.           Zeile=0
  659.           Print Chr$(27);"p";      ! inverse Darstellung einschalten
  660.           Print " ";
  661.           Print Chr$(27);"q";      ! inverse Darstellung ausschalten
  662.           Print X$;Chr$(10);" ";
  663.         Endif
  664.       Else
  665.         Print X$;
  666.         If X$=Chr$(13)
  667.           Zeile=0
  668.           Print Chr$(10);" ";
  669.         Endif
  670.       Endif
  671.       If (X$=" " Or X$="-") And Mid$(Uebungstext$,(S+1),1)=Chr$(13)
  672.         Inc S
  673.         Zeile=0
  674.         Print Chr$(13);Chr$(10);" ";
  675.       Endif
  676.       Inc Tippzahl
  677.     Next S
  678.     Tippzeit=Tippzeit+Timer-Tippanfang
  679.     Print Chr$(27);"f"                              ! Cursor ausschalten
  680.     Print
  681.     Print 'Fehler;" Fehler     ";
  682.     Print " [Return] = Neuer Text    [ Esc ] = Ende der Übung"
  683.     Repeat
  684.       A$=Inkey$
  685.     Until Asc(A$)=27 Or Asc(A$)=13
  686.   Until Asc(A$)=27
  687.   Abbruch:
  688.   Cls
  689. Return
  690. Procedure Erklaerung2
  691.   Cls
  692.   Print
  693.   Print "   Wenn Du in dieser Schwierigkeitsstufe arbeiten willst, brauchst Du"
  694.   Print "   ausgedruckte Texte zum Abschreiben. Die Texte befinden sich auf dieser"
  695.   Print "   Diskette. Wenn Du sie nicht in ausgedruckter Form vorliegen hast,"
  696.   Print "   kannst Du an dieser Stelle nicht weitermachen."
  697.   Print "   Tippe dann die Taste [Esc]."
  698.   Print
  699.   Print "   Beim Abschreiben kannst Du am Zeilenende mit [Return] in die nächste"
  700.   Print "   Zeile kommen - wie bei einer Schreibmaschine - oder einfach mit einem"
  701.   Print "   Leeranschlag zum nächsten Wort weitergehen - wie bei einem Textver-"
  702.   Print "   arbeitungsprogramm. Dies funktioniert allerdings nicht am Ende eines"
  703.   Print "   Absatzes (mitten in der Zeile)!"
  704.   Print
  705.   Print "   Fehler werden durch einen Glockenton signalisiert. Das Programm ar-"
  706.   Print "   beitet erst weiter, wenn das richtige Zeichen getippt ist, jedoch"
  707.   Print "   bleibt die Stelle, an der der Fehler gemacht wurde, markiert."
  708.   Print
  709.   Print "   Das Ausdrucken der Übungstexte geht am besten mit Hilfe eines Textver-"
  710.   Print "   arbeitungsprogramms. Zur Not geht es auch vom Desktop aus. Wie das"
  711.   Print "   geht, findest Du in der Bedienungsanleitung des Computers. Bei dieser"
  712.   Print "   Ausdruckart wird aber wahrscheinlich das ₧ (und vielleicht auch die"
  713.   Print "   Umlaute ä, ö  und ü) nicht richtig ausgedruckt."
  714.   Print
  715.   Print "   [Return]  = Übungstext aussuchen      [Esc] = Abbruch";
  716.   Do
  717.     A$=Inkey$
  718.     Exit If Asc(A$)=27 Or Asc(A$)=13
  719.   Loop
  720. Return
  721. Procedure Erklaerung3
  722.   Cls
  723.   Print
  724.   Print " In dieser Schwierigkeitsstufe gibt es keine Einführungsübung. Du solltest"
  725.   Print " bereits alle Tasten kennen und nun in der Lage sein, Texte abzuschreiben, die"
  726.   Print " in gedruckter Form vorliegen. Unter dem Menüpunkt >>Übungstexte<< kannst Du"
  727.   Print " jetzt Texte auswählen, die Du bereits als gedruckte Texte vor Dir hast und"
  728.   Print " daran üben, sie abzuschreiben."
  729.   Print
  730.   Print " Weitere Erklärungen findest Du beim Aufruf des Übungstextes."
  731.   Print
  732.   Print " Mit beliebiger Taste geht's zum Menü zurück."
  733.   Repeat
  734.   Until Mousek=0
  735.   Repeat
  736.   Until Inkey$>"" Or Mousek>0
  737.   Cls
  738. Return
  739. ' ##########
  740. Data Daumen,155,290,kleiner Finger,115,210,Ringfinger,155,210,Mittelfinger,195,210,Zeigefinger,235,210
  741. Data Zeigefinger,355,210,Mittelfinger,395,210,Ringfinger,435,210,kleiner Finger,475,210
  742. ' ##########
  743. ' Reihenfolge der Daten: Zeichen, X-Wert oben links, X-Wert unten rechts,
  744. '                        Y-Wert oben links, Y-Wert unten rechts,
  745. '                        Stufe, Art, Shift oder nicht, Fingernummer
  746. ' ########## obere Reihe
  747. Data Esc,35,85,130,170,9,9,9,9
  748. Data !,85,125,130,170,6,ze,-1,1
  749. Data """,125,165,130,170,8,ze,-1,1
  750. Data ▌,165,205,130,170,8,ze,-1,2
  751. Data $,205,245,130,170,8,ze,-1,3
  752. Data %,245,285,130,170,8,ze,-1,4
  753. Data &,285,325,130,170,8,ze,-1,4
  754. Data /,325,365,130,170,8,ze,-1,5
  755. Data (,365,405,130,170,8,ze,-1,5
  756. Data ),405,445,130,170,8,ze,-1,6
  757. Data =,445,485,130,170,8,ze,-1,7
  758. Data ?,485,525,130,170,6,ze,-1,8
  759. Data `,525,565,130,170,8,ze,-1,8
  760. Data ^,565,605,130,170,8,ze,-1,8
  761. ' ########## zweite Reihe von oben
  762. Data Tab,35,105,170,210,9,9,9,9
  763. Data Q,105,145,170,210,9,ko,-1,1
  764. Data W,145,185,170,210,6,ko,-1,2
  765. Data E,185,225,170,210,6,vo,-1,3
  766. Data R,225,265,170,210,6,ko,-1,4
  767. Data T,265,305,170,210,6,ko,-1,4
  768. Data Z,305,345,170,210,6,ko,-1,5
  769. Data U,345,385,170,210,6,vo,-1,5
  770. Data I,385,425,170,210,6,vo,-1,6
  771. Data O,425,465,170,210,6,vo,-1,7
  772. Data P,465,505,170,210,6,ko,-1,8
  773. Data Ü,505,545,170,210,6,vo,-1,8
  774. Data *,545,585,170,210,7,ze,-1,8
  775. Data   ,585,625,170,210,9,9,9,9
  776. ' ########### dritte Reihe von oben
  777. Data Control,35,115,210,250,9,9,9,9
  778. Data A,115,155,210,250,6,vo,-1,1
  779. Data S,155,195,210,250,6,ko,-1,2
  780. Data D,195,235,210,250,6,ko,-1,3
  781. Data F,235,275,210,250,6,ko,-1,4
  782. Data G,275,315,210,250,6,ko,-1,4
  783. Data H,315,355,210,250,6,ko,-1,5
  784. Data J,355,395,210,250,6,ko,-1,5
  785. Data K,395,435,210,250,6,ko,-1,6
  786. Data L,435,475,210,250,6,ko,-1,7
  787. Data Ö,475,515,210,250,6,vo,-1,8
  788. Data Ä,515,555,210,250,6,vo,-1,8
  789. Data Return,555,625,210,250,9,9,9,9
  790. ' ########## vierte Reihe von oben
  791. Data Shift,35,95,250,290,9,9,9,9
  792. Data >,95,135,250,290,7,ze,-1,1
  793. Data Y,135,175,250,290,6,vo,-1,1
  794. Data Y,135,175,250,290,6,ko,-1,1
  795. Data X,175,215,250,290,6,ko,-1,2
  796. Data C,215,255,250,290,6,ko,-1,3
  797. Data V,255,295,250,290,6,ko,-1,4
  798. Data B,295,335,250,290,6,ko,-1,4
  799. Data N,335,375,250,290,6,ko,-1,5
  800. Data M,375,415,250,290,6,ko,-1,5
  801. Data ;,415,455,250,290,6,ze,-1,6
  802. Data :,455,495,250,290,6,ze,-1,7
  803. Data _,495,535,250,290,6,ze,-1,8
  804. Data Shift,535,605,250,290,9,9,9,9
  805. ' ########### unterste Reihe
  806. Data Altern,95,155,290,330,9,9,9,9
  807. Data  ,155,515,290,330,0,9,0,0
  808. Data CapsLock,515,585,290,330,9,9,9,9
  809. Data grossende,0,0,0,0,0,0,0,0
  810. ' ########### obere Reihe
  811. Data 1,85,125,130,170,7,za,0,1
  812. Data 2,125,165,130,170,7,za,0,1
  813. Data 3,165,205,130,170,7,za,0,2
  814. Data 4,205,245,130,170,7,za,0,3
  815. Data 5,245,285,130,170,7,za,0,4
  816. Data 6,285,325,130,170,7,za,0,4
  817. Data 7,325,365,130,170,7,za,0,5
  818. Data 8,365,405,130,170,7,za,0,5
  819. Data 9,405,445,130,170,7,za,0,6
  820. Data 0,445,485,130,170,7,za,0,7
  821. Data ₧,485,525,130,170,7,ze,0,8
  822. Data ',525,565,130,170,8,ze,0,8
  823. Data #,565,605,130,170,8,ze,0,8
  824. ' ########## zweite Reihe
  825. Data q,105,145,170,210,9,ko,0,1
  826. Data w,145,185,170,210,1,ko,0,2
  827. Data e,185,225,170,210,1,vo,0,3
  828. Data r,225,265,170,210,1,ko,0,4
  829. Data t,265,305,170,210,2,ko,0,4
  830. Data z,305,345,170,210,2,ko,0,5
  831. Data u,345,385,170,210,1,vo,0,5
  832. Data i,385,425,170,210,1,vo,0,6
  833. Data o,425,465,170,210,1,vo,0,7
  834. Data p,465,505,170,210,1,ko,0,8
  835. Data ü,505,545,170,210,5,vo,0,8
  836. Data +,545,585,170,210,7,ze,0,8
  837. ' ########## dritte Reihe von oben
  838. Data a,115,155,210,250,0,vo,0,1
  839. Data s,155,195,210,250,0,ko,0,2
  840. Data d,195,235,210,250,0,ko,0,3
  841. Data f,235,275,210,250,0,ko,0,4
  842. Data g,275,315,210,250,2,ko,0,4
  843. Data h,315,355,210,250,2,ko,0,5
  844. Data j,355,395,210,250,0,ko,0,5
  845. Data k,395,435,210,250,0,ko,0,6
  846. Data l,435,475,210,250,0,ko,0,7
  847. Data ö,475,515,210,250,0,vo,0,8
  848. Data ä,515,555,210,250,5,vo,0,8
  849. ' ############ vierte Reihe von oben
  850. Data <,95,135,250,290,7,ze,0,1
  851. Data y,135,175,250,290,4,vo,0,1
  852. Data x,175,215,250,290,4,ko,0,2
  853. Data c,215,255,250,290,4,ko,0,3
  854. Data v,255,295,250,290,3,ko,0,4
  855. Data b,295,335,250,290,3,ko,0,4
  856. Data n,335,375,250,290,3,ko,0,5
  857. Data m,375,415,250,290,3,ko,0,5
  858. Data ",",415,455,250,290,4,ze,0,6
  859. Data .,455,495,250,290,4,ze,0,7
  860. Data -,495,535,250,290,4,ze,0,8
  861. ' ########## Zeichen, die aus mehreren Buchstaben bestehen
  862. Data Qu,0,0,0,0,6,ko,-1,9
  863. Data qu,0,0,0,0,1,ko,0,9
  864. Data tz,0,0,0,0,2,ko,0,9
  865. Data st,0,0,0,0,2,ko,0,9
  866. Data ck,0,0,0,0,4,ko,0,9
  867. Data ng,0,0,0,0,3,ko,0,9
  868. Data Ch,0,0,0,0,6,ko,-1,9
  869. Data ch,0,0,0,0,4,ko,0,9
  870. Data Sch,0,0,0,0,6,ko,-1,9
  871. Data sch,0,0,0,0,4,ko,0,9
  872. Data ei,0,0,0,0,1,vo,0,9
  873. Data eu,0,0,0,0,1,vo,0,9
  874. Data au,0,0,0,0,1,vo,0,9
  875. Data ai,0,0,0,0,1,vo,0,9
  876. Data äu,0,0,0,0,5,vo,0,9
  877. Data ee,0,0,0,0,1,vo,0,9
  878. Data oo,0,0,0,0,1,vo,0,9
  879. Data ie,0,0,0,0,1,vo,0,9
  880. ' ##########
  881. Data ende,0,0,0,0,0,0,0,0
  882. ' ##########
  883. Data A,S,D,F,J,K,L,Ö,Q,W,E,R,U,I,O,P,T,Z,G,H,V,B,N,M,Y,X,C,V,Ä,Ü
  884. Spielstufen:
  885. Data 8,16,20,24,27,29,29,29,29,29
  886. ' ##########
  887. ' Dies folgenden Texte werden bei der Einführung eingelesen.
  888. ' Vorne steht die dazugehörige Schwierigkeitsstufe. Es dürfen beliebig
  889. ' viele neue Übungszeilen hinzugefügt werden. Bei der Einführung werden
  890. ' sie der Reihe nach immer wieder von vorne eingelesen.
  891. ' ##########
  892. Einfuehrung:
  893. Data 0,asdfölkj fdsajklö adsföklj afkjöfls djslakös jösfklfaö
  894. Data 1,aqswdefrjukiloöpasdfqwerölkjpoiufrfjjujöpöpöfqfaqaqf
  895. Data 2,fgfgfgjhjhjhftftftjzjzjzfgtfrfjhzjatfagafatarföjöhözöujsrzltahrögu
  896. Data 3,fvfbfvfbjmjnjmjnfrftfgfbfvjujzjhjnjmgztuvmbnfjghtzruzntumnhutfgrbfjuzht
  897. Data 4,"aysxdck,l.ö-fyfxfcj,j.j-scyak-.kc,daqayswsxdedcqyqyakik,lol.öpöp-p-ö"
  898. Data 5,"öäöäöpöüöpöüöpö₧öpö₧öjöjäjüjpj₧j-jöj-jäjüjpj₧käkökükpk-kök₧k"
  899. Data 6,"AaBbCcdDeEFfGghHiIjJKkLlmMNnoOpPQqrRsSTtUuvVWwXxYyzZäÄöÖüÜ"
  900. Data 6,"k,k;k,k;l.l:l.l:ö-ö_ö-ö-öaqa!aqa!₧ö?ö₧ö?kik,lol.öpö-j-j_jäj?a!y!-_-?"
  901. Data 7,a1a2s3d4f5f6j7k8l9ö0+0*8as12df34fg56jk78lö90a<a>y<y>öäö+ö*ö₧ö
  902. Data 7,"aqa1a2aqayasws3swsxsded4dedcdfrf5frf6fvfjuj7juj8jmjkik9kik,klol0lol.l"
  903. Data 7,1357924680+17364941349+7085461028157+93641467930353+04891349762
  904. Data 8,"1!a2"s3▌d4$f5%f6&g7/h8(9)k0=l'`ö'`ä#^+ä#^+ä"
  905. Data 8,"a1aya2aya"frf5f%fvf6f&j8j7j(j/jnö₧ö?ö'ö`ööäö+ö#ö^ö"
  906. Data 9,9
  907.