/**
   * Generates random squares for the pieces of the provided tablebase.
   *
   * @param tablebase computerized database containing all possible legal chess positions and their
   *     evaluations, given the set of specific chess pieces
   * @return the bidirectional map from the pieces present in this chess position, to the squares
   *     they occupy
   */
  static BiMap<Piece, Square> generateRandomSquaresForPieces(Tablebase tablebase) {
    BiMap<Piece, Square> piecesWithSquares = EnumBiMap.create(Piece.class, Square.class);
    List<Piece> pieces = tablebase.getAllPieces();

    MersenneTwisterFast numberGenerator = new MersenneTwisterFast();

    Square randSquare = null;
    for (Piece piece : pieces) {
      do {
        if (piece.getPieceType() == PieceType.PAWN) {
          int pRand = numberGenerator.nextInt(Squares.PAWN_SQUARES.numberOfSquares());
          randSquare = Squares.PAWN_SQUARES.getSquaresAsList().get(pRand);
        } else {
          int allRand = numberGenerator.nextInt(Squares.ALL_SQUARES.numberOfSquares());
          randSquare = Squares.ALL_SQUARES.getSquaresAsList().get(allRand);
        }
      } while (piecesWithSquares.containsValue(randSquare));

      piecesWithSquares.put(piece, randSquare);
    }
    return piecesWithSquares;
  }
Esempio n. 2
0
  private JLabel determinePiece(Piece piece) throws IOException {

    if (piece.getPieceColor() == PieceColor.WHITE) {
      switch (piece.getPieceType().name()) {
        case ("KING"):
          JLabel wKing = new JLabel(new ImageIcon(ImageIO.read(new File("art/wKing.png"))));
          wKing.setSize(new Dimension(64, 64));
          return wKing;

        case ("QUEEN"):
          JLabel wQueen = new JLabel(new ImageIcon(ImageIO.read(new File("art/wQueen.png"))));
          wQueen.setSize(new Dimension(64, 64));
          return wQueen;

        case ("BISHOP"):
          JLabel wBishop = new JLabel(new ImageIcon(ImageIO.read(new File("art/wBishop.png"))));
          wBishop.setSize(new Dimension(64, 64));
          return wBishop;

        case ("KNIGHT"):
          JLabel wKnight = new JLabel(new ImageIcon(ImageIO.read(new File("art/wKnight.png"))));
          wKnight.setSize(new Dimension(64, 64));
          return wKnight;

        case ("ROOK"):
          JLabel wRook = new JLabel(new ImageIcon(ImageIO.read(new File("art/wRook.png"))));
          wRook.setSize(new Dimension(64, 64));
          return wRook;

        case ("PAWN"):
          JLabel wPawn = new JLabel(new ImageIcon(ImageIO.read(new File("art/wPawn.png"))));
          wPawn.setSize(new Dimension(64, 64));
          return wPawn;

        default:
          throw new IllegalArgumentException();
      }
    } else {
      switch (piece.getPieceType().name()) {
        case ("KING"):
          JLabel bKing = new JLabel(new ImageIcon(ImageIO.read(new File("art/bKing.png"))));
          bKing.setSize(new Dimension(64, 64));
          return bKing;

        case ("QUEEN"):
          JLabel bQueen = new JLabel(new ImageIcon(ImageIO.read(new File("art/bQueen.png"))));
          bQueen.setSize(new Dimension(64, 64));
          return bQueen;

        case ("BISHOP"):
          JLabel bBishop = new JLabel(new ImageIcon(ImageIO.read(new File("art/bBishop.png"))));
          bBishop.setSize(new Dimension(64, 64));
          return bBishop;

        case ("KNIGHT"):
          JLabel bKnight = new JLabel(new ImageIcon(ImageIO.read(new File("art/bKnight.png"))));
          bKnight.setSize(new Dimension(64, 64));
          return bKnight;

        case ("ROOK"):
          JLabel bRook = new JLabel(new ImageIcon(ImageIO.read(new File("art/bRook.png"))));
          bRook.setSize(new Dimension(64, 64));
          return bRook;

        case ("PAWN"):
          JLabel bPawn = new JLabel(new ImageIcon(ImageIO.read(new File("art/bPawn.png"))));
          bPawn.setSize(new Dimension(64, 64));
          return bPawn;

        default:
          throw new IllegalArgumentException();
      }
    }
  }