M
Maksmus
Gast
Hallo,
also ich hab folgendes Problem.
Ich möchte/soll ein Memory programmieren. In der GUI sind lauter Buttons(Klasse MemoryKarte) mit bestimmten IDs.
Bei der Betätigung des Buttons sollen diese IDs der zwei offenen (spricht text sichtbar) verglichen werden.
Ich habe allerdings ein Problem mit dem Vergleich der beiden ID der angewählten Objekte.
Hier meckert der Compiler immer das die eine Variablie nicht initalisiert seien möge.
Ich poste einfach mal den Code.
Eigentlich habe ich das Problem nur mit den Action. Da ich dei Methode Karte1.ausgabe() nicht ausführen kann, da
die Karte eins eventuell nicht initallisiert seien könnte.....
Mir ist da nicht ganz klar. Weil die Variable anzoffeneKarten funktioniert ja auch.
Wäre toll wenn jemand einen Ratschlag hätte!
zu vollständigkeit poste ich noch die Klasse MemoryKarte
also ich hab folgendes Problem.
Ich möchte/soll ein Memory programmieren. In der GUI sind lauter Buttons(Klasse MemoryKarte) mit bestimmten IDs.
Bei der Betätigung des Buttons sollen diese IDs der zwei offenen (spricht text sichtbar) verglichen werden.
Ich habe allerdings ein Problem mit dem Vergleich der beiden ID der angewählten Objekte.
Hier meckert der Compiler immer das die eine Variablie nicht initalisiert seien möge.
Ich poste einfach mal den Code.
Code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MemorySpiel {
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(false);
//Create and set up the window.
JFrame frame = new JFrame("TestGridLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MemoryKarte b[] = new MemoryKarte[24];
//for(int i=0; i < b.length; i++)
b[0] = new MemoryKarte(0);
b[1] = new MemoryKarte(1);
b[2] = new MemoryKarte(2);
b[3] = new MemoryKarte(3);
b[4] = new MemoryKarte(4);
b[5] = new MemoryKarte(5);
b[6] = new MemoryKarte(6);
b[7] = new MemoryKarte(7);
b[8] = new MemoryKarte(8);
b[9] = new MemoryKarte(9);
b[10] = new MemoryKarte(10);
b[11] = new MemoryKarte(11);
b[12] = new MemoryKarte(0);
b[13] = new MemoryKarte(1);
b[14] = new MemoryKarte(2);
b[15] = new MemoryKarte(3);
b[16] = new MemoryKarte(4);
b[17] = new MemoryKarte(5);
b[18] = new MemoryKarte(6);
b[19] = new MemoryKarte(7);
b[20] = new MemoryKarte(8);
b[21] = new MemoryKarte(9);
b[22] = new MemoryKarte(10);
b[23] = new MemoryKarte(11);
JPanel pane = new JPanel();
pane.setLayout(new GridLayout(6, 4, 2, 2));
KlickActionListener KAL = new KlickActionListener();
for(int i=0; i < b.length; i++)
{
b[i].addActionListener(KAL);
pane.add(b[i]); }
// Add JPanel to JFrame
frame.getContentPane().add(pane);
//Display the window.
frame.pack();
frame.setVisible(true);
}
}
class KlickActionListener implements ActionListener {
private Integer anzoffeneKarten = 0;
private Integer MemoryKarte1 = 0;
private Integer MemoryKarte2 = 99;
private MemoryKarte Karte1 = null;
private MemoryKarte Karte2 = null;
// Karte1 = new MemoryKarte(99);
public void actionPerformed(ActionEvent e) {
switch (anzoffeneKarten) {
case 0:
MemoryKarte Karte1 = (MemoryKarte) e.getSource();
if (Karte1.umdrehen()==true) {
anzoffeneKarten++;
MemoryKarte1 = Karte1.idausgabe();
System.out.println ("ID Karte 1 :" + MemoryKarte1);
System.out.println ("ID Karte 2 :" + MemoryKarte2); }
else {
anzoffeneKarten--;
}
break;
case 1:
MemoryKarte Karte2 = (MemoryKarte) e.getSource();
if (Karte2.umdrehen()==true) {
anzoffeneKarten++;
MemoryKarte2 = Karte2.idausgabe();
System.out.println ("ID Karte 1 :" + MemoryKarte1);
System.out.println ("ID Karte 2 :" + MemoryKarte2); }
else {
anzoffeneKarten--;
break;
}
if (Karte1.idausgabe() == MemoryKarte2) {
System.out.println ("Bingo");
}
break;
}
System.out.println("AUA " + anzoffeneKarten );
}
}
Eigentlich habe ich das Problem nur mit den Action. Da ich dei Methode Karte1.ausgabe() nicht ausführen kann, da
die Karte eins eventuell nicht initallisiert seien könnte.....
Mir ist da nicht ganz klar. Weil die Variable anzoffeneKarten funktioniert ja auch.
Wäre toll wenn jemand einen Ratschlag hätte!
zu vollständigkeit poste ich noch die Klasse MemoryKarte
Code:
jmport java.awt.*;
import javax.swing.*;
public class MemoryKarte extends JButton{
private String vorderseite; // vorderseite ist Seite mit verschieden Bildern
private String rueckseite;
private Boolean sichtbar; // Wenn True liegt karte offen
private Integer id; //
public MemoryKarte(Integer id){
this.id = id;
vorderseite = "karte id " + id;
rueckseite = "Rücken";
setText(rueckseite);
sichtbar = false;
}
private void zeigeBild()
{
setText(vorderseite);
sichtbar = true;
}
private void zeigeRuecken(){
setText(rueckseite);
sichtbar = false;
}
public Integer idausgabe() {
return id;
}
public boolean umdrehen() {
if (sichtbar == false) {
zeigeBild();
// test++;
//System.out.println(test);
return true;
}
else {
zeigeRuecken();
return false;
}
}
}