Universität Ulm,
Fakultät für Mathematik und Wirtschaftswissenschaften,
SAI
SS 99 || Ferienprojekt zu Allgemeine Informatik II || Puzzle Library
DEFINITION ChessClocks
DEFINITION ChessClocks;
IMPORT Clocks, Objects, Services, Shards, Times;
TYPE
ChessClock = POINTER TO ChessClockRec;
ChessClockRec = RECORD (Services.ObjectRec) END;
Player = SHORTINT; (* player number, starting from 0 *)
TYPE
StartProc = PROCEDURE (chessclock: ChessClock;
auth: Shards.Lid) : BOOLEAN;
StopProc = PROCEDURE (chessclock: ChessClock;
auth: Shards.Lid) : BOOLEAN;
SwitchProc = PROCEDURE (chessclock: ChessClock;
auth: Shards.Lid; player: Player) : BOOLEAN;
RunningProc = PROCEDURE (chessclock: ChessClock) : BOOLEAN;
CurrentPlayerProc = PROCEDURE (chessclock: ChessClock) : Player;
GetClockProc = PROCEDURE (chessclock: ChessClock; player: Player;
VAR clock: Clocks.Clock);
Interface = POINTER TO InterfaceRec;
InterfaceRec =
RECORD
(Objects.ObjectRec)
start: StartProc;
stop: StopProc;
switch: SwitchProc;
running: RunningProc;
currentPlayer: CurrentPlayerProc;
getClock: GetClockProc;
END;
PROCEDURE Init(chessclock: ChessClock; if: Interface;
numberOfPlayers: SHORTINT;
timelimit: Times.Time);
PROCEDURE Start(chessclock: ChessClock; auth: Shards.Lid) : BOOLEAN;
PROCEDURE Stop(chessclock: ChessClock; auth: Shards.Lid) : BOOLEAN;
PROCEDURE Switch(chessclock: ChessClock;
auth: Shards.Lid; player: Player) : BOOLEAN;
PROCEDURE Running(chessclock: ChessClock) : BOOLEAN;
PROCEDURE CurrentPlayer(chessclock: ChessClock) : Player;
PROCEDURE GetClock(chessclock: ChessClock; player: Player;
VAR clock: Clocks.Clock);
PROCEDURE NumberOfPlayers(chessclock: ChessClock) : SHORTINT;
PROCEDURE GetTimeLimit(chessclock: ChessClock;
VAR timelimit: Times.Time);
PROCEDURE TimeLeft(chessclock: ChessClock; player: Player;
VAR time: Times.Time);
END ChessClocks.
SS 99 || Ferienprojekt zu Allgemeine Informatik II || Puzzle Library
Andreas Borchert, 26. Juli 1999