/**
   * Paints the display of the world, the 9 X 9 grid, which is determined by the locations of each
   * enemy, room, power up, and player.
   *
   * @param number - the input that the user specifies. Used for the look method.
   */
  public void paint(int number) {
    panel.removeAll();
    for (int i = 0; i < 9; i++) {
      for (int j = 0; j < 9; j++) {
        int counter = 0;
        if (i == engine.getPlayerRow() && j == engine.getPlayerCol()) {
          counter++;
        }

        for (int r = 0; r < 9; r++) {
          if (i == engine.getRoomRow(r) && j == engine.getRoomCol(r)) {
            counter++;
          }
        }

        for (int p = 0; p < 3; p++) {
          if (engine.isPowerupActivated(p)) {
            if (i == engine.getPowerupRow(p) && j == engine.getPowerupCol(p)) {
              counter++;
            }
          }
        }

        for (int e = 0; e < 6; e++) {
          if (i == engine.getEnemyRow(e) && j == engine.getEnemyCol(e) && engine.isEnemyAlive(e)) {
            counter++;
          }
        }
        if (counter > 0) {
          int limit = 0;
          for (int r = 0; r < 9; r++) {
            if (i == engine.getRoomRow(r) && j == engine.getRoomCol(r)) {
              panel.add(engine.getRoomPic(r));
            }
          }
          if (i == engine.getPlayerRow() && j == engine.getPlayerCol() && limit < 1) {
            panel.add(engine.getSpyPicture());
            limit++;
          }
          for (int e = 0; e < 6; e++) {
            if (i == engine.getEnemyRow(e)
                && j == engine.getEnemyCol(e)
                && limit < 1
                && engine.isEnemyAlive(e)) {
              JLabel imgEnemy = engine.getEnemyPic(e);
              panel.add(imgEnemy);
              engine.hideEnemy(e);
              limit++;
            }
          }

          for (int p = 0; p < 3; p++) {
            if (engine.isPowerupActivated(p)) {
              if (i == engine.getPowerupRow(p) && j == engine.getPowerupCol(p) && limit < 1) {
                panel.add(engine.getPowerUpPic(p));
                engine.hidePowerup(p);
                limit++;
              }
            }
          }
        } else {
          if (number == 1) {
            if (i == engine.getPlayerRow() - 1 && j == engine.getPlayerCol()) {
              JLabel imgEmpty = new JLabel(new ImageIcon("GameImgs/Image-1.jpg"));
              panel.add(imgEmpty);
            } else if (i == engine.getPlayerRow() - 2 && j == engine.getPlayerCol()) {
              JLabel imgEmpty = new JLabel(new ImageIcon("GameImgs/Image-1.jpg"));
              panel.add(imgEmpty);
            } else // fog
            {
              JLabel imgEmpty = new JLabel(new ImageIcon("GameImgs/FogAlpha.jpg"));
              panel.add(imgEmpty);
            }
          } else if (number == 2) {
            if (i == engine.getPlayerRow() + 1 && j == engine.getPlayerCol()) {
              JLabel imgEmpty = new JLabel(new ImageIcon("GameImgs/Image-1.jpg"));
              panel.add(imgEmpty);
            } else if (i == engine.getPlayerRow() + 2 && j == engine.getPlayerCol()) {
              JLabel imgEmpty = new JLabel(new ImageIcon("GameImgs/Image-1.jpg"));
              panel.add(imgEmpty);
            } else // fog
            {
              JLabel imgEmpty = new JLabel(new ImageIcon("GameImgs/FogAlpha.jpg"));
              panel.add(imgEmpty);
            }
          } else if (number == 3) {
            if (i == engine.getPlayerRow() && j == engine.getPlayerCol() - 1) {
              JLabel imgEmpty = new JLabel(new ImageIcon("GameImgs/Image-1.jpg"));
              panel.add(imgEmpty);
            } else if (i == engine.getPlayerRow() && j == engine.getPlayerCol() - 2) {
              JLabel imgEmpty = new JLabel(new ImageIcon("GameImgs/Image-1.jpg"));
              panel.add(imgEmpty);
            } else // fog
            {
              JLabel imgEmpty = new JLabel(new ImageIcon("GameImgs/FogAlpha.jpg"));
              panel.add(imgEmpty);
            }
          } else if (number == 4) {
            if (i == engine.getPlayerRow() && j == engine.getPlayerCol() + 1) {
              JLabel imgEmpty = new JLabel(new ImageIcon("GameImgs/Image-1.jpg"));
              panel.add(imgEmpty);
            } else if (i == engine.getPlayerRow() && j == engine.getPlayerCol() + 2) {
              JLabel imgEmpty = new JLabel(new ImageIcon("GameImgs/Image-1.jpg"));
              panel.add(imgEmpty);
            } else // fog
            {
              JLabel imgEmpty = new JLabel(new ImageIcon("GameImgs/FogAlpha.jpg"));
              panel.add(imgEmpty);
            }
          } else // fog
          {
            JLabel imgEmpty = new JLabel(new ImageIcon("GameImgs/FogAlpha.jpg"));
            panel.add(imgEmpty);
          }
        }
        panel.validate();
      }
    }
  }
  /**
   * Prints the debug version of the display, which so to speak is the mode used to debug the
   * system. This will reveal all enemies and power ups.
   *
   * @param number - the number that the player inputs in order to look around.
   */
  public void debugPaint(int number) {
    panel.removeAll();
    for (int i = 0; i < 9; i++) {
      for (int j = 0; j < 9; j++) {
        int counter = 0;
        if (i == engine.getPlayerRow() && j == engine.getPlayerCol()) {
          counter++;
        }

        for (int r = 0; r < 9; r++) {
          if (i == engine.getRoomRow(r) && j == engine.getRoomCol(r)) {
            counter++;
          }
        }

        for (int p = 0; p < 3; p++) {
          if (engine.isPowerupActivated(p)) {
            if (i == engine.getPowerupRow(p) && j == engine.getPowerupCol(p)) {
              counter++;
            }
          }
        }

        for (int e = 0; e < 6; e++) {
          if (i == engine.getEnemyRow(e) && j == engine.getEnemyCol(e) && engine.isEnemyAlive(e)) {
            counter++;
          }
        }
        if (counter > 0) {
          int limit = 0;
          for (int r = 0; r < 9; r++) {
            if (i == engine.getRoomRow(r) && j == engine.getRoomCol(r)) {
              engine.revealRoom(r);
              panel.add(engine.getRoomPic(r));
            }
          }
          if (i == engine.getPlayerRow() && j == engine.getPlayerCol() && limit < 1) {
            panel.add(engine.getSpyPicture());
            limit++;
          }
          for (int e = 0; e < 6; e++) {
            if (i == engine.getEnemyRow(e)
                && j == engine.getEnemyCol(e)
                && limit < 1
                && engine.isEnemyAlive(e)) {
              engine.revealEnemy(e);
              JLabel imgEnemy = engine.getEnemyPic(e);
              panel.add(imgEnemy);
              limit++;
            }
          }
          for (int p = 0; p < 3; p++) {
            if (engine.isPowerupActivated(p)) {
              if (i == engine.getPowerupRow(p) && j == engine.getPowerupCol(p) && limit < 1) {
                engine.revealPowerup(p);
                panel.add(engine.getPowerUpPic(p));
                limit++;
              }
            }
          }
        } else {
          JLabel imgEmpty = new JLabel(new ImageIcon("GameImgs/Image-1.jpg"));
          panel.add(imgEmpty);
        }

        panel.revalidate();
      }
    }
  }