package com.editev.chess.piece;

import com.editev.chess.Board;
import com.editev.chess.Move;

/**  A Knight is a Piece can jump any other Piece but otherwise has no special rules.
 *
 *  @see See the source here.
 */
public class Knight extends Piece {

    /** The knight jumps all pieces so piecesBetween always returns false. 
     *  @return false always. */
    public boolean pieceBetween( Move move, Board board ) { return false; }

    /** An array of all the possible Knight moves as byte offsets. */
    public static final byte[][] MOVES = {
                  {-1, -2},         {1, -2},
        {-2, -1},                              {2, -1},
        
        {-2,  1},                              {2,  1},
                  {-1,  2},         {1,  2},
    };
    
    /** This class is a singleton, so the constructor is private. */
    private Knight() { super( MOVES ); }

    /** The unique/singleton instantiation of Knight. */
    public static final Knight PIECE = new Knight();

}