Universität Ulm, Fakultät für Mathematik und Wirtschaftswissenschaften, SAI

SS 99 || Ferienprojekt zu Allgemeine Informatik II || Puzzle Library

DEFINITION Puzzle


DEFINITION Puzzle;

   IMPORT Iterators, Objects, PersistentObjects;

   CONST boardsize = 7;

   CONST
      player1 = 0; player2 = 1; empty = 2;
   TYPE
      Piece = SHORTINT; (* empty..player2 *)
      Player = SHORTINT; (* player1 or player2 *)
      Board = ARRAY boardsize, boardsize OF Piece;

   TYPE
      Move = POINTER TO MoveRec;
      MoveRec =
	 RECORD
	    (PersistentObjects.ObjectRec)
	    fromx, fromy, tox, toy: SHORTINT; (* 0 .. boardsize-1 *)
	 END;

      Situation = POINTER TO SituationRec;
      SituationRec = RECORD (PersistentObjects.ObjectRec) END;

   PROCEDURE CreateMove(VAR move: Move;
                        fromx, fromy, tox, toy: SHORTINT);

   PROCEDURE CreateSituation(VAR situation: Situation);
   PROCEDURE CopySituation(VAR situation: Situation; orig: Situation);

   PROCEDURE GetBoard(situation: Situation; VAR board: Board);
   PROCEDURE NumberOfPieces(situation: Situation; player: Player) : INTEGER;
   PROCEDURE Finished(situation: Situation) : BOOLEAN;
   PROCEDURE Onturn(situation: Situation) : Player;
   PROCEDURE Winner(situation: Situation) : Piece;
      (* empty means nobody has won *)

   PROCEDURE Valid(situation: Situation; move: Move; player: Player): BOOLEAN;
   PROCEDURE MakeMove(situation: Situation; move: Move; player: Player);
   PROCEDURE OtherPlayer(player: Player) : Player;
   PROCEDURE CreateIterator(VAR it: Iterators.Iterator; situation: Situation;
			    player: Player);
      (* Create an Iterator to iterate through all legal moves *)

END Puzzle.

SS 99 || Ferienprojekt zu Allgemeine Informatik II || Puzzle Library

Andreas Borchert, 26. Juli 1999