public int getValidMove(byte[][] board, int source, int target) { ArrayList<Integer> validMoveList = new ArrayList<Integer>(); int validMove = 0; int move = source | (target << 8); int[] validMoves = moveGeneration.generateMoves( Transformer.getBitboardStyl(board), side, epTarget, castlingRights); for (int i = 0; i < EngineConstants.MOVE_LIST_SIZE; i++) { if (move == (validMoves[i] & 0x0000FFFF)) { validMoveList.add(validMoves[i]); } } // check King Safety int validMoveListSize = validMoveList.size(); for (int i = 0; i < validMoveListSize; i++) { validMove = validMoveList.get(i); GamePlayMove gamePlayMove = new GamePlayMove(base, validMove); if (gamePlayMove.isKingInCheck()) { return 0; } } // choose item to be promoted if (validMoveListSize > 1) { base.runPopupPromotionFrame(side); byte toBePromotedItem = base.getPromotionPanel().getLastChoosenPromotionItem(); for (int i = 0; i < validMoveListSize; i++) { validMove = validMoveList.get(i); if (((validMove & 0xF00000) >>> 20) == (int) toBePromotedItem) { break; } } } return validMove; }
public void undoMove() { if ((!PieceEffects.existsActiveTimer() && moveHistory.size() > 0)) { GamePlayMove gamePlayMove = moveHistory.get(moveHistory.size() - 1); moveHistory.remove(moveHistory.size() - 1); gamePlayMove.unImplement(); reverseTurn(); } }
public void doMove(int move) { if (!PieceEffects.existsActiveTimer()) { GamePlayMove gamePlayMove = new GamePlayMove(base, move); moveHistory.add(gamePlayMove); gamePlayMove.implement(); reverseTurn(); } }