Highscore

Status
Nicht offen für weitere Antworten.

soledad

Neues Mitglied
Hallo, ich bin gerade dabei, mein erstes Java-Spiel zu programmieren. Am Anfang bin ich gut vorangekommen, aber jetzt bin ich auf ein Problem gestoßen.

1.Frage:
Mein Highscore-Fenster wird nicht visible.

2.Frage:
Wenn das Spiel gewonnen wurde, dann öffnet sich ein Fenster, in das man den Namen eintippen kann, aber wie übergebe ich den Namen und die Zeit an die Highscore-Liste?


Hier folgt nun mein quellcode für die Highscore-Liste.
Ist der so korrekt? Könnte es überhaupt funktionieren?
Vielen Dank schon einmal im voraus!!!

Code:
public class Highscore extends JFrame
{
	public Spieler[] Topspieler = new Spieler[5];
	public JLabel[] Ranking = new JLabel[5];
	
	public class Spieler 
	{ 
	    private int zeit; 
	    private String name; 
	        
	    public Spieler( String name, int punkte ){ 
	        this.name = name; 
	        this.zeit = punkte; 
	    } 
        public int compareTo( Spieler argument ) { 
	        if( zeit < argument.zeit ) 
	            return 1; 
	        if( zeit > argument.zeit ) 
	            return -1; 
	            
	        return 0; 
	    } 
	        
	    
	    public String toString() { 
	        return name + " (" + zeit + " Zeit)"; 
	    } 
}	

public void sortHighscore (Spieler[] Topspieler){
   
// hier wird sortiert 
Arrays.sort( Topspieler ); 
        

for ( int i=0; i<5;i++){
 
  Ranking[i].setText(Topspieler[i].toString());
}	

}

  public Highscore()
  {
	 
    setLocation(500, 175);
    setSize(500, 300);
    setResizable(false);
    setVisible(false);

    //Erzeugen eines Objektes der Klasse WindowAdapter,
//implementieren der Schnittstelle WindowListener
    addWindowListener(new WindowAdapter()
      {

       public void windowClosing (WindowEvent e)
      {
         setVisible(false);

      }
      });



    Container highscore = getContentPane();
    JPanel westPanel =new JPanel();
    JPanel eastPanel =new JPanel();
    JPanel northPanel =new JPanel();
    JPanel southPanel = new JPanel();
    JPanel centerPanel = new JPanel();


    //in diesem Panel wird das GridLayout verwendet
    northPanel.setLayout(new GridLayout(2,1));

    //Erzeugung von 2 Label, die dem Panel zugefügt werden
    JLabel label1, label2;
    label1 =new JLabel("Highscore");
    label2 =new JLabel("     Name:             Zeit:");
    label1.setFont (new Font("SansSerif", Font.BOLD, 18));
    label2.setFont (new Font("SansSerif", Font.PLAIN, 13));
    northPanel.add(label1,BorderLayout.NORTH);
    northPanel.add(label2,BorderLayout.NORTH);
    northPanel.setBackground (Color.yellow);

    //das Panel wird dem Container im Norden zugefügt
    highscore.add(northPanel,BorderLayout.NORTH);



    southPanel.setBackground(Color.yellow);
    highscore.add(southPanel, BorderLayout.SOUTH);


    //im westPanel wird das GridLayout verwendet
    westPanel.setLayout(new GridLayout(5,1));

    //Erzeugung von 5 Label, die dem Panel zugefügt werden
    JLabel platz1, platz2, platz3, platz4, platz5;
    platz1 =new JLabel("1.");
    platz2 =new JLabel("2.");
    platz3 =new JLabel("3.");
    platz4 =new JLabel("4.");
    platz5 =new JLabel("5.");
    platz1.setFont (new Font("SansSerif", Font.PLAIN, 15));
    platz2.setFont (new Font("SansSerif", Font.PLAIN, 15));
    platz3.setFont (new Font("SansSerif", Font.PLAIN, 15));
    platz4.setFont (new Font("SansSerif", Font.PLAIN, 15));
    platz5.setFont (new Font("SansSerif", Font.PLAIN, 15));

    westPanel.add(platz1,BorderLayout.WEST);
    westPanel.add(platz2,BorderLayout.WEST);
    westPanel.add(platz3,BorderLayout.WEST);
    westPanel.add(platz4,BorderLayout.WEST);
    westPanel.add(platz5,BorderLayout.WEST);
    westPanel.setBackground (Color.yellow);

    highscore.add(westPanel,BorderLayout.WEST);


    centerPanel.setLayout(new GridLayout(9,4));

    
    for (int k=0;k<6;k++){
    	Ranking[k] = new JLabel("");
    	Ranking[k].setSize(300,100);
    	Ranking[k].setFont (new Font("SansSerif", Font.PLAIN, 15));
    	centerPanel.add(Ranking[k]);
    
    }
    centerPanel.setBackground(Color.white);
    
    highscore.add(centerPanel);




    //das Panel wird dem Container im Süden zugefügt
    
    highscore.add(southPanel,BorderLayout.SOUTH);

    //Platzhalter Panel
    eastPanel.setBackground (Color.yellow);
    highscore.add(eastPanel,BorderLayout.EAST);
    Topspieler[0]=new Spieler( "Lars (Development)", 6600 ); 
    Topspieler[1]=new Spieler( "Jens (Design)", 1000 ); 
    Topspieler[2]=new Spieler( "Jerome (Vertrieb)", 800 ); 
    Topspieler[3]=new Spieler( "Bernd (Netzwerk)", 800 ); 
    Topspieler[4]=new Spieler( "Rike (Buchhaltung)", 2000 );
    int spielzeit=900;
    Topspieler[5]=new Spieler( "Neuer Spieler", spielzeit ); 
	          
    sortHighscore (Topspieler);
    }
}
 
G

Gast

Gast
ok, setVisible(false) bedeutet nicht anzeigen.
ein setVisible(true), kann ich nirgends entdecken.

Wird das vllt. ein Hangman Spiel??
 
G

Gast

Gast
Überlege dir doch folgendes:

spendiere dem Spieler[] topspieler eine eigene Klasse z.b. TopSpielerListe.
diese hat ein Spieler[], bessernoch ein Vector<Spieler> topspieler

Im Konstruktor setzt du dann deine Platzhalter in dieses topspieler.

Methoden wie spielerHinzuFügen(Spieler spieler), topspielerListeSortieren() und eine Methode getTopSpielerListe() runden diese Klasse ab.

Der Konstruktor deiner Klasse HighScore bekommt nun ein Objekt der Klasse TopSpielerListe.

desweiteren bekommt die Klasse die Methoden anzeigen() und hinzufuegen(). Bzw. hinzufuegen(int zeit).

hinzufuegen() könnte nun ein JOptionPane benutzen um den Namen zu erfragen. Danach wird damit ein SpielerObjekt erstellt und mithilfe der methoden der topSpielerListe hinzugefügt. Um danach die Methode anzeigen aufzurufen, die dann das HighscoreFenster mithilfe der topSpielerliste.getTopSpielerListe() zeichnet.
 

soledad

Neues Mitglied
achso, das hatte ich vergessen zu ändern...da das Fenster nicht von Anfang an geöffnet sein soll, habe ich es setVisible(false); gesetzt und beim anklicken des Highscore Buttons setVisible(true);
also daran dürfte es eigentlich nicht liegen...
danke schon einmal für die antworten, mal gucken ob ich das umsetzen kann...
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben