import java.lang.Object;
import java.awt.Color;
import java.awt.Image;
import java.awt.Graphics;


public abstract class Piece
{
	public      boolean     success;

	protected   int         value;
	protected   Color       color;
    protected   Image       image;
	protected   Board       board;
	protected   Path        path;

    public Piece(int _value, Color _color, Image _image, Board _board)
    {
        value       = _value;
        color       = _color;
        image       = _image;
        board       = _board;
        path = new Path(board.rows() * board.columns());
    }

    public int value()          { return value; }
    public Color color()        { return color; }
    public Board board()        { return 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);
}

