示例#1
0
  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;
  }
示例#2
0
 public void undoMove() {
   if ((!PieceEffects.existsActiveTimer() && moveHistory.size() > 0)) {
     GamePlayMove gamePlayMove = moveHistory.get(moveHistory.size() - 1);
     moveHistory.remove(moveHistory.size() - 1);
     gamePlayMove.unImplement();
     reverseTurn();
   }
 }
示例#3
0
 public void doMove(int move) {
   if (!PieceEffects.existsActiveTimer()) {
     GamePlayMove gamePlayMove = new GamePlayMove(base, move);
     moveHistory.add(gamePlayMove);
     gamePlayMove.implement();
     reverseTurn();
   }
 }