package com.editev.chess.piece;

/** A Queen has no specific rules attached to it, just a list of moves.
 *
 *  @see See the source here.
 */
public class Queen extends Piece {
    /** An array of all the possible Queen moves as byte offsets. */
    public static final byte[][] MOVES = {
        {-7, -7},                                                             {0, -7},                                                      {7, -7}, 
                  {-6, -6},                                                   {0, -6},                                             {6, -6},
                            {-5, -5},                                         {0, -5},                                     {5, -5},
                                      {-4, -4},                               {0, -4},                            {4, -4},
                                               {-3,  -3},                     {0, -3},                   {3, -3},
                                                          {-2,  -2},          {0, -2},          {2, -2},
                                                                    {-1, -1}, {0, -1}, {1, -1},
        {-7,  0}, {-6,  0}, {-5,  0}, {-4,  0}, {-3,  0}, {-2,  0}, {-1,  0},          {1,  0}, {2,  0}, {3,  0}, {4,  0}, {5,  0}, {6,  0}, {7,  0},
                                                                    {-1,  1}, {0,  1}, {1,  1},
                                                          {-2,  2},           {0,  2},          {2,  2},
                                                {-3,  3},                     {0,  3},                   {3,  3},
                                      {-4,  4},                               {0,  4},                            {4,  4},
                            {-5,  5},                                         {0,  5},                                     {5,  5},
                  {-6,  6},                                                   {0,  6},                                             {6,  6},
        {-7,  7},                                                             {0,  7},                                                      {7,  7}, 
    };
    
    /** This class is a singleton, so the constructor is private. */
    private Queen() { super( MOVES ); }

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