import java.lang.Object;
import java.awt.Color;
import java.awt.Graphics;


public abstract class Piece
{
	protected int         value;
	protected Color       color;
	protected Board       board;
	protected Path        path;


    public Piece(int _value, Color _color, Board _board)
    {
        value       = _value;
        color       = _color;
        board       = _board;
        path = new Path(board.rows() * board.columns());
    }


    public int value()          { return value; }
    public Color color()        { return color; }
    public Board board()        { return board; }

    public void value(int _value)   { value  = _value; }
    public void color(Color _color) { color  = _color; }
    public void board(Board _board) { board  = _board; }


	protected abstract boolean LegalMove(Position _from, Position _to);
	public abstract void Move(Position _to);
	public abstract void UndoMove();
	public abstract void Draw(Graphics _g);

}

