Wegsuche im Labyrinth IV

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

PathFinder.m2
TYPE
   Delta = [-1..1];
VAR
   dx, dy: ARRAY Direction OF Delta;

PROCEDURE Wall(x, y: MazeIndex; dir: Direction) : BOOLEAN;
   VAR
      ch: CHAR;
BEGIN
   ch := maze[x + dx[dir], y + dy[dir]];
   RETURN (ch # space) & (ch # walk)
END Wall;

(* ... *)

dx[east] := 0; dx[south] := 1;
dx[west] := 0; dx[north] := -1;
dy[east] := 1; dy[south] := 0;
dy[west] := -1; dy[north] := 0;

(* ... *)

INC(x, dx[direction]); INC(y, dy[direction]);

*Der Ermittlung der Koordinaten von Nachbarfeldern dienen die beiden Arrays dx und dy.
 
*Wenn wir auf dem Rand sind, ist (mit Ausnahme der Anfangssituation) das Ziel bereits erreicht. Daher kann dieser Fall vernachlässigt werden.
 

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