Class Board

java.lang.Object
  extended byjava.util.Observable
      extended byBoard
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
 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 th1s board itself, 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 and returns the top piece at the given row and column on this Board.
 boolean remove(Piece piece)
          Removes this piece from the 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()
          Unselects the currently selected Piece on this Board.
 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.
 
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.

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.

remove

public Piece remove(int row,
                    int column)
Removes and returns 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 Piece that was removed.
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 be removed.
Returns:
The removed Piece.

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 piece that needs to be redrawn (not used).
rectangle - The area that needs to be redrawn.

paint

public void paint(java.awt.Graphics g)
Paints th1s board itself, not including the pieces.

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()
Unselects the currently selected Piece on this Board. If no Piece is selected, this method does nothing.


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.