public void setBiggestP() {
      biggestRank = Rank.Engineer;
      for (int row = 0; row < RowNum; ++row) {
         // for all pieces on the board
         // find the piece with the biggest rank on the board
         // that belongs to us
         for (int col = 0; col < ColNum; ++col) {
            Piece p = getPiece(row, col);
            if (!Piece.rankGreaterThan(biggestRank, p.getRank())) {
               biggestRank = p.getRank();
            }
         }
      }
      biggestPPos.clear();
      for (int row = 0; row < RowNum; ++row) {
         // and the number of position of the biggest piece may not be just 1
         // search all the pieces and find all the positions of the biggest
         // pieces
         for (int col = 0; col < ColNum; ++col) {
            Piece p = getPiece(row, col);
            if (p.getRank().equals(biggestRank) && p.getOurSide()) {
               biggestPPos.add(new Position(row, col));
            }
         }
      }
      if (Piece.rankGreaterThan(Rank.SiLing, biggestRank)) {
         weHaveSiling = false;
      }
      if (Piece.rankGreaterThan(Rank.JunZhang, biggestRank)) {
         weHaveJunzhang = false;
      }
   }