Package edu.wisc.game.sql

## Class Board

- java.lang.Object
- - edu.wisc.game.sql.Board

-     @Entity
      public class Board
      extends Object

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `Board.Pos` | Can be used to describe the position of a piece on the [1:N]x[1:N] grid, or that of a bucket (at (0,0), ...

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static Board.Pos[]` | `buckets` | The positions of the 4 buckets
    `static int` | `N` |
    `static RandomRG` | `random` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Board()` | Creates an empty board
    `Board​(int randomCnt)` | The simple constructor, creates a random board with a given number of pieces, using the 4 legacy colors.
    `Board​(int randomCnt, int nShapes, int nColors, Piece.Shape[] allShapes, Piece.Color[] allColors)` | The main constructor for a random initial board in GS 2.*.
    `Board​(int randomCnt, String[] allImages)` | The main constructor for a random image-and-property-based initial board in GS 3.*.
    `Board​(Piece[] pieces, Piece[] removedPieces, BitSet[] moveableTo)` | Creates a board object to be sent out (as JSON) to the player's client, based on the current state of the episode.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addPiece​(Piece c)` |
    `void` | `checkShapesAndColors​(ColorMap cm)` | Checking that a board description does not include any colors or shapes that cannot be displayed
    `long` | `getId()` |
    `String` | `getName()` |
    `Vector<Piece>` | `getValue()` |
    `static void` | `initRandom​(long seed)` | This can be called on startup (from main()) if we want to initialize the random number generator with a specific seed
    `long` | `persistNewBoard()` | We aren't actually using SQL server to store boards, even though we have support for this
    `static Board` | `readBoard​(File f)` | Reads a board description from a JSON file
    `void` | `removePiece​(Piece c)` |
    `void` | `setId​(long _id)` |
    `void` | `setName​(String _name)` |
    `void` | `setValue​(Vector<Piece> _value)` |
    `static int` | `xynum​(int x, int y)` | The position number for the point at (x,y)

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### N

          public static final int N

      See Also:
        Constant Field Values

    - #### buckets

          public static final Board.Pos[] buckets

      The positions of the 4 buckets

    - #### random

          public static RandomRG random

  - ### Constructor Detail

    - #### Board

          public Board()

      Creates an empty board

    - #### Board

          public Board​(int randomCnt)

      The simple constructor, creates a random board with a given number of pieces, using the 4 legacy colors.

    - #### Board

          public Board​(int randomCnt,
                       int nShapes,
                       int nColors,
                       Piece.Shape[] allShapes,
                       Piece.Color[] allColors)

      The main constructor for a random initial board in GS 2.*.
      Parameters:
        `randomCnt` - required number of pieces.
        `nShapes` - required number of shapes. If 0 is passed, there is no restriction (independent decision is made for each piece)
        `nColors` - required number of colors. If 0 is passed, there is no restriction (independent decision is made for each piece)
        `allShapes` - the set from which shapes are drawn
        `allColors` - the set from which colors are drawn

    - #### Board

          public Board​(int randomCnt,
                       String[] allImages)

      The main constructor for a random image-and-property-based initial board in GS 3.*.
      Parameters:
        `randomCnt` - required number of pieces.
        `allImages` - the set from which images are drawn

    - #### Board

          public Board​(Piece[] pieces,
                       Piece[] removedPieces,
                       BitSet[] moveableTo)

      Creates a board object to be sent out (as JSON) to the player's client, based on the current state of the episode.
      Parameters:
        `pieces` - The pieces still on the board. (An array of N^2 elements, with nulls)
        `removedPieces` - If not null, these pieces will also be included into the generated Board object, with the flag dropped=true. This is what the GUI client wants.
        `moveableTo` - Specifies to which buckets each piece can be moved to.

  - ### Method Detail

    - #### xynum

          public static int xynum​(int x,
                                  int y)

      The position number for the point at (x,y)

    - #### addPiece

          public void addPiece​(Piece c)

    - #### removePiece

          public void removePiece​(Piece c)

    - #### getId

          public long getId()

    - #### setId

          public void setId​(long _id)

    - #### getName

          public String getName()

    - #### setName

          public void setName​(String _name)

    - #### getValue

          public Vector<Piece> getValue()

    - #### setValue

          public void setValue​(Vector<Piece> _value)

    - #### initRandom

          public static void initRandom​(long seed)

      This can be called on startup (from main()) if we want to initialize the random number generator with a specific seed

    - #### persistNewBoard

          public long persistNewBoard()

      We aren't actually using SQL server to store boards, even though we have support for this

    - #### readBoard

          public static Board readBoard​(File f)
                                 throws IOException,
                                        ReflectiveOperationException

      Reads a board description from a JSON file
      Throws:
        `IOException`
        `ReflectiveOperationException`

    - #### checkShapesAndColors

          public void checkShapesAndColors​(ColorMap cm)
                                    throws IOException

      Checking that a board description does not include any colors or shapes that cannot be displayed
      Throws:
        `IOException`