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

  1. (**********************************************************)
  2. (*                                                        *)
  3. (*   Filename INITIAL.PAS                                 *)
  4. (*                                                        *)
  5. (*   TOOLBOX-Spezial III Echtzeitverarbeitung             *)
  6. (*                                                        *)
  7. (*   (C) TOOLBOX und Thomas Lang 1988                     *)
  8. (*                                                        *)
  9. (*   Dieses File enthält die Initialisierungsroutinen     *)
  10. (*   bei dem Anwenderprogramm. Diese bestehen aus:        *)
  11. (*    . Zuweisung von Werten (bei Turbo könnte auch ein   *)
  12. (*      Initialwert angegeben werden, aber dies ist bei   *)
  13. (*      Pascal nicht Standard, deswegen wird darauf ver-  *)
  14. (*      zichtet)                                          *)
  15. (*    . Ausgabe einer kurzen Erklärung des Spiels         *)
  16. (*                                                        *)
  17. (**********************************************************)
  18.  
  19. Procedure PErklaerung;
  20. Var
  21.     Ch:Char;
  22.     R:Real;
  23.  
  24. Procedure InitRandom;         (* lokale Prozedur *)
  25. Begin
  26.                               (* jetzt eine Konstruktion *)
  27.                               (* um Random zu initiali- *)
  28.                               (* sieren. Kann evtl. auch *)
  29.                               (* weggelassen werden *)
  30.    WriteLn('beliebige Taste drücken, um weiterzumachen ');
  31.  
  32.    Repeat
  33.       R:=Random;
  34.    Until (KeyPressed=True);
  35.  
  36.    Read(Kbd,Ch);              (* Tastaturcode entfernen *)
  37.    WriteLn;
  38. End;
  39.  
  40. Begin                         (* von PErklaerung *)
  41.    ClrScr;                    (* Bildschirm löschen *)
  42.                               (* evtl. anpassen *)
  43.  
  44.    Write('Willkommen zu diesem kleinen Spiel, das ');
  45.    WriteLn('im Rahmen einer Serie über');
  46.    Write('Echtzeitprogrammierung entwickelt wurde. ');
  47.    WriteLn('Die Spielregeln lauten:');
  48.    WriteLn;
  49.    WriteLn;
  50.    Write('Der Rechner generiert zufällig eine Folge ');
  51.    WriteLn('von Buchstaben, die am Bild-');
  52.    Write('schirm dargestellt werden. Der Bediener ');
  53.    WriteLn('(Spieler) muß nun diese Buch-');
  54.    Write('staben eingeben, wobei aber beim ersten ');
  55.    WriteLn('Fehler abgebrochen wird und für');
  56.    Write('jede neue Folge steht etwas weniger Zeit ');
  57.    WriteLn('zum eingeben zur Verfügung.');
  58.    Write('Nach 15 Folgen ist das Spiel beendet. Auf ');
  59.    WriteLn('dem Drucker wird jede Folge');
  60.    Write('und auch eine Meldung ausgegeben, ob diese ');
  61.    WriteLn('(bzw. wieviel davon) korrekt');
  62.    Write('eingegeben wurde. Bei Spielende wird eine ');
  63.    WriteLn('Art von kleiner Statistik auf');
  64.    Write('dem Drucker und auf dem Bildschirm ausgegeben,');
  65.    WriteLn(' die unter Umständen für');
  66.    Write('eine Auswertung der Belastungsmöglichkeit des ');
  67.    WriteLn('Spielers herangezogen');
  68.    Write('werden könnte; aber dies bleibt dem dafür ');
  69.    WriteLn('ausgebildeten Personenkreis');
  70.    Write('vorbehalten und wird nicht vom Programm ');
  71.    WriteLn('übernommen. Der Zustand des');
  72.    Write('Druckers wird parallel am Bildschirm ');
  73.    WriteLn('angezeigt. Bei jeder Folge von');
  74.    Write('Buchstaben wird ein Geräusch ausgegeben, ');
  75.    WriteLn('dessen Frequenz von der');
  76.    Write('verbleibenden Zeit (für die aktuelle Folge) ');
  77.    WriteLn('abhängig ist.');
  78.    WriteLn;
  79.    WriteLn;
  80.  
  81.    InitRandom;
  82.  
  83.    DruckerNummer:=
  84.               FrageInteger('Drucker eingeben (LPT?)',1,3)-1;
  85.  
  86.    ClrScr;
  87.    GotoXY(19,1);
  88.    Write('Streß-Analysator-Spiel, (C) Thomas Lang');
  89.  
  90.    GotoXY(FolgeSpalte,FolgeZeile-2);
  91.    Write('generierte Folge');
  92.    GotoXY(EingabeSpalte,FolgeZeile-2);
  93.    Write('Eingaben');
  94.    GotoXY(BewertungsSpalte,FolgeZeile-2);
  95.    Write('richtig ?');
  96.  
  97.    GotoXY(DruckSpalte,DruckZeile-2);
  98.    Write('DruckerStatus');
  99.  
  100. End;
  101.  
  102. Procedure PInit;
  103. Begin
  104.                               (* zuerst Wertzuweisungen *)
  105.  
  106.    DruckIn:=1;                (* DruckBuffer als Fifo *)
  107.    DruckOut:=1;               (* initialisieren *)
  108.    DruckLeer:=True;
  109.    RestDrucken:=False;
  110.  
  111.    RichtigBuchstaben:=0;
  112.    AnzahlRichtig:=0;
  113.    RichtigUnvoll:=0;
  114.    AnzahlUnvoll:=0;
  115.    FolgenGenerier:=True;
  116.    FolgeNummer:=0;
  117.    FolgenZeit:=Folge1Zeit;    (* Zeit für 1. Folge *)
  118.  
  119.    PErklaerung;
  120.  
  121.    PutPerDelta(1,100.0);      (* 1. Folge nach 1 Sekunde *)
  122.    PutPerDelta(3,DruckDeltaNix);   (* und für Drucken *)
  123.                               (* ebenfalls in Liste der *)
  124.                               (* Aufgaben eintragen *)
  125.  
  126. End;
  127.