[Java] Highscore am besten wie realisieren?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von mufi, 4. Juni 2008 .

  1. 4. Juni 2008
    Highscore am besten wie realisieren?

    Hi Leute,

    ich muss heute Abend meine Aufgabe, nämlich eine Implementierung des Atari Pongs abgeben. Es läuft alles wunderbar mit allen möglichen Einstellungsmöglichkeiten, zusätzlichen Actions und sogar stabil übers Netzwerk oder Internet. Allerdings fehlt mir als allerletzter Punkt ein Highscore. Datei anlegen und den Sieger mit Punkten kann ich zwar abspeichern, aber wie kann ichs am einfachsten machen, dass die Datei vorher ausgelesen, der Inhalt zwischengespeichert und mit einem neuen Highscore eines neuen Spiels sortiert nach Punkten abgespeichert wird? Und womit könnte ichs in javax.swing am besten darstellen(die gesamte Highscoreliste)? Bitte helft mir...

    Thx mufi
     
  2. 4. Juni 2008
    AW: Highscore am besten wie realisieren?

    ich würds mit einem jTable machen. Der Vector beinhaltet die passenden String Einträge

    Hier etwas Quellcode unsortiert von einem Teil meines Programms

    Code:
    private String[] names = new String[]{
     "Datum", "Anwender", "Kunde", "Behandlungsliste", "Betrag" , "Bezahlt"
     };
     
     private Object[][] objectArray = new Object[0][0];
     
    
    
    
    
     public void listToArray()
     {
     
     if (this.rechnungListe != null)
     {
     int j = getAnzahlDerSichtbaren();
     this.objectArray = new Object[j][names.length];
     if (j >0)
     {
     int i = 0;
     for (Rechnung r : this.rechnungListe)
     {
     if (r.getSichtbar())
     {
     this.objectArray[i][0] = r.getDatum();
     this.objectArray[i][1] = r.getAnwender().getNachname()+", "+r.getAnwender().getVorname();
     this.objectArray[i][2] = r.getKunde().getNachname() + ", "+r.getKunde().getVorname();
     String tmp = "";
     for (Medizin m : r.getBestellung())
     {
     tmp = tmp + m.getName() + "(" + m.getPreis() + "), ";
     }
     tmp = tmp.substring(0, tmp.length()-2);
     this.objectArray[i][3] = tmp;
    
     DecimalFormat df = new DecimalFormat("#.00");
     double tmpDouble = r.getPreis();
     if (r.getMwst()>1)
     {
     this.objectArray[i][4] = df.format(tmpDouble*r.getMwst()/100);
     }else
     {
     this.objectArray[i][4] = df.format(tmpDouble/100);
     }
    
     this.objectArray[i][5] = r.getBezahlt();
     i++;
     }
     }
     }
     else
     {
     this.objectArray = new Object[1][5];
     this.objectArray[0][0] = "";
     this.objectArray[0][1] = "";
     this.objectArray[0][2] = "";
     this.objectArray[0][3] = "";
     this.objectArray[0][4] = "";
     this.objectArray[0][4] = "";
     }
     }else
     {
     this.objectArray = new Object[1][5];
     this.objectArray[0][0] = "";
     this.objectArray[0][1] = "";
     this.objectArray[0][2] = "";
     this.objectArray[0][3] = "";
     this.objectArray[0][4] = "";
     this.objectArray[0][4] = "";
     }
     jTable1.setModel(new javax.swing.table.DefaultTableModel(this.objectArray,this.names));
     }
    
    
    hoffe du kannst damit etwas anfangen
     
  3. 4. Juni 2008
    AW: Highscore am besten wie realisieren?

    Hey Vielen Dank,

    jetzt weiß ich wie ichs geeignet darstellen kann, aber es besteht noch das Problem, dass ich ja die Highscoreliste als .ini abspeicher, damit die Highscore niemals verloren gehen. Und daher muss ja bei jedem save des Highscore, die alte .ini ausgelesen, sortiert und wieder abgespeichert werden.
    Bewertung hast du sicher. Ich hoffe, ich krieg noch Hilfe von anderen...

    Thx
     
  4. 4. Juni 2008
    AW: Highscore am besten wie realisieren?

    hm, muss diese datei auch wenn man sie mitm editor öffnet leselich sein?? ansonsten kannst du z.B. ne ArrayList machen, und diese als objectoutputstream in die datei speichern. und die ist dann zum auslesen und sortieren relativ einfach...

    mfg swissmaster

    ps: das stichwort heisst serialisieren
     
  5. 4. Juni 2008
    AW: Highscore am besten wie realisieren?

    zum serealisieren hilft dir vielleicht der programm code

    Code:
    public void speicherRechnung(LinkedList<Rechnung> liste)
     {
     OutputStream fos = null;
    
     try 
     {
     fos = new FileOutputStream( "rechnungsliste.ser" );
     ObjectOutputStream out = new ObjectOutputStream( fos );
     out.writeObject( liste );
     out.close();
     fos.close();
     } 
     catch ( IOException e ) 
     { 
     System.out.println( e );
     }
     }
     
     public LinkedList<Rechnung> ladeRechnungliste()
     {
     LinkedList<Rechnung> liste = new LinkedList<Rechnung>();
     InputStream fis = null;
     try
     {
     fis = new FileInputStream( "rechnungsliste.ser" );
     ObjectInputStream in = new ObjectInputStream ( fis );
     liste = ( LinkedList<Rechnung> ) in.readObject( );
     fis.close();
     return liste;
     }
     catch ( IOException e ) //man hat was am dem Sourcecode von Rechnung geändert
     {
     return liste;
     }
     catch ( ClassNotFoundException e ) //datei exestiert nicht
     {
     speicherRechnung(liste);
     return liste;
     }
     }
     
  6. 4. Juni 2008
    AW: Highscore am besten wie realisieren?

    Das wichtigste ist es ja, die Liste im Spiel an sich unter Highscore lesen zu können. Editor ist unwichtig. Ne ArrayList? Hmm, mal sehen was die Api zu dem Thema sagt...


    @ Straight-Edge:
    Irgendwie kann ich nicht glauben, dass der Programmcode zum serialisieren, Punkte und Spielernamen trennt und dennoch zusammengehörend sortiert, nicht das dann auf einaml Punkte und Spielernamen durcheinander gebracht werden.
     
  7. 4. Juni 2008
    AW: Highscore am besten wie realisieren?

    ne also ich an deiner stelle würde ein bean machen (Bean = Klasse, wo dann ein objekt eine id hat, einen namen und die punktzahl). danach machst du ne arraylist, wo du all diese beans reintust. diese arraylist speicherst du dann in nem file, so wies straight-edge gezeigt hat.

    mfg swissmaster

    ps: bean beispiel:

    Code:
    public class BeanSpieler {
     private int id;
     private String name;
     private double punkte;
    
     public void setId (int id){
     this.id = id;
    }
    public int getId (){
     return id;
    }
    public void setName (String name){
     this.name = name;
    }
    public String getName (){
     return name;
    }
    public void setPunkte (double punkte){
     this.punkte = punkte;
    }
    public double getPunkte (){
     return punkte; 
    }
    }
    
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.