home *** CD-ROM | disk | FTP | other *** search
- (**********************************************************)
- (* *)
- (* Filename INITIAL.PAS *)
- (* *)
- (* TOOLBOX-Spezial III Echtzeitverarbeitung *)
- (* *)
- (* (C) TOOLBOX und Thomas Lang 1988 *)
- (* *)
- (* Dieses File enthält die Initialisierungsroutinen *)
- (* bei dem Anwenderprogramm. Diese bestehen aus: *)
- (* . Zuweisung von Werten (bei Turbo könnte auch ein *)
- (* Initialwert angegeben werden, aber dies ist bei *)
- (* Pascal nicht Standard, deswegen wird darauf ver- *)
- (* zichtet) *)
- (* . Ausgabe einer kurzen Erklärung des Spiels *)
- (* *)
- (**********************************************************)
-
- Procedure PErklaerung;
- Var
- Ch:Char;
- R:Real;
-
- Procedure InitRandom; (* lokale Prozedur *)
- Begin
- (* jetzt eine Konstruktion *)
- (* um Random zu initiali- *)
- (* sieren. Kann evtl. auch *)
- (* weggelassen werden *)
- WriteLn('beliebige Taste drücken, um weiterzumachen ');
-
- Repeat
- R:=Random;
- Until (KeyPressed=True);
-
- Read(Kbd,Ch); (* Tastaturcode entfernen *)
- WriteLn;
- End;
-
- Begin (* von PErklaerung *)
- ClrScr; (* Bildschirm löschen *)
- (* evtl. anpassen *)
-
- Write('Willkommen zu diesem kleinen Spiel, das ');
- WriteLn('im Rahmen einer Serie über');
- Write('Echtzeitprogrammierung entwickelt wurde. ');
- WriteLn('Die Spielregeln lauten:');
- WriteLn;
- WriteLn;
- Write('Der Rechner generiert zufällig eine Folge ');
- WriteLn('von Buchstaben, die am Bild-');
- Write('schirm dargestellt werden. Der Bediener ');
- WriteLn('(Spieler) muß nun diese Buch-');
- Write('staben eingeben, wobei aber beim ersten ');
- WriteLn('Fehler abgebrochen wird und für');
- Write('jede neue Folge steht etwas weniger Zeit ');
- WriteLn('zum eingeben zur Verfügung.');
- Write('Nach 15 Folgen ist das Spiel beendet. Auf ');
- WriteLn('dem Drucker wird jede Folge');
- Write('und auch eine Meldung ausgegeben, ob diese ');
- WriteLn('(bzw. wieviel davon) korrekt');
- Write('eingegeben wurde. Bei Spielende wird eine ');
- WriteLn('Art von kleiner Statistik auf');
- Write('dem Drucker und auf dem Bildschirm ausgegeben,');
- WriteLn(' die unter Umständen für');
- Write('eine Auswertung der Belastungsmöglichkeit des ');
- WriteLn('Spielers herangezogen');
- Write('werden könnte; aber dies bleibt dem dafür ');
- WriteLn('ausgebildeten Personenkreis');
- Write('vorbehalten und wird nicht vom Programm ');
- WriteLn('übernommen. Der Zustand des');
- Write('Druckers wird parallel am Bildschirm ');
- WriteLn('angezeigt. Bei jeder Folge von');
- Write('Buchstaben wird ein Geräusch ausgegeben, ');
- WriteLn('dessen Frequenz von der');
- Write('verbleibenden Zeit (für die aktuelle Folge) ');
- WriteLn('abhängig ist.');
- WriteLn;
- WriteLn;
-
- InitRandom;
-
- DruckerNummer:=
- FrageInteger('Drucker eingeben (LPT?)',1,3)-1;
-
- ClrScr;
- GotoXY(19,1);
- Write('Streß-Analysator-Spiel, (C) Thomas Lang');
-
- GotoXY(FolgeSpalte,FolgeZeile-2);
- Write('generierte Folge');
- GotoXY(EingabeSpalte,FolgeZeile-2);
- Write('Eingaben');
- GotoXY(BewertungsSpalte,FolgeZeile-2);
- Write('richtig ?');
-
- GotoXY(DruckSpalte,DruckZeile-2);
- Write('DruckerStatus');
-
- End;
-
- Procedure PInit;
- Begin
- (* zuerst Wertzuweisungen *)
-
- DruckIn:=1; (* DruckBuffer als Fifo *)
- DruckOut:=1; (* initialisieren *)
- DruckLeer:=True;
- RestDrucken:=False;
-
- RichtigBuchstaben:=0;
- AnzahlRichtig:=0;
- RichtigUnvoll:=0;
- AnzahlUnvoll:=0;
- FolgenGenerier:=True;
- FolgeNummer:=0;
- FolgenZeit:=Folge1Zeit; (* Zeit für 1. Folge *)
-
- PErklaerung;
-
- PutPerDelta(1,100.0); (* 1. Folge nach 1 Sekunde *)
- PutPerDelta(3,DruckDeltaNix); (* und für Drucken *)
- (* ebenfalls in Liste der *)
- (* Aufgaben eintragen *)
-
- End;