import java.lang.Object;
import java.awt.Color;
import java.awt.Graphics;



public class Knight extends Piece
{

	public Knight(int _value, Color _color, Board _board)
	{
        super(_value, _color, _board);
	}



	protected boolean LegalMove(Position _from, Position _to)
	{
        if ( !(board.Squares[_to.i][_to.j].visited()) )
        {
		    if ( (_from.i == -1) || (_from.j == -1) ) // from outside board can go anywhere
    		{
    			return true;
    		}

    		if (
    		      ( (Math.abs(_to.i - _from.i) == 1) && (Math.abs(_to.j - _from.j) == 2) )
    		    ||
    		      ( (Math.abs(_to.i - _from.i) == 2) && (Math.abs(_to.j - _from.j) == 1) )
    		   )
    		{
    			return true;
    		}
        }

		return false;
	}




	public void Move(Position _to)
	{
   	    board.Visit(_to);
        path.Add(_to);
    }



	public void UndoMove()
	{
   	    board.UndoVisit(path.Last());
        path.UndoAdd();
    }



	public void Draw(Graphics _g)
	{
        // Not Yet Implemented
	}

}

