/** * Constructs a new game by parsing given array of string as an array of FEN primitives. * * <p>FEN parsing is permissive and uses best-effort approach i.e. anything, that is salvaged of * given input, is used as best as possible, and for the rest, reasonable default values are * assumed. * * @param fenArray An array of FEN primitives used to initialize a game. Only the six first array * elements are used and the are discarded if provided. */ public Chess(String[] fenArray) { turn = true; enpassant = null; halfmove = 0; fullmove = 1; if (fenArray.length >= 4) { try { enpassant = new Coord(fenArray[3]); } catch (Exception pass) { } } if (fenArray.length >= 1) { board = new Board(fenArray[0], enpassant); } else { board = new Board(); } if (fenArray.length >= 2) { if (fenArray[1].equals("b")) { turn = false; } } if (fenArray.length >= 3) { castling = new Castle(fenArray[2]); } else { castling = new Castle(); } castling.crop(board.getState()); if (fenArray.length >= 6) { try { halfmove = Integer.parseInt(fenArray[4]); fullmove = Integer.parseInt(fenArray[5]); } catch (NumberFormatException pass) { } } }