home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 03 / spiel / tastatur.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1988-09-04  |  3.6 KB  |  95 lines

  1. (**********************************************************)
  2. (*                                                        *)
  3. (*   Filename TASTATUR.PAS                                *)
  4. (*                                                        *)
  5. (*   TOOLBOX-Spezial III Echtzeitverarbeitung             *)
  6. (*                                                        *)
  7. (*   (C) TOOLBOX und Thomas Lang 1988                     *)
  8. (*                                                        *)
  9. (*   Dieses File enthält die Bearbeitung der Tastatur     *)
  10. (*   bei dem Anwenderprogramm. Die Aufgabe besteht darin, *)
  11. (*   die Tastatur abzufragen, bei Buchstaben diese zu     *)
  12. (*   verarbeiten, und ein Geräusch auszugeben. Es wird    *)
  13. (*   Periodic 2 benutzt.                                  *)
  14. (*                                                        *)
  15. (**********************************************************)
  16.  
  17. Procedure EingabeAuswerten(Ch:Char);
  18. Begin
  19.    If (Ord(Ch)>=Ord('A')) And (Ord(Ch)<=Ord('Z')) Then Begin
  20.                               (* identisch zu *)
  21.                               (* Ch In ['A'..'Z'] *)
  22.                               (* aber schneller *)
  23.  
  24.       GotoXY(EingabeSpalte+AnzahlEingaben,
  25.              FolgeZeile+FolgeNummer);
  26.       Write(Ch);
  27.  
  28.       If (Ch=Folge[AnzahlEingaben+1]) Then Begin
  29.                               (* Character ist Ok *)
  30.          AnzahlEingaben:=AnzahlEingaben+1;
  31.          If (AnzahlEingaben=FolgenLaenge) Then Begin
  32.                               (* Folge komplett richtig *)
  33.             FolgeEingeben:=False;
  34.             DruckText('     richtig');
  35.             DruckLn;
  36.             GotoXY(BewertungsSpalte,FolgeZeile+FolgeNummer);
  37.             Write('richtig');
  38.             NoSound;
  39.             AnzahlRichtig:=AnzahlRichtig+1;
  40.             End;              (* zu Folge komplett *)
  41.          End                  (* zu Character ist Ok *)
  42.  
  43.       Else Begin              (* falscher Buchstabe *)
  44.          FolgeOk:=False;
  45.          FolgeEingeben:=False;
  46.          NoSound;
  47.          DruckInteger(AnzahlEingaben,6);
  48.          DruckText(' Buchstaben Ok, dann Fehler');
  49.          DruckLn;
  50.          GotoXY(BewertungsSpalte,FolgeZeile+FolgeNummer);
  51.          Write(AnzahlEingaben:1);
  52.          Write(' Ok, dann Fehler');
  53.          RichtigBuchstaben:=RichtigBuchstaben+
  54.                             AnzahlEingaben;
  55.          End;                 (* zu falschem Buchstaben *)
  56.  
  57.       End;                    (* zu Ch In A..Z *)
  58.                               (* kein Else, da andere *)
  59.                               (* Zeichen nicht beachtet *)
  60.                               (* werden *)
  61. End;
  62.  
  63. Procedure PPeriodic2;         (* Aufgabe der Per2 *)
  64. Var
  65.    Ch:Char;
  66. Begin
  67.    If Keypressed Then Begin   (* nur wenn Taste gedrückt *)
  68.  
  69.       Read(Kbd,Ch);           (* lese ohne Echo *)
  70.       Ch:=UpCase(Ch);         (* und in Großbuchstaben *)
  71.                               (* umwandeln *)
  72.  
  73.       If FolgeEingeben Then
  74.          EingabeAuswerten(Ch)
  75.  
  76.       Else
  77.          If RestDrucken Then Begin
  78.             If (Ch=' ') Then
  79.                Ende:=True;    (* abbrechen *)
  80.             End;              (* zu RestDrucken *)
  81.  
  82.       End;                    (* zu KeyPressed *)
  83.  
  84.    If (FolgeEingeben=True) Then Begin
  85.                               (* weder falscher Buchstabe *)
  86.                               (* noch fertig *)
  87.       Frequenz:=Frequenz+SoundDelta;
  88.       Sound(Round(Frequenz));
  89.       End;
  90.  
  91.    TastenZeit:=TastenZeit+TastenDelta;
  92.    PutPerAbs(2,TastenZeit);   (* wieder neu in Aufgaben- *)
  93.                               (* liste eintragen. *)
  94. End;
  95.