package Minesweeper is -- EXCEPTION Falsche_Eingabe -- -- Wird aufgerufen falls eine Eingabe ausserhalb des erlaubten Bereichs -- liegt Falsche_Eingabe : exception; -- TYPE Spielbrett -- -- Spielbrett das aktuelle Informationen ueber das Spiel enthaelt -- Folgende Zustaende sind moeglich: -- -1 - Nicht aufgedecktes freies Feld -- -2 - Nicht aufgedeckte Mine -- -3 - Mit Flage gekennzeichnete Mine -- -4 - Mit Flage gekennzeichnetes freies Feld -- 0 - Aufgedeckt und keine Minen in der Naehe -- n > 0 - Aufgedeckt und n Minen in der Naehe, 0 < n <= 8 type Spielbrett is array (Positive range <>, Positive range <>) of Integer; -- PROCEDURE InitialisiereSpiel -- -- Die Procedure initialisiert das Spielbrett. So werden eine gewisse -- Anzahl von Minen auf das Spielfeld gelegt, abhaengig von der -- a procedure InitialisiereSpiel (Brett : in out Spielbrett; Schwierigkeit : in Integer); -- PROCEDURE DeckeNullenAuf -- -- Alle Felder die an (Vertikal, Horizontal) anliegen werden aufgedeckt. -- Falls das aufgedeckte Feld ebenfalls eine 0 ist, so wird die Procedure -- rekursiv aufgerufen um weitere Felder aufzudecken procedure DeckeNullenAuf (Brett : in out Spielbrett; Vertikal : in Integer; Horizontal : in Integer); -- FUNCTION BerechneGefahr -- -- Die Funktion berechnet wieviele Minen um das Feld (Vertikal,Horizontal) -- liegen und gibt diese Zahl zurueck function BerechneGefahr (Brett : in Spielbrett; Vertikal : in Integer; Horizontal : in Integer) return Integer; -- FUNCTION CheckeAus -- -- Die Funktion checkt ob das Spiel gewonnen ist -- gewonnen ist das Spiel falls alle freien Felder aufgedeckt sind function CheckeAus (Brett : in Spielbrett) return Boolean; -- PROCEDURE Ausgabe -- -- Die Prozedur gibt das aktuelle Spielbrett aus procedure Ausgabe (Brett : in Spielbrett); -- PROCEDURE AusgabeVerloren -- -- Die Prozedur gibt das Spielbrett aus und zeigt wo die Minen liegen procedure AusgabeVerloren (Brett : in Spielbrett); end Minesweeper;