public void reveal(){
    if(gameBoard.isPlaying && isMined()){
      setContentAreaFilled(true);
      setBackground( Color.RED );
      revalidate();
      repaint();
      gameBoard.defeat();
    }else{
      isRevealed = true;
      // reduce statistics for victory judgment purposes
      gameBoard.reduceRemainingCells();
      // remove color and prevent event calls
      if(! gameBoard.isGameOver() ){
        setContentAreaFilled(false);
        disableEvents(AWTEvent.MOUSE_EVENT_MASK);
      }
      // puts icon for false attempts
      if( gameBoard.isGameOver() && isFlagged && !isMined() ){
        deflag();
        putIcon(FALSE_ICON);
      }else if( isMined() ){
        // show mine if it's a mine not under a flag
        if(!isFlagged){
          putIcon(MINE_ICON);
        }
      }else if( minesCount == 0){
        // expansion if there's no nearby mines
        gameBoard.expand(row, col);
      }else{
        // show number of surrounding mines
        setForeground(NUMBER_COLOR[minesCount]);
        setText("" + minesCount);
      }
      gameBoard.notifyViewers();
      gameBoard.judge();
    }
  }