public class ChessBoard
extends java.lang.Object
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.
Modifier and Type | Field and Description |
---|---|
GBoard |
board
Maze's GBoard object.
|
int |
N
Board dimensions.
|
ChessPieces |
pieces
Chess pieces.
|
Constructor and Description |
---|
ChessBoard(int N)
Creates a
NxN chess board. |
Modifier and Type | Method and Description |
---|---|
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? |
public final int N
public final GBoard board
public final ChessPieces pieces
public ChessBoard(int N)
NxN
chess board.
requires: N > 0
N
- board dimensionspublic void initializeChessGame()
8x8
chess board.
requires: N == 8
public void clear()
public boolean validPosition(int line, int column)
(line,column)
a valid board position?line
- line numbercolumn
- column numberboolean
true if position is valid, otherwise it returns falsepublic boolean validPosition(java.lang.String pos)
pos
a valid board position?pos
- position textboolean
true if position is valid, false otherwisepublic java.lang.String toPosition(int line, int column)
String
position.
requires: validPosition(line, column)
ensures: validPosition(\result)
line
- line numbercolumn
- column numberString
position textpublic int line(java.lang.String pos)
String
position coordinate to a line number;
requires: validPosition(pos)
ensures: \result >= 0 && \result < N
pos
- position textint
line numberpublic int column(java.lang.String pos)
String
position coordinate to a column number;
requires: validPosition(pos)
ensures: \result >= 0 && \result < N
pos
- position textint
column numberpublic boolean emptyPosition(int line, int column)
(line,column)
empty?
requires: validPosition(line, column)
line
- line numbercolumn
- column numberboolean
true if position is empty, otherwise it returns falsepublic boolean emptyPosition(java.lang.String pos)
pos
empty?
requires: validPosition(pos)
pos
- position textboolean
true if position is empty, otherwise it returns falsepublic void put(ChessPieceType piece, int line, int column)
requires: emptyPosition(line, column)
ensures: !emptyPosition(line, column)
piece
- chess piece typeline
- line numbercolumn
- column numberpublic void put(ChessPieceType piece, java.lang.String pos)
requires: emptyPosition(pos)
ensures: !emptyPosition(pos)
piece
- chess piece typepos
- position textpublic void put(ChessPiece piece, int line, int column)
requires: emptyPosition(line, column)
ensures: !emptyPosition(line, column)
piece
- chess piece typeline
- line numbercolumn
- column numberpublic void put(ChessPiece piece, java.lang.String pos)
requires: emptyPosition(pos)
ensures: !emptyPosition(pos)
piece
- chess piece typepos
- position textpublic ChessPiece get(int line, int column)
requires: !emptyPosition(line, column)
line
- line numbercolumn
- column numberChessPiece
chess piecepublic ChessPiece get(java.lang.String pos)
requires: !emptyPosition(pos)
pos
- position textChessPiece
chess piecepublic void remove(int line, int column)
requires: !emptyPosition(line, column)
ensures: emptyPosition(line, column)
line
- line numbercolumn
- column numberpublic void remove(java.lang.String pos)
requires: !emptyPosition(pos)
ensures: emptyPosition(pos)
pos
- position textpublic java.lang.String[] piecePositions(ChessPieceType piece)
piece
- piece typeString[]
the positions arraypublic void move(int fromLine, int fromColumn, int toLine, int toColumn)
requires: !emptyPosition(fromLine, fromColumn)
requires: emptyPosition(toLine, toColumn)
ensures: emptyPosition(fromLine, fromColumn)
ensures: !emptyPosition(toLine, toColumn)
fromLine
- source line numberfromColumn
- source column numbertoLine
- destination line numbertoColumn
- destination column numberpublic void move(java.lang.String fromPos, java.lang.String toPos)
requires: !emptyPosition(fromPos)
requires: emptyPosition(toPos)
ensures: emptyPosition(fromPos)
ensures: !emptyPosition(toPos)
fromPos
- source position texttoPos
- destination position textpublic boolean positionSelected(int line, int column)
(line,column)
selected?
requires: validPosition(line, column)
line
- line numbercolumn
- column numberboolean
true if position is selected, otherwise it returns falsepublic boolean positionSelected(java.lang.String pos)
pos
selected?
requires: validPosition(pos)
pos
- position textboolean
true if position is selected, otherwise it returns falsepublic void selectPosition(int line, int column)
(line,column)
.
requires: !positionSelected(line, column)
ensures: positionSelected(line, column)
line
- line numbercolumn
- column numberpublic void selectPosition(java.lang.String pos)
pos
.
requires: !positionSelected(pos)
ensures: positionSelected(pos)
pos
- position textpublic void unselectPosition(int line, int column)
(line,column)
.
requires: positionSelected(line, column)
ensures: !positionSelected(line, column)
line
- line numbercolumn
- column numberpublic void unselectPosition(java.lang.String pos)
pos
.
requires: positionSelected(pos)
ensures: !positionSelected(pos)
pos
- position text