# Spielautomat bilder vergleichen



## The Ripper (4. Mai 2011)

Ich hoffe ihr könnt mir weiterhelfen
Mein Problem ist ich weiß nicht wie ich die Bilder(in diesem Fall wären es GIFs, aber könnte man zurnot ändern) mit einander vergleichen kann, ob 3 gleiche Bilder in einer Reihe liegen oder Schräg
kann man einfach mit dem Datei Pfad prüfen wenn ja wie stell ich das an 
ich bin überfordert 

Hätte noch eine Frage die angezeigten Bilder sind alle Verschoben und nich in den einzelnen Buttons zentriert wie kann ich das beheben? 

Vielen dank für eure Hilfe jetzt schon 



```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import java.awt.Image;
import java.awt.Graphics;
import java.util.Random;

/**
 *
 * Beschreibung
 *
 * @version 1.0 vom 06.04.2011
 * @author
 */

public class Frame extends JFrame {
    // Anfang Attribute
    private JLabel anzeige;
    private Label Gewinnanzeige = new Label();
    private JButton jButton1 = new JButton(new ImageIcon());
    private JButton jButton2 = new JButton(new ImageIcon());
    private JButton jButton4 = new JButton(new ImageIcon());
    private JButton jButton5 = new JButton(new ImageIcon());
    private JButton jButton3 = new JButton(new ImageIcon());
    private JButton jButton6 = new JButton(new ImageIcon());
    private JButton jButton7 = new JButton(new ImageIcon());
    private JButton jButton8 = new JButton(new ImageIcon());
    private JButton jButton9 = new JButton(new ImageIcon());
    private JButton jButtonAuszahlen = new JButton();
    private JButton jButtonStarten = new JButton();
    private Random zufall;
    private int guthaben;
    private int gewinn;
    private String bild1;
    private String bild2;
    private String bild3;

    // Ende Attribute

    public Frame(String title) {
        // Frame-Initialisierung
        super(title);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        int frameWidth = 874;
        int frameHeight = 853;
        setSize(frameWidth, frameHeight);
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (d.width - getSize().width) / 2;
        int y = (d.height - getSize().height) / 2;
        setLocation(x, y);
        Container cp = getContentPane();
        cp.setLayout(null);
        zufall = new Random();
        anzeige = new JLabel ("Guthaben: " + guthaben);
        guthaben = 200;
        gewinn = guthaben - 200;

        bild1= "Icons/car.gif";
        bild2= "Icons/bart.gif";
        bild3= "Icons/7.gif";

        jButton1.setBounds(221, 109, 150, 150);
        jButton1.setText("");
        jButton1.setMargin(new Insets(2, 2, 2, 2));
        jButton1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton1_ActionPerformed(evt);
                }
            });
        jButton1.setEnabled(false);
        jButton1.setDisabledIcon(new ImageIcon(bild1));
        cp.add(jButton1);
        jButton2.setBounds(370, 109, 150, 150);
        jButton2.setText("");
        jButton2.setMargin(new Insets(2, 2, 2, 2));
        jButton2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton2_ActionPerformed(evt);
                }
            });
        jButton2.setEnabled(false);
        jButton2.setDisabledIcon(new ImageIcon(bild2));
        cp.add(jButton2);
        jButton4.setBounds(221, 258, 150, 150);
        jButton4.setText("");
        jButton4.setMargin(new Insets(2, 2, 2, 2));
        jButton4.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton4_ActionPerformed(evt);
                }
            });
        jButton4.setEnabled(false);
        jButton4.setDisabledIcon(new ImageIcon(bild1));
        cp.add(jButton4);
        jButton5.setBounds(370, 258, 150, 150);
        jButton5.setText("");
        jButton5.setMargin(new Insets(2, 2, 2, 2));
        jButton5.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton5_ActionPerformed(evt);
                }
            });
        jButton5.setEnabled(false);
        jButton5.setDisabledIcon(new ImageIcon(bild2));
        cp.add(jButton5);
        jButton3.setBounds(519, 109, 150, 150);
        jButton3.setText("");
        jButton3.setMargin(new Insets(2, 2, 2, 2));
        jButton3.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton3_ActionPerformed(evt);
                }
            });
        jButton3.setEnabled(false);
        jButton3.setDisabledIcon(new ImageIcon(bild3));
        cp.add(jButton3);
        jButton6.setBounds(519, 258, 150, 150);
        jButton6.setText("");
        jButton6.setMargin(new Insets(2, 2, 2, 2));
        jButton6.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton6_ActionPerformed(evt);
                }
            });
        jButton6.setEnabled(false);
        jButton6.setDisabledIcon(new ImageIcon(bild3));
        cp.add(jButton6);
        jButton7.setBounds(221, 407, 150, 150);
        jButton7.setText("");
        jButton7.setMargin(new Insets(2, 2, 2, 2));
        jButton7.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton7_ActionPerformed(evt);
                }
            });
        jButton7.setEnabled(false);
        jButton7.setDisabledIcon(new ImageIcon(bild1));
        cp.add(jButton7);
        jButton8.setBounds(370, 407, 150, 150);
        jButton8.setText("");
        jButton8.setMargin(new Insets(2, 2, 2, 2));
        jButton8.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton8_ActionPerformed(evt);
                }
            });
        jButton8.setEnabled(false);
        jButton8.setDisabledIcon(new ImageIcon(bild2));
        cp.add(jButton8);
        jButton9.setBounds(519, 407, 150, 150);
        jButton9.setText("");
        jButton9.setMargin(new Insets(2, 2, 2, 2));
        jButton9.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton9_ActionPerformed(evt);
                }
            });
        jButton9.setEnabled(false);
        jButton9.setDisabledIcon(new ImageIcon(bild3));
        cp.add(jButton9);

        jButtonAuszahlen.setBounds(221, 661, 200, 80);
        jButtonAuszahlen.setText("Gewinn Auszahlen");
        jButtonAuszahlen.setMargin(new Insets(2, 2, 2, 2));
        jButtonAuszahlen.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButtonAuszahlen_ActionPerformed(evt);
                }
            });
        cp.add(jButtonAuszahlen);
        jButtonStarten.setBounds(473, 661, 200, 80);
        jButtonStarten.setText("Spiel Starten");
        jButtonStarten.setMargin(new Insets(2, 2, 2, 2));
        jButtonStarten.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButtonStarten_ActionPerformed(evt);
                }
            });
        cp.add(jButtonStarten);
        anzeige.setBounds(308, 601, 286, 37);
        anzeige.setText("   Guthaben:   " +  guthaben);
        anzeige.setFont(new Font("MS Sans Serif", Font.BOLD, 29));
        cp.add(anzeige);
        Gewinnanzeige.setBounds(266, 18, 300, 58);
        Gewinnanzeige.setText("Gewinn:  " + gewinn);
        Gewinnanzeige.setFont(new Font("MS Sans Serif", Font.BOLD, 39));
        cp.add(Gewinnanzeige);
        // Ende Komponenten

        setResizable(false);
        setVisible(true);    // Anfang KomponentensetLayout(new BorderLayout());
        setLayout(new BorderLayout());

        // Ende Komponenten
    }

    // Anfang Methoden

    public void jButton1_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton2_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton4_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton5_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton3_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton6_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton7_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton8_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton9_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButtonAuszahlen_ActionPerformed(ActionEvent evt) {

        guthaben = 100;

        //evtl Highscoreanbindung hier einfügen

    }

    public void jButtonStarten_ActionPerformed(ActionEvent evt) {

        int eins = zufall.nextInt(4);
        int zwei = zufall.nextInt(4);
        int drei = zufall.nextInt(4);

        bild1=bildAuswahl(eins);
        bild2=bildAuswahl(zwei);
        bild3=bildAuswahl(drei);

        //         System.out.println(bild1);
        //  System.out.println(bild2);
        //   System.out.println(bild3);

        jButton1.setDisabledIcon(new ImageIcon(bild1));
        jButton2.setDisabledIcon(new ImageIcon(bild2));
        jButton3.setDisabledIcon(new ImageIcon(bild3));

        if (eins != 4) {

            eins++;
        } else {
            eins = 0;
        }

        bild1 = bildAuswahl(eins);

        if (zwei <3) {

            zwei = zwei+2;
        } else {
            if(zwei == 3)
            {
                zwei= 0;

            }
            else
            {
                zwei= 1;
            }
        }
        bild2 = bildAuswahl(zwei);
        if (drei != 0) {

            drei = drei-1;
        } else {
            drei = 4;
        }

        bild3 = bildAuswahl(drei);

        jButton4.setDisabledIcon(new ImageIcon(bild1));
        jButton5.setDisabledIcon(new ImageIcon(bild2));
        jButton6.setDisabledIcon(new ImageIcon(bild3));

        if (eins != 4) {

            eins++;
        } else {
            eins = 0;
        }

        bild1 = bildAuswahl(eins);

        if (zwei <3) {

            zwei = zwei+2;
        } else {
            if(zwei == 3)
            {
                zwei= 0;

            }
            else
            {
                zwei= 1;
            }
        }

        bild2 = bildAuswahl(zwei);
        if (drei != 0) {

            drei = drei-1;
        } else {
            drei = 4;
        }

        bild3 = bildAuswahl(drei);

        jButton7.setDisabledIcon(new ImageIcon(bild1));
        jButton8.setDisabledIcon(new ImageIcon(bild2));
        jButton9.setDisabledIcon(new ImageIcon(bild3));
        
        GewinnErmitteln();

    }

    public String bildAuswahl(int n)
    {
        switch(n){
            case 0:
            return "Icons/car.gif";

            case 1:
            return "Icons/pokeball.gif";

            case 2:
            return "Icons/nemo.gif";

            case 3:
            return "Icons/bart.gif";

            case 4:
            return "Icons/7.gif"; 

            default:
            return "";
        }
    }

    public void GewinnErmitteln()
    {


        if(jButton1.ImageIcon == jButton2.bild2 & jButton2.bild2 == jButton3.bild3)
        
       {
           system.out.println("gewonnen");
        }    

    }    

    // Ende Methoden

    public static void main(String[] args) {
        new Frame("Frame");

    }

}
```


----------



## Fu3L (4. Mai 2011)

Du könntest die Bilder in einer Variablen speichern, anstelle des Pfads. Dann könntest du über JButton.getIcon() Vergleiche anstellen.

Und ein ganz wichtiger anderer Tipp: Benutze doch lieber ein Button-Array oder eine ArrayList. Du weist den Buttons ganz viele Eigenschaften zu, die bei allen gleich sind. Das ginge in einer for-schleife viel einfacher. Insbesondere wäre das nachträgliche Ändern auch weniger ätzend 
Und du brauchst auch nur einen ActionListener... Implementiere doch ActionListener in deinem Frame und nutze an deinen Buttons:


```
button.addActionListener(this);
button.setActionCommand("1");
```

Dann könntest du in einer einzigen actionPerformed-methode, die dein Frame definieren würde, über 

```
public void actionPerformed(ActionEvent ev) {
   if(ev.getActionCommand().equals("1")) { ... }
}
```
oder auf ähnliche Weise prüfen, welcher Button die Aktion ausgelöst hat.

Edit: Generell finde ich es seltsam, dass du Buttons zum Darstellen von Bildern nutzt^^ Nimm doch lieber JLabel, wenn du sie sowieso deaktivierst.. Dann kannst du dir auch den ActionListener sparen. Desweiteren kannst du dir setText(""); sparen, da bei der Nutzung des Konstruktors ohne Stringübergabe einfach ein JLabel/JButton ohne Text erstellt wird


----------



## The Ripper (4. Mai 2011)

Wegen den Buttons meinte mein Informatiklehrer das wäre einfacher 
ich habs dann einfach mal hingenommen

das mit den Action listener versteh ich noch nich so ganz 
ich hab die grafik also die Buttons mittel Java Editor erstellt und schreib den restlichen Code mit Bluej

wie speicher ich die bilder in ner Variablen?


----------



## Fu3L (4. Mai 2011)

Anstatt immer wieder new IconImage(bildnummer) aufzurufen, speichere die Bilder einfach in entsprechenden Variablen:


```
ImageIcon car = new ImageIcon("Icons/car.gif");
```

Dann kannst du die Bilder immer über die Variable zuweisen und sparst nebenbei viele Aufrufe und das Neuerstellen einiger Objekte 

Bluej wurde an meiner Schule auch benutzt.. Ich konnte zum Glück kein Informatik wählen, weil die, die das 1 Jahr lang mitgemacht haben, konnten danach nicht einmal ein HalloWelt Programm selbstständig ausführen :noe:


----------



## The Ripper (4. Mai 2011)

schreib ich des in den Konstruktor oder in den Frame textkörper?

ich habs etz in den Teil gepackt
dann zeigt er mir cannot find symbol class IconImage


```
IconImage car = new IconImage("Icons/car.gif");
    IconImage bart = new IconImage("Icons/bart.gif");
    IconImage nemo = new IconImage("Icons/nemo.gif");
     IconImage 7 = new IconImage("Icons/7.gif");
    IconImage pokeball = new IconImage("Icons/pokeball.gif");
```

Auch nimmt er die 7 nich an 


bluej is sowas vonein nerviges programm 
was wäre ne alternative dazu was es einfacher und besser verständlich macht 
ich bin echt nicht gut darin 
entschuldige meinen blöden fragen


----------



## Fu3L (4. Mai 2011)

Tschuldige, das war mein Fehler, habs vorhin schon editiert, wohl zu spät. Es heißt natürlich wie bei dir im Quelltext ImageIcon  Die kannst du am besten noch über den Buttons deklarieren und initialisieren, weil du danach den Buttons das direkt zuordnen kannst. Aber auf jeden Fall müssen es Membervariablen sein, also innerhalb der Klasse, aber außerhalb von Methoden definiert werden 

Ich mag Eclipse, aber ein GUI-Builder ist da (zumindest standartmäßig) nicht mit drin und wenn dein Lehrer das vorraussetzt, bleib vllt lieber dabei^^


----------



## The Ripper (4. Mai 2011)

Membervariablen 
ich bin überfordert 


```
public Frame(String title) {
        // Frame-Initialisierung
        super(title);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        int frameWidth = 874;
        int frameHeight = 853;
        setSize(frameWidth, frameHeight);
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (d.width - getSize().width) / 2;
        int y = (d.height - getSize().height) / 2;
        setLocation(x, y);
        Container cp = getContentPane();
        cp.setLayout(null);
        zufall = new Random();
        anzeige = new JLabel ("Guthaben: " + guthaben);
        guthaben = 200;
        gewinn = guthaben - 200;
        ImageIcon car = new ImageIcon("Icons/car.gif");
        ImageIcon bart = new ImageIcon("Icons/bart.gif");
        ImageIcon nemo = new ImageIcon("Icons/nemo.gif");
        ImageIcon sieben = new ImageIcon("Icons/7.gif");
        ImageIcon pokeball = new ImageIcon("Icons/pokeball.gif");
```

habs etz da rein gepackt 
und was kann ich mit dem zugewiesenen anstellen 

und was bringt mir das für den Bilder vergleich


----------



## The Ripper (4. Mai 2011)

und das mit den Buttons zusammenfassen in deinem ersten post müsstest du mir auch erklären wie stell ich das an wie würde dann der code dazu aussehen?


----------



## Fu3L (4. Mai 2011)

Eigentlich gehöre ich nicht zu den "Vorkauern", aber das erinnert mich alles zu sehr an meinen Stufenkollegen, die an ein halb fertiges Spiel gesetzt wurden, ohne Kenntnisse und einfach mal was hinzufügen sollten^^

Du kannst den Buttons jetzt immer die ImageIcons zuordnen:


```
JButton button = new JButton(car);
```

Danach kannst du, wenn du irgendwann deine Überprüfung machst, ob mehrere in einer Reihe sind, einfach folgendes tun:

Wir nehmen an, dass button1, button 4 und button7 in einer Reihe liegen nach dem Drehen:

```
if(button1.getIcon() == button4.getIcon() && button4.getIcon() == button7.getIcon()) {
  //Gib gewinn oder so^^
}
```

Das kannst du machen, da die gleichen Symbole immer durch das *selbe* Objekt dargstellt werden und somit auch über die gleiche Referenz verfügen, die du mit == vergleichen kannst.

Und so wie du die ImageIcons nun eingefügt hast, sind es Membervariablen 

Und Buttons zusammenfassen geht so:


```
private JButton[] btns = new JButton[20];
//Dann weiter in einer Methode:
for(int i = 0; i < btns.length; i++) {
  //Edit: Initialisierung vergessen
  btns[i] = new JButton();
  btns[i].addActionListener(this);
  //Oder andere Dinge, die bei allen Buttons gleich lauten sollen
}
```

Sowas mit Code zusammenmixen, der von einem GUI-Editor erstellt wurde, ist aber natürlich nicht einfach^^


----------



## The Ripper (4. Mai 2011)

danke du nicht "Vorkauer" 
aber wenn ich des jetzt richtig verstehe willst du damit doch jedem Button ein fertiges Bild zuweisen

ich hatte die variablen Bild1 , Bild2 und Bild3 eingefügt das ich mit dem switch part alle 5 bilder einbinden kann die jeweils bei ihren erzeugten zufallszahlen ausgegeben werden 

also ich hab bei case 0 sagen wir das auto 
d.h. die zufallszahl war 0 

und bei deinem wär doch dann immer das auto oder hab ich nen denkfehler drinnen


 oke das mit der Abfrage hatte ich mir schon so überlegt gehabt hatte es allerding mit 
	
	
	
	





```
jButton1.Bild1 == jButton2.Bild2 && jButton.Bild2 == jButton3.Bild3
```
probiert aber da gab er mir nur Fehlermeldungen aus deswegen hatte ich es verworfen 

anscheind brauch ich bei der abfrage ja da j vor den Buttons nicht 
wieder was gelernt


----------



## Fu3L (4. Mai 2011)

Du kannst die ImageIcons auch in einem Array speichern:


```
ImageIcon[] icons = new ImageIcon[] {new ImageIcon("Icon/car.gif"), .....};
//Und dann der Zugriff über:
icons[x]; //Wobei x eine Zahl im Rahmen der Arraygröße (minus 1) ist^^
```

Du musst schon den Variablennamen verwenden, wie du ihn festgelegt hast, also ist das j richtig. Bei mir handelte es sich nur um ein Beispiel 
Aber dieses .Bild1 funktioniert natürlich nicht^^


----------



## The Ripper (4. Mai 2011)

schade 
ja array hat mir auch jmd gesagt 

das array startet wie die random zahl mit 0 oder?

wenn ich meine abfrage mit dem .bild auf .getIcon() umschreibe geht des dann?


----------



## The Ripper (4. Mai 2011)

und kannst du mal schauen was beim button gewinnauszahlen das problem ist 
ich hab definiert wenn ich da drauf klick sollte er den gewinn von 200 auf 100 runtersetzen damit ich sehen kann das er was macht aber er passiert absolut nichts ;D


----------



## Fu3L (4. Mai 2011)

The Ripper hat gesagt.:


> und kannst du mal schauen was beim button gewinnauszahlen das problem ist
> ich hab definiert wenn ich da drauf klick sollte er den gewinn von 200 auf 100 runtersetzen damit ich sehen kann das er was macht aber er passiert absolut nichts ;D



Du änderst das Guthaben, aber nicht den Text des Labels  

und ja: .getIcon() gibt die Referenz auf das aktuell verwendete Bild des Buttons zurück.


----------



## The Ripper (4. Mai 2011)

ah oke 
ich habs so geschrieben:

```
if(jButton1.getIcon() == jButton2.getIcon() && jButton2.getIcon() == jButton3.getIcon())
        {
            System.out.println("gewonnen");
        
        }
```

mach ich des mit set.text ?


----------



## Fu3L (4. Mai 2011)

Ja, mit .setText() 

Java Platform SE 6

Hier kannst du die Methoden nachlesen, die eine Klasse hat. (Kleiner Tipp mit Strg + F kannste dir viel Zeit sparen, indem du da zB "JLabel" eintippst, anstatt da alles durchzuscrollen^^)


----------



## The Ripper (4. Mai 2011)

danke 
aber des gewinnermittlungsteil stimmt soweit?


----------



## Fu3L (4. Mai 2011)

Ich habe mir nicht alles im Detail angesehen, probiers am besten einfach aus. Und wenn du dich mal fragst, ob eine Methode überhaupt aufgerufen wird oder so, einfach ein gutes System.out.println("Ich werde aufgerufen"); einbaun und laufen lassen 

achja: Arrays starten mit 0, da haste recht^^ Deswegen ist auch die maximale Zahl, die du als Index setzen darfst Länge des Arrays minus 1^^


----------



## The Ripper (6. Mai 2011)

so ich habe alles so gut wie fertig 
hab es mittels array gelöst 
danke dafür nochmal ist echt viel einfacher

mein problem aktuell ist folgendes 
ich möchte wenn ich das erste mal auf einen button(button text aktuell: Spiel beenden) klicke
dann wird das spiel beendet und der spielstand ausgegeben nun wird der text geändert auf dem button auf ( Neustart)

etz müsste ich ne funktion haben die beim zweiten klick alles sozusagen auf reset macht 

kann man des auf einem button lösen ?

danke schonmal


----------



## Fu3L (7. Mai 2011)

Wieso sollte man nicht mit einem Button das ganze machen können?

Du schreibst dir am besten ne Methode: createNewGame().

Da kopierst du alle Vorbereitungen rein, die beim ersten Spielstart auch nötig waren und auch nötig werden, wenn man deinen Button drückt.
Natürlich ist das nur effektiv, wenns schon ein paar Sachen mehr sind, die beim ersten Start genauso laufen, wie bei einem Reset. 

Im ActionListener kannste dann in der actionPerformed()-Methode die createNewGame() Methode aufrufen und auch zB den "Neustart"-Button wieder in "Beenden" Umtaufen und so weiter. Es ist ja mehr als eine Anweisung pro Methode möglich^^


----------



## The Ripper (7. Mai 2011)

ich meinte das so mein button spiel beenden beendet das aktuelle glückspiel und gibt den erspielten gewinn aus
der button spiel beenden ist aber auch schon als neustart button definiert wenn das guthaben <= 0 ist schaltet er den Spielen button auf disabled  damit man nich mehr klicken kann 

jetzt das problem nach dem ganzen vorgang ist ja ansich das guthaben immer noch > 0 desheißt meine if bedingung funktioniert nicht


```
public void jButtonNeustart_ActionPerformed(ActionEvent evt) {

        if(guthaben <= 0)
        {
            guthaben = 200;
            anzeige.setText("Guthaben: " + guthaben);
            jButtonStarten.setEnabled(true);
        }
        else
        {
                  jButtonStarten.setEnabled(false);
            Textausgabe.setText("Ihr gewonnener Betrag:" + gewinn );
        }


              

        //evtl Highscoreanbindung hier einfügen

    }
```

und wie würde man da eine highscore anbindung realisieren 
gibts da iwo eine anleitung oder kannst du mir da weiter helfen?


----------



## Fu3L (7. Mai 2011)

Also: Du nimmst eine Membervariable (den Begriff kensnt du ja jetzt) gameRunning vom Typ boolean und setzt die am Anfang auf true.

Im ActionListener kansnt dann immer prüfen, ob gameRunning nun true oder false ist, bzw. an den geeigneten Stellen die Variable ändern. Das solltest du hinkriegen


----------



## The Ripper (7. Mai 2011)

```
public void jButtonNeustart_ActionPerformed(ActionEvent evt) {

        if(guthaben <= 0)
        {
            guthaben = 200;
            anzeige.setText("Guthaben: " + guthaben);
            jButtonStarten.setEnabled(true);
        }
        else
        {
            if ( gamerunning = true)
            {
                gamerunning = false;
                jButtonStarten.setEnabled(false);
                Textausgabe.setText("Ihr gewonnener Betrag:" + gewinn );
                jButtonNeustart.setText("Spiel Neustarten");
                
            }
            else
            {
                jButtonStarten.setEnabled(true);
                guthaben = 200;
                anzeige.setText("Guthaben: " + guthaben);
                jButtonNeustart.setText("Spiel beenden!");
                
            }

        }

        //evtl Highscoreanbindung hier einfügen

    }

    public void jButtonStarten_ActionPerformed(ActionEvent evt) 
    {
       gamerunning = true;

        if(guthaben > 0)
        {
            
            guthaben= guthaben - 10;
            anzeige.setText("Guthaben: " + guthaben);
            Textausgabe.setText(" 10 Einsatz gesetzt");
            jButtonNeustart.setText("Spiel beenden!");

            int eins = zufall.nextInt(4);
            int zwei = zufall.nextInt(4);
            int drei = zufall.nextInt(4);

            bild1=icons[eins];
            bild2=icons[zwei];
            bild3=icons[drei];

            jButton1.setDisabledIcon(bild1);
            jButton2.setDisabledIcon(bild2);
            jButton3.setDisabledIcon(bild3);

            if (eins != 4) {

                eins++;
            } else {
                eins = 0;
            }

            bild1 = icons[eins];

            if (zwei <3) {

                zwei = zwei+2;
            } else {
                if(zwei == 3)
                {
                    zwei= 0;

                }
                else
                {
                    zwei= 1;
                }
            }
            bild2 = icons[zwei];
            if (drei != 0) {

                drei = drei-1;
            } else {
                drei = 4;
            }

            bild3 = icons[drei];

            jButton4.setDisabledIcon(bild1);
            jButton5.setDisabledIcon(bild2);
            jButton6.setDisabledIcon(bild3);

            if (eins != 4) {

                eins++;
            } else {
                eins = 0;
            }

            bild1 = icons[eins];

            if (zwei <3) {

                zwei = zwei+2;
            } else {
                if(zwei == 3)
                {
                    zwei= 0;

                }
                else
                {
                    zwei= 1;
                }
            }

            bild2 = icons[zwei];
            if (drei != 0) {

                drei = drei-1;
            } else {
                drei = 4;
            }

            bild3 = icons[drei];

            jButton7.setDisabledIcon(bild1);
            jButton8.setDisabledIcon(bild2);
            jButton9.setDisabledIcon(bild3);

            GewinnErmittelnWaag();
            anzeige.setText("Guthaben: " + guthaben);
            gewinn = guthaben - 200;
            Gewinnanzeige.setText("Gewinn: " + gewinn);
        }
        else
        {
            Textausgabe.setText("Game Over! Neues Spiel starten!");
            jButtonStarten.setEnabled(false);
            jButtonNeustart.setText("Spiel Neustarten");

        }
```


hab ich etz da nen denkfehler drin oder warum bleibt der startbutton auf false?
und unanklickbar 

und auf membervariable hätte ich auch kommen müssen 
langsam werd ich warm mit java 
freunde sind wir zwar noch nich aber das wird schon werden 

danke für deine hilfe

für die Highscoreliste hast du keine tipps?


----------



## Fu3L (7. Mai 2011)

Das ist doch eigentlich nur die Methode für den Beenden/Neustarten Button. Wieso muss da auf das Guthabne hin überprüft werden? (Kann sein, dass es Sinn ergibt, wenn man den ganzen Code sieht, aber da würde ichs zum einen vermuten)

Zum Anderen musst du, wenn dus in dem einen Fall auf false setzt, in dem anderen Fall auch auf true setzen, sonst kann ein Status nicht mehr geändert werden.
Außerdem ist es sehr hinderlich den Button zu deaktivieren, weil wie soll man sonst das Spiel mit diesem Button neu starten?

Soll die Highscore dauerhaft gespeichert werden? Also mit Ablage auf der Festplatte?


----------



## The Ripper (7. Mai 2011)

der startbutton macht nur das sich die bilder ändern

ja wenn das guthaben 0 ist dann schreibt sich der button ja um auf neustarten und macht das guthaben wieder auf 200 also den startwert
dann soll er den spielbutton wieder freigeben
was er aber nicht macht er springt nichtmal in den else teil



```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import java.awt.Image;
import java.awt.Graphics;
import java.util.Random;

/**
 *
 * Beschreibung
 *
 * @version 1.0 vom 06.04.2011
 * @author
 */

public class Frame extends JFrame {
    // Anfang Attribute
    private JLabel anzeige;
    private JLabel Gewinnanzeige;
    private JLabel Textausgabe;
    ImageIcon[] icons =  {new ImageIcon("Icons/bart.gif"),new ImageIcon("Icons/car.gif"),new ImageIcon("Icons/nemo.gif"), new ImageIcon("Icons/7.gif"), new ImageIcon("Icons/pokeball.gif")};

    private JButton jButton1 = new JButton(icons[0]);
    private JButton jButton2 = new JButton(icons[0]);
    private JButton jButton4 = new JButton(icons[0]);
    private JButton jButton5 = new JButton(icons[0]);
    private JButton jButton3 = new JButton(icons[0]);
    private JButton jButton6 = new JButton(icons[0]);
    private JButton jButton7 = new JButton(icons[0]);
    private JButton jButton8 = new JButton(icons[0]);
    private JButton jButton9 = new JButton(icons[0]);

    private JButton jButtonNeustart = new JButton();
    private JButton jButtonStarten = new JButton();
    private Random zufall;
    private int guthaben;
    private int gewinn;
    private ImageIcon bild1;
    private ImageIcon bild2;
    private ImageIcon bild3;
    private String ImageIcon;
    private Boolean gamerunning;

    // Ende Attribute

    public Frame(String title) {
        // Frame-Initialisierung
        super(title);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        int frameWidth = 937;
        int frameHeight = 990;
        setSize(frameWidth, frameHeight);
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (d.width - getSize().width) / 2;
        int y = (d.height - getSize().height) / 2;
        setLocation(x, y);
        Container cp = getContentPane();
        cp.setLayout(null);
        zufall = new Random();
        anzeige = new JLabel ("Guthaben:   " +  guthaben);
        guthaben = 200;
        Gewinnanzeige = new JLabel ("Gewinn:   " +  gewinn);
        Textausgabe = new JLabel("");
        

        //         ImageIcon car = new ImageIcon("Icons/car.gif");
        //         ImageIcon bart = new ImageIcon("Icons/bart.gif");
        //         ImageIcon nemo = new ImageIcon("Icons/nemo.gif");
        //         ImageIcon sieben = new ImageIcon("Icons/7.gif");
        //         ImageIcon pokeball = new ImageIcon("Icons/pokeball.gif");

        // 
        //         bild1= icons[eins];
        //         bild2= icons[zwei];
        //         bild3= icons[drei];

        jButton1.setBounds(218, 177, 150, 150);
        jButton1.setText("");
        jButton1.setMargin(new Insets(2, 2, 2, 2));
        jButton1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton1_ActionPerformed(evt);
                }
            });
        jButton1.setEnabled(false);

        cp.add(jButton1);
        jButton2.setBounds(367, 177, 150, 150);
        jButton2.setText("");
        jButton2.setMargin(new Insets(2, 2, 2, 2));
        jButton2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton2_ActionPerformed(evt);
                }
            });
        jButton2.setEnabled(false);

        cp.add(jButton2);
        jButton4.setBounds(218, 326, 150, 150);
        jButton4.setText("");
        jButton4.setMargin(new Insets(2, 2, 2, 2));
        jButton4.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton4_ActionPerformed(evt);
                }
            });
        jButton4.setEnabled(false);

        cp.add(jButton4);
        jButton5.setBounds(367, 326, 150, 150);
        jButton5.setText("");
        jButton5.setMargin(new Insets(2, 2, 2, 2));
        jButton5.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton5_ActionPerformed(evt);
                }
            });
        jButton5.setEnabled(false);

        cp.add(jButton5);
        jButton3.setBounds(516, 177, 150, 150);
        jButton3.setText("");
        jButton3.setMargin(new Insets(2, 2, 2, 2));
        jButton3.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton3_ActionPerformed(evt);
                }
            });
        jButton3.setEnabled(false);

        cp.add(jButton3);
        jButton6.setBounds(516, 326, 150, 150);
        jButton6.setText("");
        jButton6.setMargin(new Insets(2, 2, 2, 2));
        jButton6.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton6_ActionPerformed(evt);
                }
            });
        jButton6.setEnabled(false);

        cp.add(jButton6);
        jButton7.setBounds(218, 475, 150, 150);
        jButton7.setText("");
        jButton7.setMargin(new Insets(2, 2, 2, 2));
        jButton7.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton7_ActionPerformed(evt);
                }
            });
        jButton7.setEnabled(false);

        cp.add(jButton7);
        jButton8.setBounds(367, 475, 150, 150);
        jButton8.setText("");
        jButton8.setMargin(new Insets(2, 2, 2, 2));
        jButton8.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton8_ActionPerformed(evt);
                }
            });
        jButton8.setEnabled(false);

        cp.add(jButton8);
        jButton9.setBounds(516, 475, 150, 150);
        jButton9.setText("");
        jButton9.setMargin(new Insets(2, 2, 2, 2));
        jButton9.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButton9_ActionPerformed(evt);
                }
            });
        jButton9.setEnabled(false);

        cp.add(jButton9);

        jButtonNeustart.setBounds(221, 756, 200, 80);
        jButtonNeustart.setText("Neustart");
        jButtonNeustart.setMargin(new Insets(2, 2, 2, 2));
        jButtonNeustart.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButtonNeustart_ActionPerformed(evt);
                }
            });
        cp.add(jButtonNeustart);
        jButtonStarten.setBounds(469, 756, 200, 80);
        jButtonStarten.setText("Spiel Starten");
        jButtonStarten.setMargin(new Insets(2, 2, 2, 2));
        jButtonStarten.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    jButtonStarten_ActionPerformed(evt);
                }
            });
        jButtonStarten.setEnabled(true);
        cp.add(jButtonStarten);
        anzeige.setBounds(301, 663, 294, 37);
        anzeige.setText("Guthaben:   " +  guthaben);
        anzeige.setFont(new Font("MS Sans Serif", Font.BOLD, 29));
        cp.add(anzeige);

        Gewinnanzeige.setBounds(281, 105, 306, 52);
        Gewinnanzeige.setText("Gewinn:  " + gewinn);
        Gewinnanzeige.setFont(new Font("MS Sans Serif", Font.PLAIN, 28));
        cp.add(Gewinnanzeige);

        Textausgabe.setBounds(206, 21, 650, 52);

        Textausgabe.setFont(new Font("MS Sans Serif", Font.PLAIN, 38));
        Textausgabe.setHorizontalAlignment(SwingConstants.CENTER);
        cp.add(Textausgabe);

        setResizable(false);
        setVisible(true);    // Anfang KomponentensetLayout(new BorderLayout());
        setLayout(new BorderLayout());

        // Ende Komponenten
    }

    // Anfang Methoden

    public void jButton1_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton2_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton4_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton5_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton3_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton6_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton7_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton8_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButton9_ActionPerformed(ActionEvent evt) {
        // TODO hier Quelltext einfügen
    }

    public void jButtonNeustart_ActionPerformed(ActionEvent evt) {

        if(guthaben <= 0)
        {
            guthaben = 200;
            anzeige.setText("Guthaben: " + guthaben);
            jButtonStarten.setEnabled(true);
        }
        else
        {
            if ( gamerunning = true)
            {
                gamerunning = false;
                jButtonStarten.setEnabled(false);
                Textausgabe.setText("Ihr gewonnener Betrag:" + gewinn );
                jButtonNeustart.setText("Spiel Neustarten");
                System.out.println("ifteil");
                
            }
            else
            {
                gamerunning = true;
                System.out.println("elseteil");
                jButtonStarten.setEnabled(true);
                guthaben = 200;
                anzeige.setText("Guthaben: " + guthaben);
                jButtonNeustart.setText("Spiel beenden!");
                
            }
            

        }

        //evtl Highscoreanbindung hier einfügen

    }

    public void jButtonStarten_ActionPerformed(ActionEvent evt) 
    {
       

        if(guthaben > 0)
        {
            gamerunning = true;
            guthaben= guthaben - 10;
            anzeige.setText("Guthaben: " + guthaben);
            Textausgabe.setText(" 10 Einsatz gesetzt");
            jButtonNeustart.setText("Spiel beenden!");

            int eins = zufall.nextInt(4);
            int zwei = zufall.nextInt(4);
            int drei = zufall.nextInt(4);

            bild1=icons[eins];
            bild2=icons[zwei];
            bild3=icons[drei];

            jButton1.setDisabledIcon(bild1);
            jButton2.setDisabledIcon(bild2);
            jButton3.setDisabledIcon(bild3);

            if (eins != 4) {

                eins++;
            } else {
                eins = 0;
            }

            bild1 = icons[eins];

            if (zwei <3) {

                zwei = zwei+2;
            } else {
                if(zwei == 3)
                {
                    zwei= 0;

                }
                else
                {
                    zwei= 1;
                }
            }
            bild2 = icons[zwei];
            if (drei != 0) {

                drei = drei-1;
            } else {
                drei = 4;
            }

            bild3 = icons[drei];

            jButton4.setDisabledIcon(bild1);
            jButton5.setDisabledIcon(bild2);
            jButton6.setDisabledIcon(bild3);

            if (eins != 4) {

                eins++;
            } else {
                eins = 0;
            }

            bild1 = icons[eins];

            if (zwei <3) {

                zwei = zwei+2;
            } else {
                if(zwei == 3)
                {
                    zwei= 0;

                }
                else
                {
                    zwei= 1;
                }
            }

            bild2 = icons[zwei];
            if (drei != 0) {

                drei = drei-1;
            } else {
                drei = 4;
            }

            bild3 = icons[drei];

            jButton7.setDisabledIcon(bild1);
            jButton8.setDisabledIcon(bild2);
            jButton9.setDisabledIcon(bild3);

            GewinnErmittelnWaag();
            anzeige.setText("Guthaben: " + guthaben);
            gewinn = guthaben - 200;
            Gewinnanzeige.setText("Gewinn: " + gewinn);
        }
        else
        {
            Textausgabe.setText("Game Over! Neues Spiel starten!");
            jButtonStarten.setEnabled(false);
            jButtonNeustart.setText("Spiel Neustarten");

        }

    }

    //     public String bildAuswahl(int n)
    //     {
    //         switch(n){
    //             case 0:
    //             return "Icons/car.gif";
    // 
    //             case 1:
    //             return "Icons/pokeball.gif";
    // 
    //             case 2:
    //             return "Icons/nemo.gif";
    // 
    //             case 3:
    //             return "Icons/bart.gif";
    // 
    //             case 4:
    //             return "Icons/7.gif"; 
    // 
    //             default:
    //             return "";
    //         }
    //     }

    public void GewinnErmittelnWaag()
    {
        if(jButton1.getDisabledIcon() == jButton2.getDisabledIcon() && jButton2.getDisabledIcon() == jButton3.getDisabledIcon())       
        {            
            System.out.println(jButton1.getDisabledIcon() + ":" + jButton2.getDisabledIcon() + ":" + jButton3.getDisabledIcon()); 
            guthaben = guthaben + 10*5 ;
            Textausgabe.setText("Sie haben 50 gewonnnen!!!");

        }  
        else
        {
            if(jButton4.getDisabledIcon() == jButton5.getDisabledIcon() && jButton5.getDisabledIcon() == jButton6.getDisabledIcon())
            {
                System.out.println(jButton4.getDisabledIcon() + ":" + jButton5.getDisabledIcon() + ":" + jButton6.getDisabledIcon()); 
                guthaben = guthaben + 10*5 ;
                Textausgabe.setText("Sie haben 50 gewonnnen!");
            }
            else{
                if(jButton7.getDisabledIcon() == jButton8.getDisabledIcon() && jButton8.getDisabledIcon() == jButton9.getDisabledIcon())       
                {            
                    System.out.println(jButton7.getDisabledIcon() + ":" + jButton8.getDisabledIcon() + ":" + jButton9.getDisabledIcon());
                    guthaben = guthaben + 10*5 ;
                    Textausgabe.setText(" Sie haben 50 gewonnnen!!");
                }  
                else
                {
                    GewinnErmittelnschr();
                }  

            }
        }
    } 

    public void GewinnErmittelnschr(){
        if(jButton1.getDisabledIcon() == jButton5.getDisabledIcon() && jButton5.getDisabledIcon() == jButton9.getDisabledIcon())       
        {            
            System.out.println(jButton1.getDisabledIcon() + ":" + jButton5.getDisabledIcon() + ":" + jButton9.getDisabledIcon()); 
            guthaben = guthaben + 10*10 ;
            Textausgabe.setText("Sie haben 100 gewonnnen!!!");

        }  
        else
        {if(jButton7.getDisabledIcon() == jButton5.getDisabledIcon() && jButton5.getDisabledIcon() == jButton3.getDisabledIcon())       
            {            
                System.out.println(jButton7.getDisabledIcon() + ":" + jButton5.getDisabledIcon() + ":" + jButton3.getDisabledIcon()); 
                guthaben = guthaben + 10*10 ;
                Textausgabe.setText("Sie haben 100 gewonnnen!!!");
            }  
            else{
                System.out.println("Leider kein Gewinn");
                Textausgabe.setText(" Leider kein Gewinn");

            }
        }
    }

    // Ende Methoden

    public static void main(String[] args) {
        new Frame("Frame");

    }

}
```

was wäre einfacher ich hätte am liebsten sowas wo man seinen namen eintragen kann und die erspielten punkte übertragen werden 

von 1-10 also die top ten 
in was würdest dus am besten speichern?
.txt?


----------



## Fu3L (7. Mai 2011)

> ja wenn das guthaben 0 ist dann schreibt sich der button ja um auf neustarten und macht das guthaben wieder auf 200 also den startwert
> dann soll er den spielbutton wieder freigeben
> was er aber nicht macht er springt nichtmal in den else teil



Der Button ändert sich nicht, weil diese Methode (die zuvor schon gepostete) nur aufgerufen wird, wenn der Button gedrückt wird 
Das Guthaben müsstest du in der Methode prüfen, in der das Ergebnis der letzten Runde ermittelt wird.

txt bietet sich an oder xml. xml hab ich bisher nur über eine externe Bibliothek genutzt (JDom), also vllt am besten wirklich txt. Such mal nach sowas wie FileWriter oder Scanner. Ich weiß gerade leider nicht, was dafür die besten Klassen sind und muss gleich weg, aber du solltest dich sowieso erst einmal um das Allgemeine kümmern.
Heute Nacht lese ich auch den Quelltext noch einmal genauer^^


----------



## The Ripper (7. Mai 2011)

aber ich klick den doch immer 
beim ersten klick is das guthaben noch größer 0 dann bleibt er im else und dann in den if 

etz beim 2ten klicken müsste er weil doch gamerunning auf false gesetzt wird dann in else teil 2 springen oder nicht?
und da wird der button wieder freigegeben


----------



## Fu3L (7. Mai 2011)

```
public void jButtonNeustart_ActionPerformed(ActionEvent evt) {

         if ( gamerunning == true)
            {
                gamerunning = false;
                jButtonStarten.setEnabled(false);
                Textausgabe.setText("Ihr gewonnener Betrag:" + gewinn );
                jButtonNeustart.setText("Spiel Neustarten");
                System.out.println("ifteil");
                
            }
            else
            {
                gamerunning = true;
                System.out.println("elseteil");
                jButtonStarten.setEnabled(true);
                guthaben = 200;
                anzeige.setText("Guthaben: " + guthaben);
                jButtonNeustart.setText("Spiel beenden!");
                
            }
            
 
 
        //evtl Highscoreanbindung hier einfügen
 
    }
```

So müsste es funktionieren. Was habe ich geändert? Den Teil mit dem Guthaben rausgenommen, weil der logisch woanders reingehört und gamerunning == true beim Vergleich 
Die Zuweisung gamerunning = true ist immer true^^

PS: Hast du einen gewaltigen Bildschirm oder wie kannst du dieses Programm bedienen? Ich musste erstmal an den Maßen und Positionierungen rumbasteln^^

Edit: Ich hab nochn bisschen dran rumgedoktort, weil es bei mir immer noch seltsames Verhalten zeigt.. unter Anderem NullPointerExceptions.. Die kommen daher, dass die Variabel gamerunning vom Typ Boolean ist anstatt von boolean. Du musst den primitiven Datentyp wählen  Desweiteren würde ich es zu Beginn auf true setzen.

Edit2: Werden dir die Bilder angezeigt?^^ Ich musste erst einmal eine meiner Bilder-lade-klassen bemühen, um die von mir zu testzwecken gespeicherten Bilder zu laden (allerdings fand ich diese Notwendigkeit auch seltsam^^ ???:L)


----------



## The Ripper (8. Mai 2011)

ja  ich habe sogar 2 nebeneinander 
deswegen 
2 mal 30 zoll 

also bei mir läd der die bilder sofort 

oke und des mit nur einem = war doof sry


----------



## The Ripper (8. Mai 2011)

hammer es funktioniert 

danke danke danke


----------



## Fu3L (8. Mai 2011)

The Ripper hat gesagt.:


> ja  ich habe sogar 2 nebeneinander
> deswegen
> 2 mal 30 zoll
> 
> ...



Ok, das erklärts^^ Mein Notebook mit 15,6" Widescreen mag halt nur bis 768 Pixel in der Höhe^^ 
Das mit dem einen gleich war übrigends mein erster Programmierfehler^^  (wenn man HTML und CSS nicht als richtiges Programmieren zählt^^)

Edit: Darfst auch gerne noch ein Foren-Danke vergeben, dann wirke ich kompetent


----------



## The Ripper (8. Mai 2011)

noch kompetenter ?

etz fehlt nur noch die highscore liste 
da hab ich mal gegoogelt wirkt ja nich soooo leicht


----------



## Fu3L (8. Mai 2011)

Das stimmt. Nachlesne kann man es hier:

Galileo Computing :: Java ist auch eine Insel – 17 Datenströme

Da es aber recht umfangreich ist und man am Ende nur ein paar Zeilen braucht, habe ich mal die einzige Klasse mit der ich bisher ein Textfile erzeugt hab, rausgesucht:


```
Random rnd = new Random();
	
	public MakeCSVFile() {
	
		Scanner sc = null;
		
		try {
			String path = ("D:/Anfangsdatei.txt");
			File f = new File(path);
			sc = new Scanner(f);
		} catch(Exception ex) {
			ex.printStackTrace();
			System.exit(0);
		}	
		
		PrintWriter fos = null;
		try {
			fos = new PrintWriter(new FileOutputStream(new File("D:/Ausgabe.txt")), true); 
		} catch(Exception ex) { ex.printStackTrace(); }
		
		//Zeilenweises einlesen und direkt neu-schreiben der Datei:
		while(sc.hasNextLine()) {
			
			String nextLine = sc.nextLine();
			
			String[] name = nextLine.split(",");
			
			String pw = "";
			//Passwort zusammenbasteln
			for(int i = 0; i < 6; i++) {
				if(rnd.nextInt(2) == 0) {
					pw += rnd.nextInt(10);
				} else {
					//char[] c = Character.toChars(rnd.nextInt(57) + 66);
					int x = rnd.nextInt(57) + 66;
					if(x > 90 && x < 97) { x += 10; }
					char[] c = Character.toChars(x);
					pw += c[0];
				}
			} //end for()
			String newLine = name[0] + " " + name[1] + ": " + pw;
			fos.println(newLine);
		}	
		sc.close();
	}
```

Erzeugt aus einer Liste, in der jede Zeile mit Vorname, Nachname belegt ist, eine neue Datei, deren Zeilen Vorname Nachname: Passwort enthalten^^ Einfach mal in "Java ist auch eine Insel" oder der API der Klasse Scanner weitere Details nachlesen, wenn was unklar ist^^ (Sollte man auch mit Vertraut werden )

Edit: Ein fos.close() am Ende dürfte auch noch nützlich sein^^


----------



## The Ripper (8. Mai 2011)

wie definier ich dann vorname nachname? 

bei mir funktioniert es etz zu compailen ohne fehlermeldung mit den ganzen imports 
aber iwas aus führen tut die funktion nich 
beim beenden


----------



## Fu3L (8. Mai 2011)

Du musst das schon für dich anpassen^^ Das war lediglich die Erklärung was es tut und du musst es jetzt umwandeln. Im einfachsten Fall mit dem Auslesen aller vorigen Highscores und danach ersetzen des schlechtesten durch den neuen Highscore (sofern es eine Platzbegrenzung gibt und das neue Ergebnis groß genug ist) und Neuschreiben der Datei. Alle Werkzeuge, die du dafür brauchst, kennst du oder stehen im obigen Beispiel erklärt^^


----------

