home *** CD-ROM | disk | FTP | other *** search
- (**********************************************************)
- (* *)
- (* Filename FOLGE.PAS *)
- (* *)
- (* TOOLBOX-Spezial III Echtzeitverarbeitung *)
- (* *)
- (* (C) TOOLBOX und Thomas Lang 1988 *)
- (* *)
- (* Dieses File enthält den Teil des Spiels, der eine *)
- (* Folge von Buchstaben generiert bzw. den Timeout *)
- (* dafür überwacht. Dies wird mit der Periodic Nummer *)
- (* 1 gemacht. *)
- (* *)
- (**********************************************************)
-
- Procedure FolgeAusgeben;
- Var
- I:Integer;
- Begin
- DruckText('Folge ');
- DruckInteger(FolgeNummer,2);
- DruckText(': ');
- GotoXY(FolgeSpalte,FolgeZeile+FolgeNummer);
- Write(FolgeNummer:2);
- GotoXY(FolgeSpalte+5,FolgeZeile+FolgeNummer);
- For I:=1 To FolgenLaenge Do Begin
- Write(Folge[I]);
- DruckChar(Folge[I]);
- End;
- GotoXY(EingabeSpalte,FolgeZeile+FolgeNummer);
- End;
-
- Procedure Statistik;
- Begin
- DruckLn;
- DruckText('Es wurden ');
- DruckInteger(AnzahlRichtig,2);
- DruckText(' Folgen richtig eingegeben, ');
- GotoXY(1,FolgeZeile+MaxFolgen+1);
- Write('Auswertung: Es wurden ');
- Write(AnzahlRichtig);
- Write(' Folgen richtig eingegeben, ');
- If (AnzahlRichtig<MaxFolgen) Then Begin
- DruckLn;
- DruckInteger(MaxFolgen-AnzahlRichtig-AnzahlUnvoll,2);
- DruckText(' Folgen falsch mit ');
- DruckInteger(RichtigBuchstaben,2);
- DruckText(' richtigen Buchstaben (von ');
- DruckInteger(FolgenLaenge*(MaxFolgen
- -AnzahlRichtig-AnzahlUnvoll),2);
- DruckText(')');
- DruckLn;
- DruckInteger(AnzahlUnvoll,2);
- DruckText(' Folgen unvollständig mit ');
- DruckInteger(RichtigUnvoll,2);
- DruckText(' richtigen Buchstaben (von ');
- DruckInteger(FolgenLaenge*AnzahlUnvoll,2);
- DruckText(')');
- DruckLn;
- WriteLn;
- Write(MaxFolgen-AnzahlRichtig-AnzahlUnvoll:2);
- Write(' Folgen falsch mit ');
- Write(RichtigBuchstaben:2);
- Write(' richtigen Buchstaben (von ');
- Write(FolgenLaenge*(MaxFolgen
- -AnzahlRichtig-AnzahlUnvoll):2);
- WriteLn(')');
- Write(AnzahlUnvoll:2);
- Write(' Folgen unvollständig mit ');
- Write(RichtigUnvoll:2);
- Write(' richtigen Buchstaben (von ');
- Write(FolgenLaenge*AnzahlUnvoll:2);
- WriteLn(')');
- End
- Else Begin
- DruckText('keine war falsch oder unvollständig');
- Write('keine war falsch oder unvollständig');
- End;
- DruckLn;
- GotoXY(18,25);
- Write('Statistik ausdrucken, abbrechen mit Leertaste');
- RestDrucken:=True;
- End;
-
- Procedure PPeriodic1;
- Var
- I:Integer;
- Ch:Char;
- Begin
- If FolgenGenerier Then Begin (* also generieren *)
- FolgeNummer:=FolgeNummer+1;
- AnzahlEingaben:=0;
- FolgeOk:=True;
- FolgeEingeben:=True;
- FolgenGenerier:=False;
- If FolgeNummer>1 Then
- FolgenZeit:=FolgenZeit-FolgenDelta;
- Frequenz:=MinFrequenz;
- SoundDelta:=(MaxFrequenz-MinFrequenz)/
- (FolgenZeit/TastenDelta);
- For I:=1 To FolgenLaenge Do Begin
- (* beliebigen Buchstaben *)
- (* von A..Z generieren *)
- Folge[I]:=Chr(Ord('A')+Random(Ord('Z')-Ord('A')));
-
- If (I>1) And (Folge[I]=Folge[I-1]) Then Begin
- (* gleiche Buchstaben *)
- (* sollen nicht direkt *)
- (* aufeinander folgen *)
- If Folge[I]<>'Z' Then
- Folge[I]:=Chr(Ord(Folge[I])+1)
- Else
- Folge[I]:='A';
- End;
- End;
- FolgeAusgeben;
- If FolgeNummer=1 Then Begin (* nur bei 1. Folge *)
- (* Aufgabe der Tastaturab- *)
- (* frage in Aufgabenliste *)
- (* eintragen, danach trägt *)
- (* sie sich selbst ein *)
-
- TastenZeit:=TimeNow; (* kommt also sofort dran *)
- PutPerAbs(2,TastenZeit);
- End;
-
- PutPerDelta(1,FolgenZeit);
- End
-
- Else Begin (* TimeOut überwachen *)
- NoSound;
- If (AnzahlEingaben<FolgenLaenge) And
- (FolgeOk) Then Begin
- (* nicht alle eingegeben *)
- (* aber keinen Fehler *)
- DruckInteger(AnzahlEingaben,6);
- DruckText(' Buchstaben Ok, dann Zeit abgelaufen');
- DruckLn;
- GotoXY(BewertungsSpalte,FolgeZeile+FolgeNummer);
- Write(AnzahlEingaben:1);
- Write(' Ok, dann Zeit');
- FolgeEingeben:=False;
- AnzahlUnvoll:=AnzahlUnvoll+1;
- RichtigUnvoll:=RichtigUnvoll+AnzahlEingaben;
- End;
- If FolgeNummer<MaxFolgen Then Begin
- FolgenGenerier:=True;
- PutPerDelta(1,500.0); (* und bald neue Folge *)
- End
- Else
- Statistik;
- End;
- End;