80 lines
1.6 KiB
Java
80 lines
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;
|
|
}
|
|
}
|