Ejemplo n.º 1
1
  /**
   * Метод, рисующий всё содержимое игры, используя Graphics2D.
   *
   * @param g объект класса Graphics для рисования в панели
   */
  @Override
  public void paint(Graphics g) {
    super.paint(g);
    Graphics2D g2d = (Graphics2D) g;
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

    drawScore(g); // рисование панели с очками и жизнями
    drawMap(g); // рисование самой карты
    drawPellets(g); // рисование точек
    for (int i = 0; i < ghostNum; i++) ghost[i].paint(g2d, i); // рисование привидений
    pacman.paint(g2d); // и Пакмана
    if (!inGame) { // если игра не запущена
      showIntroScreen(g2d); // начальный экран
      refresh(); // обновление карты
    }
  }
Ejemplo n.º 2
0
  public static void main(String[] args) throws IOException {
    System.out.println("Welcome to Pac Man problem !!");

    Pacman obj = new Pacman();
    int selection = Integer.parseInt(args[0]);
    String[] files = {
      "smallSearch.txt", "trickySearch.txt",
    };

    File mazeFile = new File(files[selection]);
    BufferedReader br = new BufferedReader(new FileReader(mazeFile));
    String line;
    int M = 0;
    int N = 0;
    while ((line = br.readLine()) != null) {
      M++;
      String[] items = line.split("");
      N = items.length;
    }
    br.close();

    char[][] maze = new char[M][N];

    // Initialize start point and read maze
    obj.readMaze(mazeFile, maze, start);

    // Print maze
    obj.printMaze(maze);

    // Get goals for the start state
    start.goals = obj.goals(maze);

    // Run A star search
    obj.astar(maze);
  }
Ejemplo n.º 3
0
 /**
  * Метод, объединящий движение героев игры.
  *
  * <p>Для движения привидений используется метод Move(), а для движения Пакмана move() или
  * demoMove, в зависимости от режима игры, т.е. значения переменной demo.
  *
  * @throws FileNotFoundException
  * @throws InterruptedException
  */
 public void move() throws FileNotFoundException, InterruptedException {
   if (!demo && !replay) { // обычный режим игры
     if (!pause) {
       pacman.setDemo(false);
       pacman.setReplay(false);
       for (int i = 0; i < ghostNum; i++) ghost[i].Move();
       pacman.move();
       repaint();
     }
   } else if (demo) { // автоматический режим
     pacman.setDemo(true);
     for (int i = 0; i < ghostNum; i++) ghost[i].Move();
     pacman.demoMove();
     repaint();
   } else if (replay) { // повтор игры
     pacman.setReplay(true);
     for (int i = 0; i < ghostNum; i++) ghost[i].notationMove();
     // ghost[i].Move();
     pacman.notationMove();
     if (pacman.collision()) {
       pacman.lives--;
       continueLevel();
     }
     repaint();
   }
 }
Ejemplo n.º 4
0
 /**
  * Метод продолжения уровня после столкновения Пакмана с привидением.
  *
  * <p>Герои устанавливаются в свои исходные координаты.
  *
  * <p>Если количество жизней Пакмана равно 0, то вызывается вывод окна о проигрыше.
  */
 public void continueLevel() {
   if (pacman.lives == 0) {
     if (replay) {
       score += 1;
     }
     repaint();
     finish = true;
     gameOver(); // окно "Конец игры"
   }
   // восстанавливаем начальное положение
   pacman.x = 25; // пакмана и привидений
   pacman.y = 25;
   pacman.dx = 0;
   pacman.dy = 0;
   for (int i = 0; i < ghostNum; i++) {
     ghost[i].x = 325;
     ghost[i].y = 350;
     ghost[i].dx = 0;
     ghost[i].dy = 0;
   }
 }
Ejemplo n.º 5
0
  /**
   * Метод обновления (восстановления) карты.
   *
   * <p>Матрица перезаписывается начальными значениями, герои устанавливаются в свои исходные
   * координаты.
   */
  public void refresh() {
    for (int i = 0; i < 25; i++)
      for (int j = 0; j < 26; j++) {
        grid[i][j] = grid2[i][j]; // восстанавливаем карту
      }
    // finish = false;
    pacman.lives = 3; // задаём начальные значения
    score = 0; // жизней, очков, координат

    pacman.x = 25;
    pacman.y = 25;
    pacman.dx = 0;
    pacman.dy = 0;

    for (int i = 0; i < ghostNum; i++) {
      ghost[i].x = 325;
      ghost[i].y = 350;
      ghost[i].dx = 0;
      ghost[i].dy = 0;
    }
  }
Ejemplo n.º 6
0
  /** {@inheritDoc} */
  @Override
  @requires("java-runtime>=7")
  public boolean invoke(final String command, final boolean consumed, final Scanner scanner) {
    if (command.equals("help")) {
      if (consumed) return true;
      System.out.println("COMMANDS:     DESCRIPTIONS:");
      System.out.println("help          Leads here...");
      System.out.println("show c        Show copyright notice.");
      System.out.println("show w        Show warranty notice.");
      System.out.println("show l        Show licenses.");
      System.out.println("version       Print version information about this program.");
      System.out.println("credits       Shows the credits of this program and all aktiv plug-ins.");
    } else if (command.equals("show c")) {
      if (consumed) return true;
      System.out.println("Paradis — Ever growing network for parallell and distributed computing.");
      System.out.println("Copyright © 2012  Mattias Andrée");
      System.out.println();
      System.out.println("This program is free software: you can redistribute it and/or modify");
      System.out.println(
          "it under the terms of the GNU Affero General Public License as published by");
      System.out.println("the Free Software Foundation, either version 3 of the License, or");
      System.out.println("(at your option) any later version.");
      System.out.println();
      System.out.println(
          "You should have received a copy of the GNU Affero General Public License");
      System.out.println("along with this program.  If not, see <http://www.gnu.org/licenses/>.");
    } else if (command.equals("show w")) {
      if (consumed) return true;
      System.out.println("This program is distributed in the hope that it will be useful,");
      System.out.println("but WITHOUT ANY WARRANTY; without even the implied warranty of");
      System.out.println("MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the");
      System.out.println("GNU Affero General Public License for more details.");
    } else if (command.equals("show l")) {
      if (consumed) return true;
      final String pager = Properties.getPager();

      if (FileHandler.fileExists("res/COPYING+colour"))
        Pager.pageFile(pager, "Copyright information", "res/COPYING+colour");
      else if (FileHandler.fileExists("res/COPYING"))
        Pager.pageFile(pager, "Copyright information", "res/COPYING");
      else Pager.pageFile(pager, "Copyright information", "COPYING");

      if (FileHandler.fileExists("res/LICENSE.AGPL3+colour"))
        Pager.pageFile(pager, "GNU Affero General Public License v3", "res/LICENSE.AGPL3+colour");
      else if (FileHandler.fileExists("res/LICENSE.AGPL3"))
        Pager.pageFile(pager, "GNU Affero General Public License v3", "res/LICENSE.AGPL3");
      else Pager.pageFile(pager, "GNU Affero General Public License v3", "LICENSE.AGPL3");

      if (FileHandler.fileExists("res/LICENSE.GPL3+colour"))
        Pager.pageFile(pager, "GNU General Public License v3", "res/LICENSE.GPL3+colour");
      else if (FileHandler.fileExists("res/LICENSE.GPL3"))
        Pager.pageFile(pager, "GNU General Public License v3", "res/LICENSE.GPL3");
      else Pager.pageFile(pager, "GNU General Public License v3", "LICENSE.GPL3");

      if (FileHandler.fileExists("res/LICENSE.GPL2+colour"))
        Pager.pageFile(pager, "GNU General Public License v2", "res/LICENSE.GPL2+colour");
      else if (FileHandler.fileExists("res/LICENSE.GPL2"))
        Pager.pageFile(pager, "GNU General Public License v2", "res/LICENSE.GPL2");
      else Pager.pageFile(pager, "GNU General Public License v2", "LICENSE.GPL2");
    } else if (command.equals("version")) {
      if (consumed) return true;
      System.out.println("Package:   " + Program.PACKAGE);
      System.out.println("Fork path: " + Program.FORK);
      System.out.println("Version:   " + Program.VERSION);
      System.out.println();
      System.out.println("Website:   " + Program.WEBSITE);
    } else if (command.equals("credits")) {
      if (consumed) return true;
      System.out.println("Paradis — Ever growing network for parallell and distributed computing.");
      System.out.println("Copyright © 2012  Mattias Andrée");
    } else if (command.equals("shell")) {
      if (consumed) return true;
      String shell = Properties.getShell();
      if ((shell == null) || shell.isEmpty())
        System.out.println(
            "Impossible to determine shell, your shell should export SHELL to it's file name (e.g. bash).");
      else
        try {
          final ProcessBuilder builder = new ProcessBuilder(shell);
          builder.inheritIO();
          builder.start().waitFor();
        } catch (final Throwable err) {
          System.out.print("Cannot manage to start shell");
        }
    } else if (command.equals("pacman") || command.startsWith("pacman ")) {
      if (consumed) return true;
      Pacman.main(
          command.equals("pacman")
              ? new String[0]
              : command.substring("pacman ".length()).split(" "));
    } else if (command.equals("makepkg") || command.startsWith("makepkg ")) {
      if (consumed) return true;
      Makepkg.main(
          command.equals("makepkg")
              ? new String[0]
              : command.substring("makepkg ".length()).split(" "));
    } else return false;

    return true;
  }