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