home *** CD-ROM | disk | FTP | other *** search
/ M.u.C.S. Disc 2000 / MUCS2000.iso / anwend / 10finger / 10finger.lst < prev    next >
File List  |  1994-09-22  |  35KB  |  1,176 lines

  1. ' ****************************************************************************
  2. '
  3. ' 10_FINGER  -  ein Programm zum Erlernen des 10-Finger-Systems
  4. '
  5. ' programmiert von Heiko Müller, Mozartstra₧e 17, 2905 Edewecht
  6. '
  7. ' Version 1.0 abgeschlossen am 26.09.1987
  8. Version$="2.03"        ! aktuelle Version
  9. Datum$="27.02.1990"    ! Tag der letzten Bearbeitung
  10. '
  11. ' ****************************************************************************
  12. '
  13. Cls
  14. Hidem
  15. Anfang%=Timer
  16. Tippzahl%=0
  17. Diskpfad$=Chr$(Gemdos(25)+65)+":"+Dir$(0)+"\"
  18. '
  19. Waehlart%=2 ! 1 = Übungsdateien werden mit Fileselectbox ausgesucht
  20. '             2 = auszuwählende Dateien werden vom Programm vorgegeben
  21. '
  22. Musik!=True
  23. Dim A$(150),X1%(150),X2%(150),Y1%(150),Y2%(150)
  24. Dim Stufe%(150),Art$(150),Shift!(150),Finger%(150)
  25. Dim Kleinkon$(50),Grosskon$(50),Zeich$(50),Vok$(50)
  26. Dim Finger$(9),Pfeil_x%(9),Pfeil_y%(9)
  27. Dim Spielzeichen$(29)
  28. Gosub Bildbau
  29. Deftext 1,16,0,32
  30. Text 125,50,"Zehn-Finger-Lehrgang"
  31. Deftext 1,0,0,4
  32. Text 40,75,"programmiert in GfA-BASIC (Version 3.07) von Heiko Müller, Mozartstra₧e 17, 2905 Edewecht"
  33. Text 40,85,"Version "+Version$+" vom "+Datum$
  34. Text 40,100,"Dieses Programm wurde 1988 im Rahmen eines Schulsoftware-Wettbewerbs als Public-Domain-Programm"
  35. Text 40,110,"geschrieben für die Zeitschrift ""ST-magazin"". Es wird vertrieben vom Markt-und Technik-Verlag"
  36. Text 40,120,"auf der Schulsoftware-Diskette 5, ""Sprache, Sport"", Bestellnummer: 34805"
  37. Do
  38.   Print At(5,24);"Erklärung mit der Taste [Help]      oder      Starten mit der Taste [F1]"
  39.   A$=Inkey$
  40.   Exit if Asc(Left$(A$))=0 And (Asc(Right$(A$))=98 Or Asc(Right$(A$))=59)
  41.   Pause 15
  42.   Print At(5,24);"Erklärung mit der Taste             oder      Starten mit der Taste      "
  43.   A$=Inkey$
  44.   Exit if Asc(Left$(A$))=0 And (Asc(Right$(A$))=98 Or Asc(Right$(A$))=59)
  45.   Pause 15
  46. Loop
  47. If Asc(Right$(A$))=98
  48.   Gosub Erklaerung
  49. Endif
  50. Do       !  Endlosschleife als Hauptprogramm
  51.   Showm
  52.   Defmouse 3
  53.   Gosub Stufe_eingeben
  54.   If Stufe%<9
  55.     Do
  56.       Gosub Uebungsstring_erstellen
  57.       Gosub Ueben
  58.       Exit if Stufe%=9
  59.     Loop
  60.   Endif
  61.   Gosub Frage_nach_hilfe
  62.   If Waehlart%=1
  63.     Gosub Text_aussuchen_1
  64.   Else
  65.     Gosub Text_aussuchen_2
  66.   Endif
  67.   '
  68. Loop
  69. '
  70. Procedure Erklaerung
  71.   Cls
  72.   Print
  73.   Print " Gleich wird dir ein Bild gezeigt, auf dem du die Schwierigkeitsstufe aus-"
  74.   Print " wählen sollst. Die Buchstaben, die bei der gewählten Stufe geübt werden"
  75.   Print " sollen, sind schwarz unterlegt."
  76.   Print
  77.   Print " Wähle die gewünschte Stufe aus und tippe dann auf die Taste [Return] oder"
  78.   Print " klicke das Return-Feld mit der linken Maustaste an."
  79.   Print
  80.   Print " Das ganze Programm ist so geschrieben, da₧ du dir aussuchen kannst, ob du"
  81.   Print " deine Auswahl mit Hilfe der Maus oder der Tastatur treffen möchtest. Nur"
  82.   Print " beim Beenden des Programms kann man nicht auf die Maus verzichten."
  83.   Print
  84.   Print " Regle jetzt bitte die Lautstärke so, da₧ du die Tastenbetätigung hören"
  85.   Print " kannst (rechts am Monitor; unteres Stellrad). Probiere das mit einer belie-"
  86.   Print " bigen Taste aus. Wenn der Lautsprecher zu leise eingestellt ist, hast du"
  87.   Print " keine Kontrolle über Deine Tasteneingaben."
  88.   Print
  89.   Print " An jeder Stelle des Programms kann man mit der Taste [Esc] aufhören."
  90.   Print
  91.   Print
  92.   Print
  93.   Print " Das Programm beginnt nun mit einem Druck auf die Taste [F1].";
  94.   Repeat
  95.     A$=Inkey$
  96.     If Asc(A$)=27
  97.       Gosub Aufhoeren
  98.     Endif
  99.   Until Asc(Left$(A$))=0 And Asc(Right$(A$))=59
  100. Return
  101. '
  102. Procedure Uebungsstring_erstellen
  103.   Ueb$=""
  104.   If Stufe%<9
  105.     Repeat
  106.       Wort$=""
  107.       If Stufe%>6
  108.         Wort$=Str$(Random(100))+" "
  109.       Endif
  110.       If Stufe%>5
  111.         Wort$=Wort$+Grosskon$(Random(Gko%))
  112.       Else
  113.         Wort$=Wort$+Kleinkon$(Random(Kko%))
  114.       Endif
  115.       Wort$=Wort$+Vok$(Random(Vo%))
  116.       Wort$=Wort$+Kleinkon$(Random(Kko%))
  117.       Wort$=Wort$+Vok$(Random(Vo%))
  118.       Wort$=Wort$+Kleinkon$(Random(Kko%))
  119.       Wort$=Wort$+Vok$(Random(Vo%))
  120.       If Stufe%>4
  121.         Wort$=Wort$+Kleinkon$(Random(Kko%))
  122.         Wort$=Wort$+Zeich$(Random(Ze%))
  123.       Endif
  124.       If Left$(Wort$,1)<>" "
  125.         Wort$=Wort$+" "
  126.       Endif
  127.       Ueb$=Ueb$+Wort$
  128.     Until Len(Ueb$)>65
  129.     Ueb$=Left$(Ueb$,65)
  130.   Endif
  131. Return
  132. '
  133. Procedure Ueben
  134.   Abbruch!=False
  135.   Tippanfang%=Timer
  136.   L%=Len(Ueb$)
  137.   If Right$(Ueb$,1)=" "
  138.     Dec L%
  139.   Endif
  140.   Fehler%=0
  141.   Cls
  142.   Hidem
  143.   Print At(8,2);"Schwierigkeitsstufe ";Stufe%
  144.   Print At(8,7);"Übungstext bitte abschreiben:"
  145.   Print At(8,19);"[Esc] = Abbruch"
  146.   Rbox 40,120,600,220
  147.   Print Chr$(27);"e"            ! Cursor einschalten
  148.   Print At(8,10);Ueb$
  149.   Print At(8,12);
  150.   For I%=1 To L%
  151.     X$=Mid$(Ueb$,I%,1)
  152.     Wiederholung%=0
  153.     Repeat
  154.       Repeat
  155.         A$=Inkey$
  156.       Until A$>""
  157.       If A$<>X$ And Asc(A$)<>27
  158.         Print Chr$(27);"j";      ! Cursorposition merken
  159.         Print A$;
  160.         Print Chr$(27);"k";      ! an gespeicherte Cursorposition gehen
  161.         Out 2,7
  162.         Inc Fehler%
  163.         Inc Wiederholung%
  164.         Inc Fehlerzahl%
  165.         Deftext 1,0,0,13
  166.         Text 56,253,Str$(Fehler%)
  167.         If Wiederholung%>1
  168.           Sget Bild$
  169.           Print Chr$(27);"f";      ! Cursor ausschalten
  170.           Print Chr$(27);"j";      ! Cursorposition merken
  171.           Gosub Hilfe
  172.           Print Chr$(27);"e";      ! Cursor anschalten
  173.           Print Chr$(27);"k";      ! an gespeicherte Cursorposition gehen
  174.           Sput Bild$
  175.         Endif
  176.       Endif
  177.       If Asc(A$)=27 And I%<50
  178.         Print " - abgebrochen"
  179.         Abbruch!=True
  180.       Endif
  181.       Exit if Asc(A$)=27
  182.     Until A$=X$
  183.     Exit if Asc(A$)=27
  184.     Print X$;
  185.     Inc Tippzahl%
  186.   Next I%
  187.   Tippzeit%=Tippzeit%+Timer-Tippanfang%
  188.   If Fehler%=0 And Musik! And Not Abbruch!
  189.     Sound 1,15,1,4,4
  190.     Sound 1,15,5,4,5
  191.     Sound 1,15,8,4,5
  192.     For I%=15 Downto 0
  193.       Sound 1,I%,1,5,5
  194.     Next I%
  195.   Endif
  196.   Print Chr$(27);"f"                              ! Cursor ausschalten
  197.   Print At(8,16);Fehler%;" Fehler"
  198.   Print At(8,7);"                             "
  199.   Abfrage:          ! Abfrageschleife mit GOTO bis zum Ende der Procedure
  200.   Print At(8,18);"[Return] = Neuer Übungstext"
  201.   Print At(8,19);"[ F1 ]   = Programmende"
  202.   Print At(8,20);"[ F2 ]   = Schwierigkeitsstufe ändern"
  203.   Print At(8,21);"[ F3 ]   = Zwischenspiel"
  204.   Print At(8,22);"[ F4 ]   = Statistik"
  205.   If Fehler%=0 And Musik! And Not Abbruch!
  206.     Print At(8,23);"[ F10 ]  = Musik ausschalten"
  207.   Endif
  208.   Repeat
  209.     A$=Inkey$
  210.     Rs%=Asc(Right$(A$))
  211.   Until Asc(Left$(A$))=0 And ((Rs%>58 And Rs%<63) Or Rs%=68) Or Asc(A$)=13
  212.   Showm
  213.   Defmouse 3
  214.   If Asc(Left$(A$))=0 And Rs%=59
  215.     Gosub Aufhoeren
  216.   Endif
  217.   If Asc(Left$(A$))=0 And Rs%=60
  218.     Gosub Stufe_eingeben
  219.   Endif
  220.   If Asc(Left$(A$))=0 And Rs%=61
  221.     Gosub Tippen
  222.     Goto Abfrage
  223.   Endif
  224.   If Asc(Left$(A$))=0 And Rs%=62
  225.     Gosub Statistik
  226.     Goto Abfrage
  227.   Endif
  228.   If Asc(Left$(A$))=0 And Rs%=68
  229.     If Musik!
  230.       Alert 0,"Die Musik kann am Ende einer|Übungszeile mit der Taste [F10]|wieder eingeschaltet werden.| ",1," Return ",Dummy%
  231.       Print At(8,23);Space$(30)
  232.       Musik!=False
  233.     Else
  234.       For I%=15 Downto 0
  235.         Sound 1,I%,1,5,5
  236.       Next I%
  237.       Musik!=True
  238.     Endif
  239.     Goto Abfrage
  240.   Endif
  241. Return
  242. '
  243. Procedure Bildbau
  244.   For I%=0 To 8
  245.     Read Finger$(I%),Pfeil_x%(I%),Pfeil_y%(I%)
  246.   Next I%
  247.   Deftext 1,0,0,13
  248.   I%=0
  249.   Do
  250.     Inc I%
  251.     Read A$(I%),X1%(I%),X2%(I%),Y1%(I%),Y2%(I%)
  252.     '
  253.     If A$(I%)="Anf-strich" ! Das Anführungszeichen lä₧t sich nicht direkt lesen
  254.       A$(I%)=Chr$(34)
  255.     Endif
  256.     '
  257.     Read Stufe%(I%),Art$(I%),Shift!(I%),Finger%(I%)
  258.     Exit if A$(I%)="grossende"
  259.     Box X1%(I%),Y1%(I%),X2%(I%),Y2%(I%)
  260.     Text X1%(I%)+5,Y1%(I%)+15,A$(I%)
  261.   Loop
  262.   Color 0
  263.   Line 576,210,624,210     ! Unterteilung in Returntaste löschen
  264.   Color 1
  265.   Dec I%
  266.   Do
  267.     Inc I%
  268.     Read A$(I%),X1%(I%),X2%(I%),Y1%(I%),Y2%(I%)
  269.     Read Stufe%(I%),Art$(I%),Shift!(I%),Finger%(I%)
  270.     Exit if A$(I%)="ende"
  271.     Box X1%(I%),Y1%(I%),X2%(I%),Y2%(I%)
  272.     If Len(A$(I%))<2
  273.       Text X1%(I%)+5,Y1%(I%)+30,A$(I%)
  274.     Endif
  275.   Loop
  276.   Sget Tastbild$
  277.   Get 515,290,585,330,Capslock$
  278.   For I%=1 To 29
  279.     Read Spielzeichen$(I%)
  280.   Next I%
  281. Return
  282. '
  283. Procedure Speicher_einlesen
  284.   I%=-1
  285.   Vo%=-1
  286.   Kko%=-1
  287.   Gko%=-1
  288.   Ze%=-1
  289.   Do
  290.     Inc I%
  291.     If Stufe%(I%)<=Stufe%
  292.       If Art$(I%)="vo" And Not Shift!(I%)
  293.         Inc Vo%
  294.         Vok$(Vo%)=A$(I%)
  295.       Endif
  296.       If Art$(I%)="ko" And Shift!(I%)
  297.         Inc Gko%
  298.         Grosskon$(Gko%)=A$(I%)
  299.       Endif
  300.       If Art$(I%)="ko" And Not Shift!(I%)
  301.         Inc Kko%
  302.         Kleinkon$(Kko%)=A$(I%)
  303.       Endif
  304.       If Art$(I%)="ze"
  305.         Inc Ze%
  306.         Zeich$(Ze%)=A$(I%)
  307.       Endif
  308.     Endif
  309.     Exit if A$(I%)="ende"
  310.   Loop
  311.   Inc Vo%
  312.   Inc Gko%
  313.   Inc Kko%
  314.   Inc Ze%
  315. Return
  316. '
  317. Procedure Hilfe
  318.   Defline 1,5,0,1
  319.   Sput Tastbild$
  320.   If Einfuehrung!
  321.     Print At(5,24);"Einführung in Stufe ";Stufe%;
  322.     Print At(47,24);"[Esc] = Start des Übungstextes";
  323.     If Stufe%=6
  324.       Print At(5,2);" Die Shift-Tasten werden mit den kleinen Fingern gehalten."
  325.     Endif
  326.     If Stufe%=0
  327.       Print At(5,2);"Das Zeichen, das oben eingerahmt ist, soll getippt werden. Sieh"
  328.       Print At(5,3);"dabei möglichst wenig auf das Tastenbild unten auf dem Bildschirm!"
  329.     Endif
  330.   Endif
  331.   Deftext 1,0,0,32
  332.   Text 300,100,X$
  333.   Rbox 290,65,325,110
  334.   Graphmode 3
  335.   Such%=0
  336.   Repeat
  337.     Inc Such%
  338.   Until A$(Such%)=X$
  339.   Deffill 0,2,8
  340.   Pbox X1%(Such%),Y1%(Such%),X2%(Such%),Y2%(Such%)
  341.   F%=Finger%(Such%)
  342.   If Shift!(Such%)
  343.     If F%<5
  344.       Pbox 535,250,605,290
  345.     Else
  346.       Pbox 35,250,95,290
  347.     Endif
  348.   Endif
  349.   Deffill 1,1,1
  350.   If Pfeil_x%(F%)<>X1%(Such%) Or Pfeil_y%(F%)<>Y1%(Such%)
  351.     Line Pfeil_x%(F%)+20,Pfeil_y%(F%)+20,X1%(Such%)+20,Y1%(Such%)+20
  352.   Endif
  353.   Graphmode 1
  354.   Deftext 1,16,0,13
  355.   Text 450+400*(F%<5),80,Finger$(F%)
  356.   Capslock:
  357.   Cl%=Bios(11,-1) And 16
  358.   If Cl%=16
  359.     Graphmode 3
  360.     Deffill 1,2,1
  361.     Pbox 516,291,584,329
  362.   Else
  363.     Put 515,290,Capslock$
  364.   Endif
  365.   Graphmode 1
  366.   Capslock%=False
  367.   Daneben%=0
  368.   Repeat
  369.     Repeat
  370.       A$=Inkey$
  371.       Clo%=Bios(11,-1) And 16
  372.       If Clo%<>Cl%
  373.         Capslock%=True
  374.       Endif
  375.       Exit if Capslock%
  376.     Until A$>""
  377.     Exit if Capslock%
  378.     If A$<>X$
  379.       Inc Daneben%
  380.       If Daneben%>2
  381.         If Cl%=16
  382.           Deffill 0,1,1
  383.           Defline 1,5,2,2
  384.           Get 180,150,460,270,Sicher$
  385.           Pbox 180,150,460,270
  386.           Box 185,155,455,265
  387.           Print At(25,12);" Du hast mit der Taste CapsLock "
  388.           Print At(25,13);" auf Gro₧schreibung umgestellt! "
  389.           Print At(25,14);"                                "
  390.           Print At(25,15);"     Bitte zurückschalten!      ";
  391.           Repeat
  392.             Clo%=Bios(11,-1) And 16
  393.           Until Clo%=0
  394.           Put 180,150,Sicher$
  395.           Daneben%=0
  396.         Endif
  397.       Endif
  398.     Endif
  399.   Until A$=X$ Or Asc(A$)=27
  400.   Defline 1,1,0,0
  401.   If Capslock%
  402.     Goto Capslock
  403.   Endif
  404. Return
  405. '
  406. Procedure Stufe_eingeben
  407.   Repeat
  408.     Cls
  409.     Defline 1,1,2,2
  410.     If Stufenwahl$=""
  411.       Deftext 1,0,0,13
  412.       Print At(6,2);"Bitte Schwierigkeitsstufe auswählen (Taste oder Maus), dann [Return]"
  413.       Print At(6,5);"0     A S D F J K L Ö                 Anfänger"
  414.       Print At(6,7);"1     Q W E R U I O P"
  415.       Print At(6,9);"2     G H T Z"
  416.       Print At(6,11);"3     V B N M"
  417.       Print At(6,13);"4     Y X C , . -"
  418.       Print At(6,15);"5     Ä Ü ₧"
  419.       Print At(6,17);"6     ! ? ; : _ und Gro₧schreibung"
  420.       Print At(6,19);"7     1 2 3 4 5 6 7 8 9 0 + * < >"
  421.       Print At(6,21);"8     ";Chr$(34);" ▌ $ % & / ( ) = ' ` # ^       Profi"
  422.       Print At(6,23);"9     gedruckte Texte abschreiben"
  423.       Print At(63,5);"Return"
  424.       Graphmode 1
  425.       For I%=1 To 10
  426.         Box 32,23+I%*32,320,55+I%*32
  427.       Next I%
  428.       Line 64,55,64,375
  429.       Box 480,55,560,87
  430.       For I%=0 To 6
  431.         Text 360,110+I%*32,""
  432.       Next I%
  433.       Sget Stufenwahl$
  434.     Else
  435.       Sput Stufenwahl$
  436.     Endif
  437.     Deffill 1,1,1
  438.     Graphmode 3
  439.     Pbox 32,55,320,87+Stufe%*32
  440.     Do
  441.       Mouse X%,Y%,K%
  442.       A$=Inkey$
  443.       Exit if K%=1 Or Asc(A$)=13
  444.       Exit if Asc(A$)>47 And Asc(A$)<59
  445.       Exit if Len(A$)=2 And (Right$(A$)="H" Or Right$(A$)="P")
  446.       '
  447.       If Asc(A$)=27
  448.         Gosub Aufhoeren
  449.       Endif
  450.     Loop
  451.     Exit if Asc(A$)=13
  452.     Repeat
  453.     Until Mousek=0
  454.     If Asc(A$)>47 And Asc(A$)<58
  455.       Stufe%=Val(A$)
  456.     Endif
  457.     If K%=1 And X%>32 And X%<320 And Y%>55 And Y%<375
  458.       Stufe%=Int((Y%-23)/32)-1
  459.     Endif
  460.     If Right$(A$)="H" And Stufe%>0
  461.       Dec Stufe%
  462.     Endif
  463.     If Right$(A$)="P" And Stufe%<9
  464.       Inc Stufe%
  465.     Endif
  466.   Until X%>480 And X%<560 And Y%>55 And Y%<87
  467.   If Stufe%<9
  468.     Graphmode 1
  469.     Deffill 0,1,1
  470.     Pbox 330,0,600,400
  471.     Gosub Speicher_einlesen
  472.     Print At(6,2);Space$(60)
  473.     Print At(50,17);"Wünschst Du eine Einführung"
  474.     Print At(50,18);"in Stufe"'Stufe%'"?"
  475.     Print At(50,21);"  Ja     Nein"
  476.     Box 390,311,510,342
  477.     Line 450,311,450,342
  478.     Do
  479.       Mouse X%,Y%,K%
  480.       Exit if K%=1 And X%>390 And X%<510 And Y%>311 And Y%<342
  481.       S$=Inkey$
  482.       Exit if S$="J" Or S$="j" Or S$="N" Or S$="n"
  483.       '
  484.       If Asc(S$)=27
  485.         Gosub Aufhoeren
  486.       Endif
  487.     Loop
  488.     If S$="J" Or S$="j" Or (K%=1 And X%<450)
  489.       Gosub Einfuehrung
  490.     Endif
  491.   Endif
  492. Return
  493. Procedure Einfuehrung
  494.   Einfuehrung!=True
  495.   Do
  496.     Restore Einfuehrung
  497.     Repeat
  498.       Repeat
  499.         Read I%,Ueb$
  500.       Until I%=Stufe% Or I%=9
  501.       If I%<9
  502.         For I%=1 To Len(Ueb$)
  503.           X$=Mid$(Ueb$,I%,1)
  504.           Gosub Hilfe
  505.           Exit if Asc(A$)=27
  506.         Next I%
  507.       Endif
  508.     Until Asc(A$)=27 Or I%=9
  509.     Exit if Asc(A$)=27
  510.   Loop
  511.   Einfuehrung!=False
  512.   Cls
  513.   Pause 20
  514. Return
  515. Procedure Aufhoeren
  516.   Alert 2," Soll das Programm | wirklich beendet werden? ",2,"  ja  | nein ",Antw%
  517.   If Antw%=1
  518.     Schluss!=True
  519.     Gosub Statistik
  520.     End
  521.   Endif
  522. Return
  523. '
  524. Procedure Statistik
  525.   Hidem
  526.   Uebzeit%=Int((Timer-Anfang%)/200)      ! Umrechnung TIMER --> Sekunden
  527.   Stunden%=Int(Uebzeit%/3600)
  528.   Minuten%=Int(Uebzeit%/60)-Stunden%*60
  529.   Sekunden%=Uebzeit%-Stunden%*3600-Minuten%*60
  530.   If Tippzeit%>0
  531.     Tippquote%=Int(Tippzahl%*12000/Tippzeit%)
  532.   Endif
  533.   If Tippzahl%>0
  534.     Fehlerquote#=Int((Fehlerzahl%/Tippzahl%*100)*10)/10
  535.   Endif
  536.   Cls
  537.   Print At(10,3);"Statistik"
  538.   Print At(10,6);"Du hast jetzt ";
  539.   If Stunden%>0
  540.     Print Stunden%;" Stunde";
  541.     If Stunden%=1
  542.       Print ", ";
  543.     Else
  544.       Print "n, ";
  545.     Endif
  546.   Endif
  547.   If Minuten%>0 Or Stunden%>0
  548.     Print Minuten%;" Minute";
  549.     If Minuten%=1
  550.       Print " und ";
  551.     Else
  552.       Print "n und ";
  553.     Endif
  554.   Endif
  555.   Print Sekunden%;" Sekunden"
  556.   Print At(10,7);"mit diesem Programm gearbeitet."
  557.   Print At(10,9);"In den Übungstexten hast du insgesamt ";Tippzahl%;" Zeichen getippt. Dabei"
  558.   Print At(10,10);"hast du durchschnittlich ";Tippquote%;" Anschläge pro Minute geschafft."
  559.   Print At(10,12);"Insgesamt hast du ";Fehlerzahl%;" Fehler gemacht."
  560.   Print At(10,13);"Das entspricht einer Fehlerquote von ";Fehlerquote#;"%"
  561.   Print
  562.   Print At(10,15);"weiter mit beliebiger Taste oder Mausklick"
  563.   '
  564.   If Not Schluss!
  565.     Print At(10,16);"[ 0 ] = Fehlerzahl und Geschwindigkeitsmessung auf Null setzen"
  566.   Endif
  567.   Rbox 50,25,590,265
  568.   Line 50,60,590,60
  569.   Repeat
  570.     I$=Inkey$
  571.   Until I$>"" Or Mousek
  572.   If I$="0"
  573.     Tippzeit%=0
  574.     Tippzahl%=0
  575.     Tippquote%=0
  576.     Fehlerzahl%=0
  577.     Fehlerquote#=0
  578.   Endif
  579.   Showm
  580. Return
  581. Procedure Tippen
  582.   Cls
  583.   Deftext 1,16,0,32
  584.   Print At(4,5);"Es kommt darauf an, bis zum Ablauf der Zeit"
  585.   Print At(4,6);"möglichst viele der Zufallsbuchstaben zu tippen."
  586.   Print At(4,7);"Gro₧- oder Kleinschreibung spielt keine Rolle."
  587.   Print At(4,9);"Mit der Leertaste geht's los."
  588.   Restore Spielstufen
  589.   For I%=0 To Stufe%
  590.     Read X%
  591.   Next I%
  592.   Repeat
  593.   Until Inkey$=" "
  594.   Cls
  595.   Repeat
  596.     Zeit%=1000
  597.     Treffer%=0
  598.     Box 280,252,340,274
  599.     Do
  600.       Print At(35,8);Treffer%'"Treffer  "
  601.       X$=Spielzeichen$(Random(X%)+1)
  602.       Text 300,200,X$
  603.       Repeat
  604.         A$=Upper$(Inkey$)
  605.         Dec Zeit%
  606.         Print At(38,17);Zeit%;'
  607.         Exit if Zeit%<1
  608.         Pause 1
  609.       Until A$=X$ Or Asc(A$)=27
  610.       Inc Treffer%
  611.       Exit if Zeit%<1 Or Asc(A$)=27
  612.     Loop
  613.     Exit if Asc(A$)=27
  614.     For I%=15 Downto 0
  615.       Sound 1,I%,1,4,4
  616.     Next I%
  617.     Print At(4,22);"nochmal ?  (J/N)"
  618.     Repeat
  619.       A$=Inkey$
  620.     Until A$="J" Or A$="N" Or A$="j" Or A$="n"
  621.   Until A$="N" Or A$="n"
  622.   Cls
  623. Return
  624. '
  625. Procedure Frage_nach_hilfe
  626.   Abbruch!=False
  627.   Cls
  628.   Print At(15,15);"[ Help ]   = Erklärung        (oder beide Maustasten)"
  629.   Print At(15,16);"[ Return ] = weiter           (oder rechte Maustaste)"
  630.   Do
  631.     A$=Inkey$
  632.     Exit if (Asc(Left$(A$))=0 And (Asc(Right$(A$))=98)) ! Help-Taste
  633.     Exit if Asc(A$)=13 Or Asc(A$)=27
  634.     Mouse X%,Y%,K%
  635.     Exit if K%>1
  636.   Loop
  637.   If Asc(Right$(A$))=98 Or K%=3
  638.     Gosub Erklaerung2
  639.   Endif
  640.   If Asc(A$)=27
  641.     Abbruch!=True
  642.   Endif
  643. Return
  644. '
  645. Procedure Text_aussuchen_1
  646.   If Not Abbruch!
  647.     Repeat
  648.       Repeat
  649.         Cls
  650.         Print
  651.         Print " Bitte die gewünschte Übungstext-Datei mit der linken Maustaste anklicken,"
  652.         Print " dann das Feld [OK] anklicken oder [Return] tippen."
  653.         Print At(1,24);" Übungstexte enthalten das Anhängsel .UEB. Sie befinden sich normalerweise"
  654.         Print " im Ordner UEBTEXTE, der durch Anklicken geöffnet wird.";
  655.         Fileselect "\*.ueb","",Pfad$
  656.         If Not Exist(Pfad$)
  657.           Abbruch!=True
  658.         Endif
  659.         Exit if Abbruch!
  660.         Gosub Text_einladen
  661.       Until A$="J" Or A$="j" Or (K%=1 And X%<235)
  662.       Exit if Abbruch!
  663.       Tippanfang%=Timer
  664.       Fehler%=0
  665.       Daneben!=False
  666.       Cls
  667.       Print " Schreibe bitte den gedruckten Übungstext ab.                   [Esc] = Abbruch"
  668.       Print Chr$(27);"e"            ! Cursor einschalten
  669.       Zeile%=0
  670.       Print " ";
  671.       For S%=1 To L%
  672.         Inc Zeile%
  673.         X$=Mid$(Uebungstext$,S%,1)
  674.         Repeat
  675.           Repeat
  676.             A$=Inkey$
  677.           Until A$>""
  678.           If A$=" " And X$=Chr$(13) And Zeile%>50
  679.             A$=X$
  680.           Endif
  681.           Exit if Asc(A$)=27
  682.           If A$<>X$ And Asc(A$)<>27
  683.             Daneben!=True
  684.             Out 2,7
  685.             Inc Fehler%
  686.             Inc Wiederholung%
  687.             Inc Fehlerzahl%
  688.             Print Chr$(27);"j";      ! Cursorposition merken
  689.             Print A$;
  690.             Print Chr$(27);"k";      ! an gespeicherte Cursorposition gehen
  691.           Endif
  692.           Exit if Asc(A$)=27
  693.         Until A$=X$
  694.         Exit if Asc(A$)=27
  695.         If Daneben!
  696.           Daneben!=False
  697.           If X$<>Chr$(13)
  698.             Print Chr$(27);"p";      ! inverse Darstellung einschalten
  699.             Print X$;
  700.             Print Chr$(27);"q";      ! inverse Darstellung ausschalten
  701.           Else
  702.             Zeile%=0
  703.             Print Chr$(27);"p";      ! inverse Darstellung einschalten
  704.             Print " ";
  705.             Print Chr$(27);"q";      ! inverse Darstellung ausschalten
  706.             Print X$;Chr$(10);" ";
  707.           Endif
  708.         Else
  709.           Print X$;
  710.           If X$=Chr$(13)
  711.             Zeile%=0
  712.             Print Chr$(10);" ";
  713.           Endif
  714.         Endif
  715.         If (X$=" " Or X$="-") And Mid$(Uebungstext$,(S%+1),1)=Chr$(13)
  716.           Inc S%
  717.           Zeile%=0
  718.           Print Chr$(13);Chr$(10);" ";
  719.         Endif
  720.         Inc Tippzahl%
  721.       Next S%
  722.       Tippzeit%=Tippzeit%+Timer-Tippanfang%
  723.       Print Chr$(27);"f"                              ! Cursor ausschalten
  724.       Print
  725.       Print 'Fehler%;" Fehler     ";
  726.       Was_nun:
  727.       Print " [Return] = Neuer Text    [ F2 ] = Neue Schwierigkeitsstufe"
  728.       Print " [ F1 ] = Programmende    [ F3 ] = Zwischenspiel    [ F4 ] = Statistik;"
  729.       Repeat
  730.         A$=Inkey$
  731.         Rs%=Asc(Right$(A$))
  732.         If Asc(Left$(A$))=0 And Rs%=59
  733.           Gosub Aufhoeren
  734.         Endif
  735.         If Asc(Left$(A$))=0 And Rs%=61
  736.           Gosub Tippen
  737.           Print At(1,20)
  738.           Goto Was_nun
  739.         Endif
  740.         If Asc(Left$(A$))=0 And Rs%=62
  741.           Gosub Statistik
  742.           Print At(1,20)
  743.           Goto Was_nun
  744.         Endif
  745.       Until Asc(A$)=13 Or Rs%=60
  746.     Until Rs%=60
  747.   Endif
  748. Return
  749. '
  750. Procedure Text_aussuchen_2
  751.   If Not Abbruch!
  752.     Cls
  753.     If Startzahl%+Textzahl%=0
  754.       Print At(2,2);"Bitte warten! Die Dateien auf der Diskette werden untersucht."
  755.       '
  756.       Dir "x.y"   ! ohne diese Zeile merkt das Programm manchmal nicht,
  757.       '             wenn die Diskette gewechselt wurde.
  758.       I%=0
  759.       Do
  760.         Inc I%
  761.         I$=Diskpfad$+"UEBTEXTE\START_"+Str$(I%)+".UEB"
  762.         Exit if Not Exist(I$)
  763.       Loop
  764.       Startzahl%=I%-1
  765.       '
  766.       I%=0
  767.       Do
  768.         Inc I%
  769.         I$=Diskpfad$+"UEBTEXTE\TEXT_"+Str$(I%)+".UEB"
  770.         Exit if Not Exist(I$)
  771.       Loop
  772.       Textzahl%=I%-1
  773.     Endif
  774.     Cls
  775.     If Startzahl%+Textzahl%=0
  776.       Print At(2,2);"Auf dieser Diskette befinden sich leider keine Texte zum Abschreiben!"
  777.       Print
  778.       Print " Du brauchst die Diskette, auf der sich der Ordner ""UEBTEXTE"" befindet."
  779.       Print " In diesem Ordner müssen sich die Dateien ""START..."" oder ""TEXT..."" befinden."
  780.       Print
  781.       Print
  782.       Print " Taste oder Mausklick"
  783.       Repeat
  784.       Until Mousek Or Inkey$>""
  785.       Goto Abbruch
  786.     Endif
  787.     '
  788.     Repeat    ! Schleife zum wiederholten Bearbeiten eines Textes
  789.       '
  790.       Repeat  ! Schleife zum Aussuchen des Textes
  791.         Cls
  792.         Print At(2,2);"Auf der Diskette sind ";Startzahl%'"Einführungstexte"
  793.         Print " und ";Textzahl%'"Übungstexte gespeichert."
  794.         Print
  795.         Print " Welche Art von Texten möchtest Du bearbeiten?"
  796.         Print At(20,7);"Einführung    Übung"
  797.         Graphmode 1
  798.         Box 140,90,240,120
  799.         Box 240,90,340,120
  800.         Do
  801.           I$=Upper$(Inkey$)
  802.           Mouse X%,Y%,K%
  803.           If K% And X%>140 And X%<340 And Y%>90 And Y%<120
  804.             If X%<=240
  805.               I$="E"
  806.             Else
  807.               I$="U"
  808.             Endif
  809.           Endif
  810.           Exit if I$="E" And Startzahl%>0
  811.           Exit if (I$="Ü" Or I$="U") And Textzahl%>0
  812.           If Asc(I$)=27
  813.             Goto Abbruch
  814.           Endif
  815.         Loop
  816.         If I$="E"
  817.           Pfad$=Diskpfad$+"UEBTEXTE\START_"
  818.           Text$="Einführungs"
  819.           J%=Startzahl%
  820.         Else
  821.           Pfad$=Diskpfad$+"UEBTEXTE\TEXT_"
  822.           Text$="Übungs"
  823.           J%=Textzahl%
  824.         Endif
  825.         '
  826.         Print At(2,10);"Gib bitte die Nummer des gewünschten ";Text$;"textes ein"
  827.         Print " und tippe dann auf die Taste [Enter] :"
  828.         Repeat
  829.           Print At(41,11);
  830.           Input "",I$
  831.           I%=Abs(Int(Val(I$)))
  832.         Until I%>0 And I%<=J%
  833.         Pfad$=Pfad$+Str$(I%)+".UEB"
  834.         Gosub Text_einladen
  835.       Until A$="J" Or A$="j" Or (K%=1 And X%<235)
  836.       Gosub Text_tippen
  837.     Until I%=60
  838.     Abbruch:
  839.   Endif
  840. Return
  841. '
  842. Procedure Text_einladen
  843.   Open "I",#1,Pfad$
  844.   Uebungstext$=""
  845.   I%=0
  846.   Cls
  847.   Print
  848.   Do
  849.     Inc I%
  850.     Line input #1;Text$
  851.     Uebungstext$=Uebungstext$+Text$+Chr$(13)
  852.     If I%<24
  853.       Print 'Text$;Chr$(13);Chr$(10);
  854.     Endif
  855.     Exit if Eof(#1)
  856.   Loop
  857.   Close #1
  858.   Graphmode 1
  859.   Deffill 1,2,8            ! schwarz
  860.   Defline 1,1,2,2
  861.   Pbox 155,245,455,365
  862.   Deffill 0,2,8            ! wei₧
  863.   Pbox 150,250,450,370
  864.   Box 150,250,450,370
  865.   L%=Len(Uebungstext$)
  866.   While Asc(Right$(Uebungstext$,1))<33
  867.     Uebungstext$=Left$(Uebungstext$,L%-1)
  868.     Dec L%
  869.   Wend
  870.   Print At(22,17);"Dieser Text wurde eingelesen."
  871.   Print At(22,18);"Er hat ";L%;" Zeichen."
  872.   Print At(22,20);"Ist das der richtige?"
  873.   Print At(22,22);"  Ja    Nein"
  874.   Defline 1,1,2,2
  875.   Box 170,330,270,355
  876.   Line 220,330,220,355
  877.   Do
  878.     A$=Inkey$
  879.     Exit if A$="j" Or A$="J" Or A$="n" Or A$="N"
  880.     Mouse X%,Y%,K%
  881.     Exit if X%>170 And X%<270 And Y%>330 And Y%<355 And K%=1
  882.     If Asc(A$)=27
  883.       Goto Abbruch
  884.     Endif
  885.   Loop
  886. Return
  887. '
  888. Procedure Text_tippen
  889.   Tippanfang%=Timer
  890.   Fehler%=0
  891.   Daneben!=False
  892.   Cls
  893.   Print " Schreibe bitte den gedruckten Übungstext ab.                   [Esc] = Abbruch"
  894.   Print Chr$(27);"e"            ! Cursor einschalten
  895.   Zeile%=0
  896.   Print " ";
  897.   For I%=1 To L%
  898.     Inc Zeile%
  899.     X$=Mid$(Uebungstext$,I%,1)
  900.     Repeat
  901.       Repeat
  902.         A$=Inkey$
  903.       Until A$>""
  904.       If A$=" " And X$=Chr$(13) And Zeile%>50
  905.         A$=X$
  906.       Endif
  907.       Exit if Asc(A$)=27
  908.       If A$<>X$ And Asc(A$)<>27
  909.         Daneben!=True
  910.         Out 2,7
  911.         Inc Fehler%
  912.         Inc Wiederholung%
  913.         Inc Fehlerzahl%
  914.         Print Chr$(27);"j";      ! Cursorposition merken
  915.         Print A$;
  916.         Print Chr$(27);"k";      ! an gespeicherte Cursorposition gehen
  917.       Endif
  918.       Exit if Asc(A$)=27
  919.     Until A$=X$
  920.     Exit if Asc(A$)=27
  921.     If Daneben!
  922.       Daneben!=False
  923.       If X$<>Chr$(13)
  924.         Print Chr$(27);"p";      ! inverse Darstellung einschalten
  925.         Print X$;
  926.         Print Chr$(27);"q";      ! inverse Darstellung ausschalten
  927.       Else
  928.         Zeile%=0
  929.         Print Chr$(27);"p";      ! inverse Darstellung einschalten
  930.         Print " ";
  931.         Print Chr$(27);"q";      ! inverse Darstellung ausschalten
  932.         Print X$;Chr$(10);" ";
  933.       Endif
  934.     Else
  935.       Print X$;
  936.       If X$=Chr$(13)
  937.         Zeile%=0
  938.         Print Chr$(10);" ";
  939.       Endif
  940.     Endif
  941.     If (X$=" " Or X$="-") And Mid$(Uebungstext$,(I%+1),1)=Chr$(13)
  942.       Inc I%
  943.       Zeile%=0
  944.       Print Chr$(13);Chr$(10);" ";
  945.     Endif
  946.     Inc Tippzahl%
  947.   Next I%
  948.   Tippzeit%=Tippzeit%+Timer-Tippanfang%
  949.   Print Chr$(27);"f"                              ! Cursor ausschalten
  950.   Print
  951.   Print 'Fehler%;" Fehler"
  952.   Repeat
  953.     Print
  954.     Print " [Return] = Neuer Text    [ F2 ] = Neue Schwierigkeitsstufe"
  955.     Print " [ F1 ] = Programmende    [ F3 ] = Zwischenspiel    [ F4 ] = Statistik;"
  956.     Repeat
  957.       A$=Inkey$
  958.       I%=Asc(Right$(A$))
  959.     Until A$>""
  960.     Exit if Asc(A$)=27
  961.     If Asc(Left$(A$))=0 And I%=59    ! F1
  962.       Gosub Aufhoeren
  963.     Endif
  964.     If Asc(Left$(A$))=0 And I%=61    ! F3
  965.       Gosub Tippen
  966.     Endif
  967.     If Asc(Left$(A$))=0 And I%=62    ! F4
  968.       Gosub Statistik
  969.     Endif
  970.     Cls
  971.   Until Asc(A$)=13 Or I%=60          ! Return oder F2
  972. Return
  973. '
  974. Procedure Erklaerung2
  975.   Cls
  976.   Print
  977.   Print " Wenn Du in dieser Schwierigkeitsstufe arbeiten willst, brauchst Du ausge-"
  978.   Print " druckte Texte zum Abschreiben. Die Texte befinden sich im Ordner ""UEBTEXTE""."
  979.   Print " Wenn Du sie nicht in ausgedruckter Form vorliegen hast, kannst Du an dieser"
  980.   Print " Stelle nicht weitermachen. Tippe dann auf die Taste [Esc]."
  981.   Print
  982.   Print " Beim Abschreiben kannst Du am Zeilenende mit [Return] in die nächste Zeile"
  983.   Print " kommen - wie bei einer Schreibmaschine - oder einfach mit einem Leeranschlag"
  984.   Print " zum nächsten Wort weitergehen - wie bei einem Textverarbeitungsprogramm. Dies"
  985.   Print " funktioniert allerdings nicht am Ende eines Absatzes (mitten in einer Zeile)"
  986.   Print " oder bei Trennungsstrichen!"
  987.   Print
  988.   Print " Fehler werden durch einen Glockenton signalisiert. Das Programm arbeitet"
  989.   Print " erst weiter, wenn das richtige Zeichen getippt ist, jedoch bleibt die Stelle,"
  990.   Print " an der der Fehler gemacht wurde, markiert (und der Fehler wird gezählt)."
  991.   Print
  992.   Print " Das Ausdrucken der Übungstexte geht am besten mit Hilfe eines Textverarbei-"
  993.   Print " tungsprogramms. Zur Not geht es auch vom Desktop aus. Wie das geht, findest"
  994.   Print " Du in der Bedienungsanleitung des Computers. Bei dieser Ausdruckart wird"
  995.   Print " aber wahrscheinlich das ₧ (und vielleicht auch die Umlaute ä, ö und ü) nicht"
  996.   Print " richtig ausgedruckt."
  997.   '
  998.   Print
  999.   Print
  1000.   Print " [Return]  oder Mausklick = weiter             [Esc] = Abbruch";
  1001.   Do
  1002.     A$=Inkey$
  1003.     Exit if Asc(A$)=27 Or Asc(A$)=13
  1004.     Exit if Mousek
  1005.   Loop
  1006. Return
  1007. ' *********
  1008. Data Daumen,155,290,kleiner Finger,115,210,Ringfinger,155,210,Mittelfinger,195,210,Zeigefinger,235,210
  1009. Data Zeigefinger,355,210,Mittelfinger,395,210,Ringfinger,435,210,kleiner Finger,475,210
  1010. ' *********
  1011. ' Reihenfolge der Daten: Zeichen, X-Wert oben links, X-Wert unten rechts,
  1012. '                        Y-Wert oben links, Y-Wert unten rechts,
  1013. '                        Stufe, Art, Shift oder nicht, Fingernummer
  1014. ' ********* obere Reihe
  1015. Data Esc,35,85,130,170,9,9,9,9
  1016. Data !,85,125,130,170,6,ze,-1,1
  1017. Data Anf-strich,125,165,130,170,8,ze,-1,1
  1018. ' Kleiner Umweg, da Anführungszeichen sich nicht allein einlesen lä₧t
  1019. Data ▌,165,205,130,170,8,ze,-1,2
  1020. Data $,205,245,130,170,8,ze,-1,3
  1021. Data %,245,285,130,170,8,ze,-1,4
  1022. Data &,285,325,130,170,8,ze,-1,4
  1023. Data /,325,365,130,170,8,ze,-1,5
  1024. Data (,365,405,130,170,8,ze,-1,5
  1025. Data ),405,445,130,170,8,ze,-1,6
  1026. Data =,445,485,130,170,8,ze,-1,7
  1027. Data ?,485,525,130,170,6,ze,-1,8
  1028. Data `,525,565,130,170,8,ze,-1,8
  1029. Data ^,565,605,130,170,8,ze,-1,8
  1030. ' ********* zweite Reihe von oben
  1031. Data Tab,35,105,170,210,9,9,9,9
  1032. Data Q,105,145,170,210,9,ko,-1,1
  1033. Data W,145,185,170,210,6,ko,-1,2
  1034. Data E,185,225,170,210,6,vo,-1,3
  1035. Data R,225,265,170,210,6,ko,-1,4
  1036. Data T,265,305,170,210,6,ko,-1,4
  1037. Data Z,305,345,170,210,6,ko,-1,5
  1038. Data U,345,385,170,210,6,vo,-1,5
  1039. Data I,385,425,170,210,6,vo,-1,6
  1040. Data O,425,465,170,210,6,vo,-1,7
  1041. Data P,465,505,170,210,6,ko,-1,8
  1042. Data Ü,505,545,170,210,6,vo,-1,8
  1043. Data *,545,585,170,210,7,ze,-1,8
  1044. Data   ,585,625,170,210,9,9,9,9
  1045. ' ********* dritte Reihe von oben
  1046. Data Control,35,115,210,250,9,9,9,9
  1047. Data A,115,155,210,250,6,vo,-1,1
  1048. Data S,155,195,210,250,6,ko,-1,2
  1049. Data D,195,235,210,250,6,ko,-1,3
  1050. Data F,235,275,210,250,6,ko,-1,4
  1051. Data G,275,315,210,250,6,ko,-1,4
  1052. Data H,315,355,210,250,6,ko,-1,5
  1053. Data J,355,395,210,250,6,ko,-1,5
  1054. Data K,395,435,210,250,6,ko,-1,6
  1055. Data L,435,475,210,250,6,ko,-1,7
  1056. Data Ö,475,515,210,250,6,vo,-1,8
  1057. Data Ä,515,555,210,250,6,vo,-1,8
  1058. Data Return,555,625,210,250,9,9,9,9
  1059. ' ********* vierte Reihe von oben
  1060. Data Shift,35,95,250,290,9,9,9,9
  1061. Data >,95,135,250,290,7,ze,-1,1
  1062. Data Y,135,175,250,290,6,vo,-1,1
  1063. Data Y,135,175,250,290,6,ko,-1,1
  1064. Data X,175,215,250,290,6,ko,-1,2
  1065. Data C,215,255,250,290,6,ko,-1,3
  1066. Data V,255,295,250,290,6,ko,-1,4
  1067. Data B,295,335,250,290,6,ko,-1,4
  1068. Data N,335,375,250,290,6,ko,-1,5
  1069. Data M,375,415,250,290,6,ko,-1,5
  1070. Data ;,415,455,250,290,6,ze,-1,6
  1071. Data :,455,495,250,290,6,ze,-1,7
  1072. Data _,495,535,250,290,6,ze,-1,8
  1073. Data Shift,535,605,250,290,9,9,9,9
  1074. ' ********* unterste Reihe
  1075. Data Altern,95,155,290,330,9,9,9,9
  1076. Data  ,155,515,290,330,0,9,0,0
  1077. Data CapsLock,515,585,290,330,9,9,9,9
  1078. Data grossende,0,0,0,0,0,0,0,0
  1079. ' ********* obere Reihe
  1080. Data 1,85,125,130,170,7,za,0,1
  1081. Data 2,125,165,130,170,7,za,0,1
  1082. Data 3,165,205,130,170,7,za,0,2
  1083. Data 4,205,245,130,170,7,za,0,3
  1084. Data 5,245,285,130,170,7,za,0,4
  1085. Data 6,285,325,130,170,7,za,0,4
  1086. Data 7,325,365,130,170,7,za,0,5
  1087. Data 8,365,405,130,170,7,za,0,5
  1088. Data 9,405,445,130,170,7,za,0,6
  1089. Data 0,445,485,130,170,7,za,0,7
  1090. Data ₧,485,525,130,170,7,ze,0,8
  1091. Data ',525,565,130,170,8,ze,0,8
  1092. Data #,565,605,130,170,8,ze,0,8
  1093. ' ********* zweite Reihe
  1094. Data q,105,145,170,210,9,ko,0,1
  1095. Data w,145,185,170,210,1,ko,0,2
  1096. Data e,185,225,170,210,1,vo,0,3
  1097. Data r,225,265,170,210,1,ko,0,4
  1098. Data t,265,305,170,210,2,ko,0,4
  1099. Data z,305,345,170,210,2,ko,0,5
  1100. Data u,345,385,170,210,1,vo,0,5
  1101. Data i,385,425,170,210,1,vo,0,6
  1102. Data o,425,465,170,210,1,vo,0,7
  1103. Data p,465,505,170,210,1,ko,0,8
  1104. Data ü,505,545,170,210,5,vo,0,8
  1105. Data +,545,585,170,210,7,ze,0,8
  1106. ' ********* dritte Reihe von oben
  1107. Data a,115,155,210,250,0,vo,0,1
  1108. Data s,155,195,210,250,0,ko,0,2
  1109. Data d,195,235,210,250,0,ko,0,3
  1110. Data f,235,275,210,250,0,ko,0,4
  1111. Data g,275,315,210,250,2,ko,0,4
  1112. Data h,315,355,210,250,2,ko,0,5
  1113. Data j,355,395,210,250,0,ko,0,5
  1114. Data k,395,435,210,250,0,ko,0,6
  1115. Data l,435,475,210,250,0,ko,0,7
  1116. Data ö,475,515,210,250,0,vo,0,8
  1117. Data ä,515,555,210,250,5,vo,0,8
  1118. ' ************ vierte Reihe von oben
  1119. Data <,95,135,250,290,7,ze,0,1
  1120. Data y,135,175,250,290,4,vo,0,1
  1121. Data x,175,215,250,290,4,ko,0,2
  1122. Data c,215,255,250,290,4,ko,0,3
  1123. Data v,255,295,250,290,3,ko,0,4
  1124. Data b,295,335,250,290,3,ko,0,4
  1125. Data n,335,375,250,290,3,ko,0,5
  1126. Data m,375,415,250,290,3,ko,0,5
  1127. Data ",",415,455,250,290,4,ze,0,6
  1128. Data .,455,495,250,290,4,ze,0,7
  1129. Data -,495,535,250,290,4,ze,0,8
  1130. ' ********* Zeichen, die aus mehreren Buchstaben bestehen
  1131. Data Qu,0,0,0,0,6,ko,-1,9
  1132. Data qu,0,0,0,0,1,ko,0,9
  1133. Data tz,0,0,0,0,2,ko,0,9
  1134. Data st,0,0,0,0,2,ko,0,9
  1135. Data ck,0,0,0,0,4,ko,0,9
  1136. Data ng,0,0,0,0,3,ko,0,9
  1137. Data Ch,0,0,0,0,6,ko,-1,9
  1138. Data ch,0,0,0,0,4,ko,0,9
  1139. Data Sch,0,0,0,0,6,ko,-1,9
  1140. Data sch,0,0,0,0,4,ko,0,9
  1141. Data ei,0,0,0,0,1,vo,0,9
  1142. Data eu,0,0,0,0,1,vo,0,9
  1143. Data au,0,0,0,0,1,vo,0,9
  1144. Data ai,0,0,0,0,1,vo,0,9
  1145. Data äu,0,0,0,0,5,vo,0,9
  1146. Data ee,0,0,0,0,1,vo,0,9
  1147. Data oo,0,0,0,0,1,vo,0,9
  1148. Data ie,0,0,0,0,1,vo,0,9
  1149. ' *********
  1150. Data ende,0,0,0,0,0,0,0,0
  1151. ' *********
  1152. 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,Ä,Ü
  1153. Spielstufen:
  1154. Data 8,16,20,24,27,29,29,29,29,29
  1155. ' *********
  1156. ' Die folgenden Texte werden bei der Einführung eingelesen.
  1157. ' Vorne steht die dazugehörige Schwierigkeitsstufe. Es dürfen beliebig
  1158. ' viele neue Übungszeilen hinzugefügt werden. Bei der Einführung werden
  1159. ' sie der Reihe nach immer wieder von vorne eingelesen.
  1160. ' *********
  1161. Einfuehrung:
  1162. Data 0,asdfölkj fdsajklö adsföklj afkjöfls djslakös jösfklfaö
  1163. Data 1,aqswdefrjukiloöpasdfqwerölkjpoiufrfjjujöpöpöfqfaqaqf
  1164. Data 2,fgfgfgjhjhjhftftftjzjzjzfgtfrfjhzjatfagafatarföjöhözöujsrzltahrögu
  1165. Data 3,fvfbfvfbjmjnjmjnfrftfgfbfvjujzjhjnjmgztuvmbnfjghtzruzntumnhutfgrbfjuzht
  1166. Data 4,"aysxdck,l.ö-fyfxfcj,j.j-scyak-.kc,daqayswsxdedcqyqyakik,lol.öpöp-p-ö"
  1167. Data 5,"öäöäöpöüöpöüöpö₧öpö₧öjöjäjüjpj₧j-jöj-jäjüjpj₧käkökükpk-kök₧k"
  1168. Data 6,"AaBbCcdDeEFfGghHiIjJKkLlmMNnoOpPQqrRsSTtUuvVWwXxYyzZäÄöÖüÜ"
  1169. Data 6,"k,k;k,k;l.l:l.l:ö-ö_ö-ö-öaqa!aqa!₧ö?ö₧ö?kik,lol.öpö-j-j_jäj?a!y!-_-?"
  1170. Data 7,a1a2s3d4f5f6j7k8l9ö0+0*8as12df34fg56jk78lö90a<a>y<y>öäö+ö*ö₧ö
  1171. Data 7,"aqa1a2aqayasws3swsxsded4dedcdfrf5frf6fvfjuj7juj8jmjkik9kik,klol0lol.l"
  1172. Data 7,1357924680+17364941349+7085461028157+93641467930353+04891349762
  1173. Data 8,"1!a2"s3▌d4$f5%f6&g7/h8(9)k0=l'`ö'`ä#^+ä#^+ä"
  1174. Data 8,"a1aya2aya"frf5f%fvf6f&j8j7j(j/jnö₧ö?ö'ö`ööäö+ö#ö^ö"
  1175. Data 9,9
  1176.