80 行
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			80 行
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package fr.iut_fbleau.GameAPI;
 | |
| 
 | |
| import java.util.Iterator;
 | |
| 
 | |
| /**
 | |
|  * The interface Board.
 | |
|  */
 | |
| public interface IBoard {
 | |
| 
 | |
| 
 | |
|     /**
 | |
|      * @return the current player
 | |
|      */
 | |
|     public Player getCurrentPlayer();
 | |
| 
 | |
|     /**
 | |
|      * Returns the game status
 | |
|      *
 | |
|      * @return true iff the game is over
 | |
|      */
 | |
|     public boolean isGameOver();
 | |
| 
 | |
|     /**
 | |
|      *  
 | |
|      * @return the result (null if not over)
 | |
|      */
 | |
|     public Result getResult();
 | |
| 
 | |
|     /**
 | |
|      * checker of the legality of a ply from this position
 | |
|      *
 | |
|      * @return true iff the ply is legal
 | |
|      */
 | |
|     public boolean isLegal(AbstractPly c);
 | |
| 
 | |
|    
 | |
|     
 | |
|     /**
 | |
|      * constructor of Iterator over legal moves from this position
 | |
|      *
 | |
|      * @return the iterator
 | |
|      */
 | |
|     public Iterator<AbstractPly> iterator();
 | |
| 
 | |
|     
 | |
|     
 | |
|     /**
 | |
|      * Plays a given move on the plateau.
 | |
|      * 
 | |
|      * @throws IllegalArgumentException if the move is always illegal (say from the wrong game)
 | |
|      * @throws IllegalStateException if the move is not legal in this position
 | |
|      *
 | |
|      * @param AbstractPly to be played
 | |
|      *
 | |
|      */
 | |
|     public void doPly(AbstractPly c);
 | |
| 
 | |
|     /**
 | |
|      * Resets the plateau to the position before the last move.
 | |
|      *
 | |
|      * @throws IllegalStateException if nothing to undo
 | |
|      *
 | |
|      */
 | |
|     public void undoPly();
 | |
| 
 | |
|     /**
 | |
|      * Creates a safe copy of the board.
 | |
|      *
 | |
|      * Intended to prevent cheating from a human via some interface,
 | |
|      * or from a bot playing via the API, or from a badly coded bot.
 | |
|      *
 | |
|      * Beware that the default implantation is unsafe and returns this.
 | |
|      *
 | |
|      * @return the copy
 | |
|      */    
 | |
|     public default IBoard safeCopy(){
 | |
| 	return this;
 | |
|     }
 | |
| }
 |