Einlesen eines Labyrinths

 [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

PathFinder.m2
PROCEDURE ReadMaze(input: FILE;
                   VAR maze: Maze;
                   VAR width, height: MazeSize;
                   VAR entry, exit: MazeIndex) : BOOLEAN;
   VAR
      line, column: MazeSize;
      ch: CHAR; (* zuletzt eingelesenes Zeichen *)
BEGIN
   line := 0; column := 0; width := 0;
   WHILE Fgetc(ch, input) DO
      IF ch = nl THEN
         INC(line); column := 0;
      ELSE
         maze[line, column] := ch; INC(column);
      END;
   END;
   height := line; width := column;
   RETURN TRUE
END ReadMaze;

*So einfach könnte das Einlesen eines Labyrinths sein, wenn auf Überprüfungen verzichtet wird.
 
*Ein Teil der Überprüfungen und die Ermittlung von Ein- und Ausgang könnte wirklich auf später verschoben werden. Einige Überprüfungen (wie die Einhaltung der maximalen Seitenlängen) müssen jedoch in jedem Fall beim Einlesen durchgeführt werden.
 
*Dieser erster Entwurf verzichtet noch auf die Bestimmung von entry und exit.
 

 [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1999 Andreas Borchert, in HTML konvertiert am 04.02.1999