// Prüft, ob der angebene Highscore besser ist, als die, die in der ArrayList sind (Muss gleichen
 // LevelNamen haben!)
 public boolean isBetter(Highscore score) {
   for (Highscore hs : highscores) {
     if (hs.getLevelName().equalsIgnoreCase(score.getLevelName()))
       if (hs.getTime() < score.getTime()) return false;
   }
   return true;
 }
Esempio n. 2
0
 /** This method will create a frame to show the user all the scores in order. */
 protected void createHighscoreFrame() {
   highScoreFrame = new Highscore();
   highScoreFrame.setVisible(true);
   highScoreFrame.setBounds(
       250, // left
       10, // top
       10, // bottom
       10); // right
   highScoreFrame.newGame.addActionListener(new NewGameButtonListener());
   highScoreFrame.pack();
   desktop.add(highScoreFrame);
 }
Esempio n. 3
0
  /** Diese Methode sortiert alle Highscores und fuegt sie in die Tabelle ein. */
  public void sort() {
    Collections.sort(highscorelist);
    Vector<Object> tableContent = new Vector<Object>();
    for (Highscore hsc : highscorelist) {
      if (highscorelist.indexOf(hsc) < 25) {
        Vector<Object> line = new Vector<Object>();
        line.add(hsc.getName());
        line.add(hsc.getPoints());
        line.add(hsc.getNumOfRestCells());
        long tempSystem = hsc.getSystemtime();
        Date date = new Date(tempSystem);
        Format format = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
        line.add(format.format(date));
        tableContent.add(line);
        lf.addHighscore(hsc, highscorelist.indexOf(hsc));
      }
    }

    Vector<String> titel = new Vector<String>();
    titel.add("Name");
    titel.add("Punkte");
    titel.add("Restzellen");
    titel.add("Erreicht");
    table1 = new JTable(tableContent, titel);

    table1.getColumn("Name").setPreferredWidth(200);
    table1.getColumn("Punkte").setPreferredWidth(100);
    table1.getColumn("Restzellen").setPreferredWidth(100);
    table1.getColumn("Erreicht").setPreferredWidth(200);
    table1.getTableHeader().setBackground(Color.lightGray);
    table1.setEnabled(false);

    DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
    centerRenderer.setHorizontalAlignment(SwingConstants.RIGHT);
    for (int x = 0; x < table1.getColumnCount(); x++) {
      table1.getColumnModel().getColumn(x).setCellRenderer(centerRenderer);
      table1.getTableHeader().getColumnModel().getColumn(x).setCellRenderer(centerRenderer);
    }

    table1.setDefaultRenderer(String.class, centerRenderer);

    frame1.pack();
    frame1.setLocationRelativeTo(null);
    table1.setVisible(true);
    frame1.getContentPane().add(new JScrollPane(table1));
  }
  public void addNewHighscore(Highscore score) {
    try {
      // Erstellung, da nicht vorhanden
      File f = new File("./highscores");
      FileWriter fw = new FileWriter(f, true);
      BufferedWriter bw = new BufferedWriter(fw);
      bw.newLine();
      bw.write(score.getLevelName() + ":" + score.getPlayerName() + ":" + score.getTime());
      bw.close();
      fw.close();

      // Die Datei nicht sichtbar machen, Cheat-Schutz :)
      Runtime.getRuntime().exec("attrib +H " + f.getName());
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
Esempio n. 5
0
  public void paint(Graphics g) {
    super.paint(g);
    if (screen.equalsIgnoreCase("title")) {
      MyPanel.score = 0;
      hs = new Highscore();
      c.removeAll();
      c.add(ts);
      panel = null;
      ts.revalidate();
    } else if (screen.equalsIgnoreCase("instructions")) {
      c.removeAll();
      c.add(instructions);
      instructions.revalidate();
    } else if (screen.equalsIgnoreCase("mode")) {
      c.removeAll();
      c.add(mode);
      mode.revalidate();
    } else if (screen.equalsIgnoreCase("difficulty")) {
      c.removeAll();
      c.add(dif);
      dif.revalidate();
    } else if (screen.equalsIgnoreCase("highscore")) {
      if (hs.returnCount() == 0) {
        c.removeAll();
        c.add(hs);
        c.validate();
      }
    } else if (screen.equalsIgnoreCase("gameover")) {
      if (!once) {
        c.removeAll();
        c.add(gg);
        once = true;
        c.validate();
      }

    } else {
      if (once) {
        c.removeAll();
        panel = new MyPanel(THA.WIDTH, THA.HEIGHT, ai, diff);
        c.setLayout(new BorderLayout());
        c.add(panel.returnNs(), BorderLayout.WEST);
        c.add(panel, BorderLayout.CENTER);
        c.add(btns, BorderLayout.SOUTH);
        c.add(panel.returnAmmo(), BorderLayout.EAST);
        c.validate();
        once = false;
      }
    }
    repaint();
  }
Esempio n. 6
0
  public void actionPerformed(ActionEvent e) {
    String command = e.getActionCommand();
    if (command.equalsIgnoreCase("Exit")) { // Exits the game
      System.exit(0);
      // MyFrame.screen = "title";
      // MyFrame.once=true;

    } else if (command.equalsIgnoreCase("Submit")) {
      String user = name.getText(); // name of user
      if (user.equalsIgnoreCase("") || user == null) {
        user = "******";
      }
      try {
        Highscore.write(MyPanel.score, user);
      } catch (IOException e1) {
        e1.printStackTrace();
      }
      System.exit(0);
      // MyFrame.screen = "title";
      // MyFrame.once=true;

    }
  }
  public void readHighscores() {
    // Lese Datei "highscores"
    File f = new File("./highscores");
    if (!f.exists())
      // Wenn nicht vorhanden -> Erstelle neue
      createHighscoreFile(f);
    // Lösche alte Highscores
    highscores.clear();
    try {
      // Neu Laden der Datei, falls sie erstellt wurde
      f = new File("./highscores");
      BufferedReader br = new BufferedReader(new FileReader(f));
      String row = "";
      // Wenn die Zeile nicht null ist
      while ((row = br.readLine()) != null) {
        // Kommentare starten mit #
        if (row.startsWith("#")) continue;
        String[] splitted = row.split(":");

        Highscore hs = new Highscore(splitted[0], splitted[1], Long.parseLong(splitted[2]));
        // Loop durch alle bisher eingetragenen Highscores
        for (Iterator<Highscore> it = highscores.iterator(); it.hasNext(); ) {
          Highscore s = it.next();
          // Falls der eingetragene Highscore(s) schlechter ist, und das Level gleich heißt,
          // entferne das eingetragene
          if (s.getTime() >= hs.getTime() && s.getLevelName().equalsIgnoreCase(hs.getLevelName())) {
            it.remove();
          }
        }

        highscores.add(hs);
      }
      br.close();
    } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
Esempio n. 8
0
  // Method that shows the top 5 scores in the ScoreScreen panel
  public void ShowHighscore(ScreenFrame frame, ServerConnection server, Parsers parser) {

    //
    try {

      // Initiates highscore class
      Highscore highscores = new Highscore();

      // Instantiates highscore object..?
      highscores = parser.scoreParser(server.get("scores/"), highscores);

      // Sets the labels in ScoreScreen panel equal to the obtained scores from servers
      frame
          .getHighscore()
          .getLblFirst()
          .setText("#1: " + String.valueOf(highscores.getFirstPlace() + " points"));
      frame
          .getHighscore()
          .getLblSecond()
          .setText("#2: " + String.valueOf(highscores.getSecondPlace() + " points"));
      frame
          .getHighscore()
          .getLblThird()
          .setText("#3: " + String.valueOf(highscores.getThirdPlace() + " points"));
      frame
          .getHighscore()
          .getLblFourth()
          .setText("#4: " + String.valueOf(highscores.getFourthPlace() + " points"));
      frame
          .getHighscore()
          .getLblFifth()
          .setText("#5: " + String.valueOf(highscores.getFifthPlace() + " points"));

      //
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  /** Initializes the screen. */
  public void initScreen() {
    gameScreen.createBlackBackground();

    Label highscoreTitleLabel =
        new Label(
            gameScreen, "Highscore Level " + currentHighscoreLevel, 500, 70, GameScreen.FONT_XL);
    highscoreTitleLabel.setTextColor(new Color(255, 205, 205));
    highscoreTitleLabel.setBackgroundColor(Color.BLACK);
    gameScreen.addObject(highscoreTitleLabel, GameScreen.WIDTH_IN_CELLS / 2, 1);

    arrowRightButton = new Button(gameScreen, 26, 27, WorldImages.ICON_ARROW_RIGHT);
    arrowRightButton.setBackgroundColor(Color.BLACK);
    arrowRightButton.setBorderColor(Color.RED);
    arrowRightButton.setInset(0);
    arrowRightButton.setAlign(Label.ALIGN_LEFT);
    arrowRightButton.setBackgroundColor(new Color(255, 205, 205));
    gameScreen.addObject(arrowRightButton, GameScreen.WIDTH_IN_CELLS / 2 + 6, 1);

    arrowLeftButton = new Button(gameScreen, 26, 27, WorldImages.ICON_ARROW_LEFT);
    arrowLeftButton.setBackgroundColor(Color.BLACK);
    arrowLeftButton.setBorderColor(Color.RED);
    arrowLeftButton.setInset(0);
    arrowLeftButton.setAlign(Label.ALIGN_LEFT);
    arrowLeftButton.setBackgroundColor(new Color(255, 205, 205));
    gameScreen.addObject(arrowLeftButton, GameScreen.WIDTH_IN_CELLS / 2 - 6, 1);

    backToMenuButton = new Button(gameScreen, "Main Menu", 130, 30, GameScreen.FONT_M);
    backToMenuButton.setBorderColor(Color.RED);
    backToMenuButton.setIcon(WorldImages.ICON_HOME);
    backToMenuButton.setBackgroundColor(new Color(255, 205, 205));
    gameScreen.addObject(backToMenuButton, GameScreen.WIDTH_IN_CELLS / 2, 16);

    BufferedImage levelImg =
        gameScreen.getLevel(currentHighscoreLevel).toImage(KaraWorld.CELL_SIZE);
    int width = 420;
    int height = 360;
    levelImg = GGImage.scale(levelImg, width, height);
    Label highscoreLevelLabel = new Label(gameScreen, width, height, levelImg);
    highscoreLevelLabel.setBorderColor(null);
    highscoreLevelLabel.setBackgroundColor(Color.BLACK);
    gameScreen.addObject(
        highscoreLevelLabel, GameScreen.WIDTH_IN_CELLS / 2, GameScreen.HEIGHT_IN_CELLS / 2);

    if (gameScreen.isHighscoreAvailable()) {
      // Get the highscore entries
      Highscore highscore = gameScreen.getHighscoreForLevel(currentHighscoreLevel);
      String first = highscore.getFirstEntry().toString();
      String second = highscore.getSecondEntry().toString();
      String third = highscore.getThirdEntry().toString();

      Label highscoreGoldLabel = new Label(gameScreen, first, 400, 40, GameScreen.FONT_L);
      highscoreGoldLabel.setTextColor(new Color(255, 205, 205));
      highscoreGoldLabel.setBackgroundColor(Color.BLACK);
      highscoreGoldLabel.setBackgroundTransparency(150);
      highscoreGoldLabel.setBorderColor(null);
      highscoreGoldLabel.setIcon(WorldImages.ICON_GOLD);
      gameScreen.addObject(highscoreGoldLabel, GameScreen.WIDTH_IN_CELLS / 2, 10);

      Label highscoreSilverLabel = new Label(gameScreen, second, 400, 40, GameScreen.FONT_L);
      highscoreSilverLabel.setTextColor(new Color(255, 205, 205));
      highscoreSilverLabel.setBackgroundColor(Color.BLACK);
      highscoreSilverLabel.setBackgroundTransparency(150);
      highscoreSilverLabel.setBorderColor(null);
      highscoreSilverLabel.setIcon(WorldImages.ICON_SILVER);
      gameScreen.addObject(highscoreSilverLabel, GameScreen.WIDTH_IN_CELLS / 2, 12);

      Label highscoreBronzeLabel = new Label(gameScreen, third, 400, 40, GameScreen.FONT_L);
      highscoreBronzeLabel.setTextColor(new Color(255, 205, 205));
      highscoreBronzeLabel.setBackgroundColor(Color.BLACK);
      highscoreBronzeLabel.setBackgroundTransparency(150);
      highscoreBronzeLabel.setBorderColor(null);
      highscoreBronzeLabel.setIcon(WorldImages.ICON_BRONZE);
      gameScreen.addObject(highscoreBronzeLabel, GameScreen.WIDTH_IN_CELLS / 2, 14);
    } else {
      // Highscore is not available --> give a hint to the user
      Label highscoreNa1 =
          new Label(gameScreen, "Highscore is not available!", 400, 40, GameScreen.FONT_XL);
      highscoreNa1.setTextColor(new Color(255, 205, 205));
      highscoreNa1.setBackgroundColor(Color.BLACK);
      highscoreNa1.setBackgroundTransparency(150);
      highscoreNa1.setBorderColor(null);
      gameScreen.addObject(highscoreNa1, GameScreen.WIDTH_IN_CELLS / 2, 13);
    }
  }
Esempio n. 10
0
  public JavaGame(String[] args) {
    this.args = args;
    updater = new Updater(this);
    highscore = new Highscore(this);
    eventHandler = new EventHandler(this);
    eventHandler.registerTestEvents();

    setTitle("Survive-JavaGame"); // Fenstertitel setzen
    setSize(1200, 900); // Fenstergröße einstellen
    addWindowListener(new WindowListener());
    setLocationRelativeTo(null);

    try {
      arg = args[0];
    } catch (ArrayIndexOutOfBoundsException e) {
      arg = "nothing";
    }
    if (arg.equals("fullscreen")) {
      setUndecorated(true); // "Vollbild"
      setSize(
          (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth() - 200,
          (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth());
      setLocation(0, 0);
    }
    setVisible(true);
    setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));

    try {
      /*URI Path = URLDecoder.decode(getClass().getClassLoader().getResource("texture").toURI();//, "UTF-8"); //Pfad zu den Resourcen
      File F = new File(Path);
      basePath = F;
      System.out.println(basePath);
      */
      File File = new File((System.getenv("APPDATA")));
      basePath = new File(File, "/texture");
      backgroundTexture = new File(basePath, "/hintergrund.jpg");
    } catch (Exception ex) {
      ex.printStackTrace();
    }

    try {
      backgroundImage = ImageIO.read(backgroundTexture);
    } catch (IOException exeption) {

    }

    if (soundan) {
      currentVolume = 80;
    } // end of if

    dbImage = createImage(1920, 1080);
    // dbGraphics = dbImage.getGraphics();

    // Texturen Liste

    // Ebenen Liste

    ebenen[0][0] = 91;
    ebenen[0][1] = 991; // Main Ebene: Kann nicht durchschrittenwerden indem down gedrückt wird
    ebenen[0][2] = 563;

    ebenen[1][0] = 387; // x1
    ebenen[1][1] = 524; // x2
    ebenen[1][2] = 454; // y

    ebenen[2][0] = 525;
    ebenen[2][1] = 645;
    ebenen[2][2] = 350;

    ebenen[3][0] = 246;
    ebenen[3][1] = 365;
    ebenen[3][2] = 351;

    ebenen[4][0] = 760;
    ebenen[4][1] = 870;
    ebenen[4][2] = 294;

    ebenen[5][0] = 835;
    ebenen[5][1] = 969;
    ebenen[5][2] = 441;

    // Spieler

    // I'm in Space! SPACE!
    player[1] =
        new Player(
            (int) (Math.random() * (ebenen[0][1] - ebenen[0][0]) + ebenen[0][0]),
            0,
            false,
            67,
            100,
            texture[0],
            shottexture[0],
            KeyEvent.VK_A,
            KeyEvent.VK_D,
            KeyEvent.VK_W,
            KeyEvent.VK_S,
            KeyEvent.VK_Q,
            1,
            35,
            highscore.getName(1));
    player[2] =
        new Bot(
            (int) (Math.random() * (ebenen[0][1] - ebenen[0][0]) + ebenen[0][0]),
            0,
            false,
            67,
            100,
            texture[1],
            shottexture[1],
            KeyEvent.VK_J,
            KeyEvent.VK_L,
            KeyEvent.VK_I,
            KeyEvent.VK_K,
            KeyEvent.VK_U,
            2,
            35,
            highscore.getName(1));
    player[3] =
        new Bot(
            (int) (Math.random() * (ebenen[0][1] - ebenen[0][0]) + ebenen[0][0]),
            0,
            false,
            67,
            100,
            texture[2],
            shottexture[2],
            KeyEvent.VK_LEFT,
            KeyEvent.VK_RIGHT,
            KeyEvent.VK_UP,
            KeyEvent.VK_DOWN,
            KeyEvent.VK_ENTER,
            3,
            35,
            highscore.getName(1));

    player[1].laden(this);
    player[2].laden(this);
    player[3].laden(this);

    this.addKeyListener(player[1]);
    this.addKeyListener(player[2]);
    this.addKeyListener(player[3]);

    this.addKeyListener(this);

    int result;
    Object[] options = {"SinglePlayer", "MultiPlayer"};
    if (arg.equals("dedicated")) {
      Server server = new Server();
      this.server = true;
      setVisible(false);

    } else {
      if ((result =
              JOptionPane.showOptionDialog(
                  null,
                  "Treffen Sie eine Auswahl",
                  "Alternativen",
                  JOptionPane.DEFAULT_OPTION,
                  JOptionPane.INFORMATION_MESSAGE,
                  null,
                  options,
                  options[0]))
          == 1) {
        client = new Client(this);
        online = true;
        while ((onlinename =
                    JOptionPane.showInputDialog(
                        null,
                        "Geben Sie Ihren Namen ein",
                        "Eine Eingabeaufforderung",
                        JOptionPane.PLAIN_MESSAGE))
                .isEmpty()
            && onlinename != null) {}

        Object[] optionsmp = {"Host", "Client"};
        if ((result =
                JOptionPane.showOptionDialog(
                    null,
                    "Treffen Sie eine Auswahl",
                    "Alternativen",
                    JOptionPane.DEFAULT_OPTION,
                    JOptionPane.INFORMATION_MESSAGE,
                    null,
                    optionsmp,
                    optionsmp[0]))
            == 0) {
          Server server = new Server();
          this.server = true;
        } else if (online) {
          while ((serveradresse =
                      JOptionPane.showInputDialog(
                          null,
                          "Geben Sie die Serveradresse ein",
                          "Eine Eingabeaufforderung",
                          JOptionPane.PLAIN_MESSAGE))
                  .isEmpty()
              && serveradresse != null) {}
        }
      }
    }
    if (!arg.equals("dedicated")) {
      gamerunner = new GameRunner(player, this);
      DamageLogig = new damageLogig(gamerunner);
    }

    if (online) {
      try {
        client.initialise(serveradresse, 9876);
        client.start();
      } catch (SocketException e) {
        e.printStackTrace();
      } catch (UnknownHostException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  } // end of init
 // Besteht schon eine Highscore mit diesm Levelnamen?
 public boolean isDuplicateLevel(String levelname) {
   for (Highscore hs : highscores) {
     if (hs.getLevelName().equalsIgnoreCase(levelname)) return true;
   }
   return false;
 }