/** * 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; }
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(); } } }