home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1992-04-16 | 3.5 KB | 72 lines |
- DEFINITION MODULE thinker;
-
- (*$R-V-*) (* Range checking OFF, overflow checking OFF *)
-
- (* The Thinker! This is the meat and potatoes of Attacks. Here is *)
- (* where the computer does all of its thinking. This is also where the *)
- (* most improvements can be made to the program. EvalMove is the routine *)
- (* that assigns a value to a given board. It works recursively. Check *)
- (* it out. It's easily the most complex and sophisticated procedure I've *)
- (* ever written (that's saying a lot for a CS grad from UT). But I think *)
- (* it's still understandable. *)
-
-
- FROM header
- IMPORT movetype, boardtype, playertype;
-
-
- (************************************************************************)
- PROCEDURE OtherPlayer (player : playertype) : playertype;
- (* Simply returns the other player *)
-
-
- (************************************************************************)
- PROCEDURE LegalMove (move : movetype) : BOOLEAN;
-
- (* This simply checks to see if the given move is a valid move, con- *)
- (* sidering the current state of the game. It is NOT assumed that *)
- (* the initial component of the move is valid. It does NOT assume *)
- (* both of the move components are valid locations. But it does as- *)
- (* sume that the board has been properly initialized so that the outer *)
- (* edges are blocks. It operates using the global variable, state. *)
-
-
- (********************************************************)
- PROCEDURE GoodMovePossible (board : boardtype; player : playertype)
- : BOOLEAN;
- (* This procedure returns TRUE only if on the given board, player has *)
- (* has a legal move available. It returns FALSE otherwise. *)
-
-
- (***********************************************************************)
- PROCEDURE DoMove (move : movetype) : BOOLEAN;
-
- (* This does the necessary changes to facilitate a move in the *)
- (* game. It involves, finding out if the piece grows or jumps, alter- *)
- (* ing the board to reflect this, update the history, and change the *)
- (* graphics. Lastly, don't forget to change the player's turn! Oh *)
- (* yeah, I did in fact forget. Change the colors of all the opponents *)
- (* who are adjacent to the new blob! *)
- (* This routine returns TRUE if there's a move available. It *)
- (* will return FALSE when the game is over. *)
-
- (**************************************************************************)
- PROCEDURE DoComputerMove() : BOOLEAN;
-
- (* This is the computer equivalent of the procedure, DoMove. It exe- *)
- (* cutes a computer's move, assuming that the computer already has a le- *)
- (* gitate move possible. It utilizes the global variable, state. Also *)
- (* note that this assumes that the current turn is the computer's turn. *)
- (* It's up to the caller to make sure that it is indeed time to play the *)
- (* computer. *)
- (* *)
- (* INPUT *)
- (* n/a *)
- (* *)
- (* OUTPUT *)
- (* The state and the screen will be changed to reflect the *)
- (* move execute by the computer. *)
-
-
- END thinker.
-