home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 08 / fliege.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-07-10  |  4.8 KB  |  108 lines

  1. {$R+,B-,I+,V+}
  2.  
  3. (* die folgenden Compiler Anweisungen werden benutzt: *)
  4.                                    (* R+ = mit Index Range Check *)
  5.                                    (* R- = ohne ... *)
  6.                                    (* B+ = CON: device fuer IO *)
  7.                                    (* B- = TRM: ... *)
  8.                                    (* I+ = mit IO Error Handling *)
  9.                                    (* I- = ohne ... *)
  10.                                    (* V+ = mit Typ Check in VAR Parametern *)
  11.                                    (* V- = ohne ... *)
  12.  
  13. PROGRAM FLIEGE(Input,Output,Kbd);  (* Tastatur wird direkt abgefragt ! *)
  14.  
  15. (****************************************************************************)
  16. (*                                                                          *)
  17. (*                            Deklarationen                                 *)
  18. (*                                                                          *)
  19. (****************************************************************************)
  20.  
  21. CONST
  22.    ZEILEN   = 25 ;                 (* auf dem Bildschirm *)
  23.    SPALTEN  = 80 ;                 (* ... *)
  24.  
  25.                                    (* es folgen einige ASCII-Codes *)
  26.    GRENZE   = 219 ;                (* Spielfeldbegrenzung *)
  27.    SPACE    = 32 ;                 (* freier Platz *)
  28.    SPIELER  = 1 ;
  29.    FLIEGE   = 15 ;                 (* noch nicht gefangene Fliege *)
  30.    HINDERNIS= 177 ;                (* gefangene Fliege *)
  31.    MITTE    = 176 ;                (* ausgesparter Bereich in der Mitte *)
  32.  
  33.    MAXANZAHL= 10 ;                 (* maximale Anzahl lebender Fliegen *)
  34.    MAXRUNDEN= 10000 ;              (* maximale Anzahl Runden *)
  35.  
  36.    NOTE_C   = 131 ;                (* ungefaehre Frequenz fuer C *)
  37.    NOTE_D   = 587 ;                (* fuer D, 2 Oktaven hoeher *)
  38.    NOTE_G   = 784 ;                (*  ... G *)
  39.    BELL     = 7;                   (* Klingelzeichen fuer CP/M-Rechner *)
  40.    BACKSPACE = 8;                  (* Rueckwaerts loeschen *)
  41.  
  42.    LESE     = 0 ;                  (* fuer Kennung, ob schreiben oder lesen *)
  43.    SCHREIBE = 1 ;                  (*  ... *)
  44.  
  45.                                    (* Index fuer Daten in Datenfile *)
  46.    ANZAHL   = 1 ;                  (* Fliegen *)
  47.    BEWEGE   = 2 ;                  (* Beweglichkeit *)
  48.    WARTEN   = 3 ;                  (* Zaehler fuer Warteschleife *)
  49.    LAENGE   = 4 ;                  (* des Spiels *)
  50.    MITSOUND = 5 ;                  (* Spiel mit oder ohne Geraeuschen *)
  51.    T_LI     = 6 ;                  (* Tastencode fuer Spielersteuerung *)
  52.    T_RE     = 7 ;
  53.    T_HO     = 8 ;
  54.    T_RU     = 9 ;
  55.  
  56. TYPE
  57.    BEWEGLICH= RECORD               (* bewegl. Objekte: Spieler, Fliege *)
  58.                  Pos:              (* Spalte und Zeile *)
  59.                     RECORD
  60.                       S, Z : INTEGER ;
  61.                     END ;
  62.                  RICHTUNG: (LI, RE, HO, RU) ;     (* die 4 Richtungen *)
  63.               END ;
  64.  
  65. VAR
  66.                                    (* zuerst einfachere Variable *)
  67.    PUNKTE,                         (* Anzahl gefangener Fliegen *)
  68.    P_S, P_Z,                       (* wo Punktestand angezeigt wird *)
  69.    L_RAND,                         (* Rand des Spielfelds, um Punkt *)
  70.    R_RAND,                         (*    rechts unten frei zu lassen *)
  71.    WIEVIELE,                       (* wird Anzahl der Fliegen als Zahl *)
  72.    TRAEGE,                         (*  .. ebenso ihre Beweglichkeit *)
  73.    WARTEZAHL,                      (*  .. und Zaehler fuer Warteschleife *)
  74.    WIELANGE,                       (*  .. und Rundenzaehler *)
  75.    INDEX    : INTEGER ;            (* Hilfsvariable *)
  76.  
  77.                                    (* zusammengesetzte Variable *)
  78.    SCHIRM   : ARRAY [1..SPALTEN,1..ZEILEN] OF CHAR ;
  79.    FLY      : ARRAY [1..MAXANZAHL] OF BEWEGLICH ; (* alle Fliegen *)
  80.    YOU      : BEWEGLICH ;          (* Spieler *)
  81.    DAT_FILE : ARRAY [1..9] OF CHAR ;    (* Daten von file FLYCOM.DAT *)
  82.  
  83. (*$I FLIEGE.INC *)
  84.  
  85. (****************************************************************************)
  86. (*                                                                          *)
  87. (*                            Hauptprogramm                                 *)
  88. (*                                                                          *)
  89. (****************************************************************************)
  90.  
  91. BEGIN
  92.    INIT_ALLES ;
  93.    REPEAT
  94.       START_WERTE ;                (* diese beiden Prozeduren sind nicht in *)
  95.       START_BILD ;                 (* Initialisieren, da sonst kein Restart *)
  96.       FOR INDEX := WIELANGE DOWNTO 0
  97.       DO BEGIN
  98.          ALLE_FLIEGEN ;
  99.          WARTE_ETWAS ;
  100.          BEWEGE_SPIELER ;
  101.       END ;
  102.       ENDEBILD ;
  103.    UNTIL JA_NEIN ('J') = 'N' ;
  104.    ClrScr ;
  105.    WriteLn ('Tschuess !!') ;
  106.    Delay (2000) ;
  107. END.
  108.