public Point makeAIMove(OthelloBoard board) {
    	/** < store the maximum number of the pieces that are flipped  */
    	int m_MaximumFlips = 0;
    	
    	/** < store all the computer hard move point with the maximum piece flip number  */
        ArrayList<Point> m_BestFlips = new ArrayList<Point>();
        
        /** < scan the whole board and find the maximum number of the flipped pieces (m_MaximumFlips)  */
        for (int i = 0; i < BOARD_HEIGHT; i++) {
            for (int j = 0; j < BOARD_WIDTH; j++) {
                if (getFlipsForPosition(i,j, board) > m_MaximumFlips) {
                	m_MaximumFlips = getFlipsForPosition(i,j,board);
                }
            }
        }
        
        /** < scan the whole board store the point with the maximum flipped piece number 
         *    to the m_BestFlips ArrayList */
        for (int i = 0; i < BOARD_HEIGHT; i++) {
            for (int j = 0; j < BOARD_WIDTH; j++) {
                if (getFlipsForPosition(i,j, board) == m_MaximumFlips) {
                	m_BestFlips.add(new Point(i,j));
                }
            }
        }
        
        /** < choose a point from the m_BestFlips ArrayList randomly */
        Random r = new Random();
        int m_ArrayPosition = r.nextInt(m_BestFlips.size());
        return m_BestFlips.get(m_ArrayPosition);
    }