pt.ua.gboard.games
Class ChessBoard

java.lang.Object
  extended by pt.ua.gboard.games.ChessBoard

public class ChessBoard
extends java.lang.Object

A GBoard based chess board.

Board coordinates can use a pair of integers or a classical chess String position.
Top-left coordinate is (0,0) or AN (N is the board's dimension).

invariant: N >= 1
invariant: board != null

This class follows DbC(tm) methodology. Where possible, contracts are implement with JML and native's Java assert.

Author:
Miguel Oliveira e Silva (mos@ua.pt)

Field Summary
 GBoard board
          Maze's GBoard object.
 int N
          Board dimensions.
 ChessPieces pieces
          Chess pieces.
 
Constructor Summary
ChessBoard(int N)
          Creates a NxN chess board.
 
Method Summary
 void clear()
          Empties the board.
 int column(java.lang.String pos)
          Converts a String position coordinate to a column number;
 boolean emptyPosition(int line, int column)
          Is position (line,column) empty?
 boolean emptyPosition(java.lang.String pos)
          Is position pos empty?
 ChessPiece get(int line, int column)
          Observe a chess piece in the board.
 ChessPiece get(java.lang.String pos)
          Observe a chess piece in the board.
 void initializeChessGame()
          Initializes a standard 8x8 chess board.
 int line(java.lang.String pos)
          Converts a String position coordinate to a line number;
 void move(int fromLine, int fromColumn, int toLine, int toColumn)
          Moves a chess piece inside the board.
 void move(java.lang.String fromPos, java.lang.String toPos)
          Moves a chess piece inside the board.
 java.lang.String[] piecePositions(ChessPieceType piece)
          Returns an array with the positions of a piece.
 boolean positionSelected(int line, int column)
          Is position (line,column) selected?
 boolean positionSelected(java.lang.String pos)
          Is position pos selected?
 void put(ChessPiece piece, int line, int column)
          Puts a chess piece in the board.
 void put(ChessPiece piece, java.lang.String pos)
          Puts a chess piece in the board.
 void put(ChessPieceType piece, int line, int column)
          Puts a chess piece in the board.
 void put(ChessPieceType piece, java.lang.String pos)
          Puts a chess piece in the board.
 void remove(int line, int column)
          Removes a chess piece from the board.
 void remove(java.lang.String pos)
          Removes a chess piece from the board.
 void selectPosition(int line, int column)
          Select position (line,column).
 void selectPosition(java.lang.String pos)
          Select position pos.
 java.lang.String toPosition(int line, int column)
          Converts integer position coordinates to a String position.
 void unselectPosition(int line, int column)
          Unselect position (line,column).
 void unselectPosition(java.lang.String pos)
          Unelect position pos.
 boolean validPosition(int line, int column)
          Is (line,column) a valid board position?
 boolean validPosition(java.lang.String pos)
          Is pos a valid board position?
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

N

public final int N
Board dimensions.


board

public final GBoard board
Maze's GBoard object.


pieces

public final ChessPieces pieces
Chess pieces.

Constructor Detail

ChessBoard

public ChessBoard(int N)
Creates a NxN chess board.

requires: N > 0

Parameters:
N - board dimensions
Method Detail

initializeChessGame

public void initializeChessGame()
Initializes a standard 8x8 chess board.

requires: N == 8


clear

public void clear()
Empties the board.


validPosition

public boolean validPosition(int line,
                             int column)
Is (line,column) a valid board position?

Parameters:
line - line number
column - column number
Returns:
boolean true if position is valid, otherwise it returns false

validPosition

public boolean validPosition(java.lang.String pos)
Is pos a valid board position?

Parameters:
pos - position text
Returns:
boolean true if position is valid, false otherwise

toPosition

public java.lang.String toPosition(int line,
                                   int column)
Converts integer position coordinates to a String position.

requires: validPosition(line, column)

ensures: validPosition(\result)

Parameters:
line - line number
column - column number
Returns:
String position text

line

public int line(java.lang.String pos)
Converts a String position coordinate to a line number;

requires: validPosition(pos)

ensures: \result >= 0 && \result < N

Parameters:
pos - position text
Returns:
int line number

column

public int column(java.lang.String pos)
Converts a String position coordinate to a column number;

requires: validPosition(pos)

ensures: \result >= 0 && \result < N

Parameters:
pos - position text
Returns:
int column number

emptyPosition

public boolean emptyPosition(int line,
                             int column)
Is position (line,column) empty?

requires: validPosition(line, column)

Parameters:
line - line number
column - column number
Returns:
boolean true if position is empty, otherwise it returns false

emptyPosition

public boolean emptyPosition(java.lang.String pos)
Is position pos empty?

requires: validPosition(pos)

Parameters:
pos - position text
Returns:
boolean true if position is empty, otherwise it returns false

put

public void put(ChessPieceType piece,
                int line,
                int column)
Puts a chess piece in the board.

requires: emptyPosition(line, column)

ensures: !emptyPosition(line, column)

Parameters:
piece - chess piece type
line - line number
column - column number

put

public void put(ChessPieceType piece,
                java.lang.String pos)
Puts a chess piece in the board.

requires: emptyPosition(pos)

ensures: !emptyPosition(pos)

Parameters:
piece - chess piece type
pos - position text

put

public void put(ChessPiece piece,
                int line,
                int column)
Puts a chess piece in the board.

requires: emptyPosition(line, column)

ensures: !emptyPosition(line, column)

Parameters:
piece - chess piece type
line - line number
column - column number

put

public void put(ChessPiece piece,
                java.lang.String pos)
Puts a chess piece in the board.

requires: emptyPosition(pos)

ensures: !emptyPosition(pos)

Parameters:
piece - chess piece type
pos - position text

get

public ChessPiece get(int line,
                      int column)
Observe a chess piece in the board.

requires: !emptyPosition(line, column)

Parameters:
line - line number
column - column number
Returns:
ChessPiece chess piece

get

public ChessPiece get(java.lang.String pos)
Observe a chess piece in the board.

requires: !emptyPosition(pos)

Parameters:
pos - position text
Returns:
ChessPiece chess piece

remove

public void remove(int line,
                   int column)
Removes a chess piece from the board.

requires: !emptyPosition(line, column)

ensures: emptyPosition(line, column)

Parameters:
line - line number
column - column number

remove

public void remove(java.lang.String pos)
Removes a chess piece from the board.

requires: !emptyPosition(pos)

ensures: emptyPosition(pos)

Parameters:
pos - position text

piecePositions

public java.lang.String[] piecePositions(ChessPieceType piece)
Returns an array with the positions of a piece.

Parameters:
piece - piece type
Returns:
String[] the positions array

move

public void move(int fromLine,
                 int fromColumn,
                 int toLine,
                 int toColumn)
Moves a chess piece inside the board.

requires: !emptyPosition(fromLine, fromColumn)
requires: emptyPosition(toLine, toColumn)

ensures: emptyPosition(fromLine, fromColumn)
ensures: !emptyPosition(toLine, toColumn)

Parameters:
fromLine - source line number
fromColumn - source column number
toLine - destination line number
toColumn - destination column number

move

public void move(java.lang.String fromPos,
                 java.lang.String toPos)
Moves a chess piece inside the board.

requires: !emptyPosition(fromPos)
requires: emptyPosition(toPos)

ensures: emptyPosition(fromPos)
ensures: !emptyPosition(toPos)

Parameters:
fromPos - source position text
toPos - destination position text

positionSelected

public boolean positionSelected(int line,
                                int column)
Is position (line,column) selected?

requires: validPosition(line, column)

Parameters:
line - line number
column - column number
Returns:
boolean true if position is selected, otherwise it returns false

positionSelected

public boolean positionSelected(java.lang.String pos)
Is position pos selected?

requires: validPosition(pos)

Parameters:
pos - position text
Returns:
boolean true if position is selected, otherwise it returns false

selectPosition

public void selectPosition(int line,
                           int column)
Select position (line,column).

requires: !positionSelected(line, column)

ensures: positionSelected(line, column)

Parameters:
line - line number
column - column number

selectPosition

public void selectPosition(java.lang.String pos)
Select position pos.

requires: !positionSelected(pos)

ensures: positionSelected(pos)

Parameters:
pos - position text

unselectPosition

public void unselectPosition(int line,
                             int column)
Unselect position (line,column).

requires: positionSelected(line, column)

ensures: !positionSelected(line, column)

Parameters:
line - line number
column - column number

unselectPosition

public void unselectPosition(java.lang.String pos)
Unelect position pos.

requires: positionSelected(pos)

ensures: !positionSelected(pos)

Parameters:
pos - position text