Class Board

java.lang.Object
  extended by java.util.Observable
      extended by Board
All Implemented Interfaces:
java.util.Observer

public class Board
extends java.util.Observable
implements java.util.Observer

A generic board that, together with Piece, can be used to display board games. This class is only for display purposes; logic for the game should be in user-defined classes.


Constructor Summary
Board(int rows, int columns)
          Creates a playing board with the given number of rows and columns.
 
Method Summary
 void clear()
          Removes all Pieces from this Board.
 int columnToX(int columnNumber)
          Returns the X coordinate of the left side of cells in the given column of this Board.
 int getColumns()
          Returns the number of columns in this Board.
 javax.swing.JPanel getJPanel()
          Returns the JPanel on which this board is displayed.
 Piece getPiece(int row, int column)
          Returns the topmost piece at the given row and column in this Board, or null if the given location is empty.
 java.util.Stack getPieces(int row, int column)
          Returns a (possibly empty) Stack of all the pieces in the given position.
 int getRows()
          Returns the number of rows in this Board.
 int getSelectedColumn()
          Returns the column number (counting from zero) of the currently selected square, or -1 if none is selected.
 Piece getSelectedPiece()
          Returns the currently selected Piece, or null if no Piece has been selected on this Board.
 int getSelectedRow()
          Returns the row number (counting from zero) of the currently selected square, or -1 if none is selected.
 int getSpeed()
          Returns the default speed (in squares per second) of pieces on this board.
 boolean isEmpty(int row, int column)
          Returns true if the given row and column on this board contains no Pieces.
 boolean isLegalPosition(int row, int column)
          Determines whether the given row and column denote a legal position on this Board.
 boolean isSelectable(int row, int column)
          Returns true to indicate that this square of the board can be selected; override this method to provide different behavior.
 void paint(java.awt.Graphics g)
          Paints this board, not including the pieces.
 void place(Piece piece, int row, int column)
          Places the given piece at the given location in this board.
 Piece remove(int row, int column)
          Removes the top piece at the given row and column on this Board.
 boolean remove(Piece piece)
          Removes this piece from the board.
 int rowToY(int rowNumber)
          Returns the Y coordinate of the top side of cells in the given column of this Board.
 void setSelectedPiece(Piece selectedPiece)
          Mark the given Piece as the selected one; unmark any previously selected Piece.
 void setSelectedSquare(int row, int column)
          If the given square is selectable, select it, otherwise do nothing.
 void setSpeed(int speed)
          Sets the default speed of movement for pieces on this board, in squares per second.
 void unselectPiece()
          Causes no piece on this Board to be selected.
 void unselectSquare()
          Unselects the currently selected square, if any.
 void update(java.util.Observable changedPiece, java.lang.Object rectangle)
          Redraws this Board whenever a Piece is modified.
 int xToColumn(int x)
          Given an x coordinate, determines which column it is in.
 int yToRow(int y)
          Given a y coordinate, determines which row it is in.
 
Methods inherited from class java.util.Observable
addObserver, countObservers, deleteObserver, deleteObservers, hasChanged, notifyObservers, notifyObservers
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Board

public Board(int rows,
             int columns)
Creates a playing board with the given number of rows and columns. This board is a Swing JPanel and may be used wherever a JPanel may be used.

Parameters:
rows - Desired number of rows.
columns - Desired number of columns.
Method Detail

getJPanel

public javax.swing.JPanel getJPanel()
Returns the JPanel on which this board is displayed.

Returns:
The JPanel on which this Board is displayed.

getRows

public int getRows()
Returns the number of rows in this Board.

Returns:
The number of rows.

getColumns

public int getColumns()
Returns the number of columns in this Board.

Returns:
The number of columns.

getPiece

public Piece getPiece(int row,
                      int column)
Returns the topmost piece at the given row and column in this Board, or null if the given location is empty.

Parameters:
row - The row number.
column - The column number.
Returns:
The Piece in the given [row][column], or null if that location is empty. If the board location contains more than one piece, the "topmost" piece is returned.
Throws:
java.lang.ArrayIndexOutOfBoundsException - If the specified location does not exist.

getPieces

public java.util.Stack getPieces(int row,
                                 int column)
Returns a (possibly empty) Stack of all the pieces in the given position. The top element of the stack is the topmost element in that board location.

Parameters:
row - A row number on this board.
column - A column number on this board.
Returns:
The pieces in this board location.
Throws:
java.lang.ArrayIndexOutOfBoundsException - If the specified location does not exist.

isEmpty

public boolean isEmpty(int row,
                       int column)
Returns true if the given row and column on this board contains no Pieces.

Parameters:
row - The row to examine.
column - The column to examine.
Returns:
true if this location is empty.

xToColumn

public int xToColumn(int x)
Given an x coordinate, determines which column it is in.

Parameters:
x - A local x coordinate.
Returns:
The number of the column containing the given x coordinate.

yToRow

public int yToRow(int y)
Given a y coordinate, determines which row it is in.

Parameters:
y - A local y coordinate.
Returns:
The number of the row containing the given y coordinate.

columnToX

public int columnToX(int columnNumber)
Returns the X coordinate of the left side of cells in the given column of this Board.

Parameters:
columnNumber - A column number.
Returns:
The X coordinate of the left side of that column.

rowToY

public int rowToY(int rowNumber)
Returns the Y coordinate of the top side of cells in the given column of this Board.

Parameters:
rowNumber - A row number.
Returns:
The Y coordinate of the top side of that row.

place

public void place(Piece piece,
                  int row,
                  int column)
Places the given piece at the given location in this board. It is possible to place more than one piece in a given board location, in which case later pieces go "on top of" earlier pieces.

Parameters:
piece - The Piece to be placed.
row - The row in which to place the piece.
column - The column in which to place the piece.
Throws:
java.lang.ArrayIndexOutOfBoundsException - If the specified location does not exist.

clear

public void clear()
Removes all Pieces from this Board.


remove

public Piece remove(int row,
                    int column)
Removes the top piece at the given row and column on this Board.

Parameters:
row - The row of the piece to be removed.
column - The column of the piece to be removed.
Returns:
The top Piece at the given location, or null if the given location is empty.
Throws:
java.lang.ArrayIndexOutOfBoundsException - If the specified location does not exist.

remove

public boolean remove(Piece piece)
Removes this piece from the board. Does nothing if the piece is not, in fact, on the board.

Parameters:
piece - The piece to remove.

setSpeed

public void setSpeed(int speed)
Sets the default speed of movement for pieces on this board, in squares per second. This value is used only for pieces that do not specify their own speed.

Parameters:
speed - The default speed for pieces on this board.

getSpeed

public int getSpeed()
Returns the default speed (in squares per second) of pieces on this board.

Returns:
The default speed for pieces on this board.

isLegalPosition

public boolean isLegalPosition(int row,
                               int column)
Determines whether the given row and column denote a legal position on this Board.

Parameters:
row - The given row number.
column - The given column number.
Returns:
true if the given row and column number represent a valid location on this board

update

public void update(java.util.Observable changedPiece,
                   java.lang.Object rectangle)
Redraws this Board whenever a Piece is modified. This method should not be overridden.

Specified by:
update in interface java.util.Observer
Parameters:
changedPiece - The changed piece that causes a redraw to be necessary.
rectangle - The area to be redrawn.

paint

public void paint(java.awt.Graphics g)
Paints this board, not including the pieces. (Pieces are painted in DisplayPanel.paint.)

Parameters:
g - The Graphics context on which this board is painted.

setSelectedPiece

public void setSelectedPiece(Piece selectedPiece)
Mark the given Piece as the selected one; unmark any previously selected Piece.

Parameters:
selectedPiece - The Piece to be "selected."

getSelectedPiece

public Piece getSelectedPiece()
Returns the currently selected Piece, or null if no Piece has been selected on this Board.

Returns:
The currently selected Piece.

unselectPiece

public void unselectPiece()
Causes no piece on this Board to be selected.


isSelectable

public boolean isSelectable(int row,
                            int column)
Returns true to indicate that this square of the board can be selected; override this method to provide different behavior.

Parameters:
row - The row index of the square to consider.
column - The column index of the square to consider.
Returns:
true.

getSelectedRow

public int getSelectedRow()
Returns the row number (counting from zero) of the currently selected square, or -1 if none is selected.

Returns:
The selected row number.

getSelectedColumn

public int getSelectedColumn()
Returns the column number (counting from zero) of the currently selected square, or -1 if none is selected.

Returns:
The selected column number.

setSelectedSquare

public void setSelectedSquare(int row,
                              int column)
If the given square is selectable, select it, otherwise do nothing.

Parameters:
row - The row number of the square being selected.
column - The column number of the square being selected.

unselectSquare

public void unselectSquare()
Unselects the currently selected square, if any.