// 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; }
/** 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); }
/** 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(); } }
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(); }
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(); } }
// 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); } }
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; }