Java abfrage ob button1 und button2 nacheinander gedrückt wurden


#1
Hallo, ich habe versucht eine Art Memory zu programmieren, allerdings bekomme ich es nich hin abzufragen ob der button 1 und der button4 nacheinander gedrückt wurden(Ich will das ganze dafür nutzen, dass eine Meldung kommt wenn man zb. eine Karte aufgedeckt hat und die zweite die man aufdeckt das gleiche Bild ist)

Hier mein Code:

Java:
package pack1;

import java.awt.Color;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class main extends JPanel implements ActionListener{
   
    ImageIcon icon = new ImageIcon("C:\\Users\\vince\\Pictures\\bilder für game\\memory-karte-hinten.png");
    static ImageIcon icon1 = new ImageIcon("C:\\Users\\vince\\Pictures\\bilder für game\\eule.jpg");
    static ImageIcon icon2 = new ImageIcon("C:\\Users\\vince\\Pictures\\bilder für game\\hund.jpg");
   
   
    JButton button1 = new JButton(icon);
    JButton button11 = new JButton(icon1);
    JButton button2 = new JButton(icon);
    JButton button22 = new JButton(icon2);
    JButton button3 = new JButton(icon);
    JButton button33 = new JButton(icon2);
    JButton button4 = new JButton(icon);
    JButton button44 = new JButton(icon1);
   
    public static void main(String[] args) {
        main main = new main();
        JFrame frame = new JFrame("Game");
       
        frame.setVisible(true);
        frame.setSize(1920, 1080);
        frame.add(main);
        icon1.setImage(icon1.getImage().getScaledInstance(200,200,Image.SCALE_DEFAULT)); 
        icon2.setImage(icon2.getImage().getScaledInstance(200, 200,Image.SCALE_DEFAULT));
       
    }
    public main() {
       
        add(button1);
        add(button11);
        add(button2);
        add(button22);
        add(button3);
        add(button33);
        add(button4);
        add(button44);
       
        setBackground(Color.BLUE);
       
       
       
        button11.setVisible(false);
        button1.setVisible(true);
        button22.setVisible(false);
        button2.setVisible(true);
        button33.setVisible(false);
        button3.setVisible(true);
        button44.setVisible(false);
        button4.setVisible(true);
       
       
       
       
       
       
        button1.addActionListener(this );
        button2.addActionListener(this );
        button3.addActionListener( this );
        button4.addActionListener( this );
    }
    public void actionPerformed(ActionEvent ae) {
        Object ob = ae.getSource();
       
        if(ob == button1) {
           
           
            button11.setVisible(true);
            button1.setVisible(false);
           
        }if(ob == button2) {
            button22.setVisible(true);
            button2.setVisible(false);
        }if(ob == button1) {
           
        }if(ob == button3) {
            button33.setVisible(true);
            button3.setVisible(false);
        }if(ob == button4) {
            button44.setVisible(true);
            button4.setVisible(false);
        }
       
    }

}
evtl. so?:

Java:
if (ob == button1 && ob == button4){
     JOptionPane.showMessageDialog(null, "Prima, du hast ein paar");
}
 

HonniCilest

Erfahrenes Mitglied
#4
Java:
public static void main(String[] args) {
main main = new main();
Hilfe :confused: Einfach viel zu viel main! Schau dir mal die Java Konventionen an. Das fängt damit an, dass Klassen großgeschrieben werden.

Du brauchst eine zusätzliche Variable, in der zu die erste Auswahl zwischenspeichern kannst.


Zusätzlicher Hinweis:
Mit deinem Konstrukt aus button_n und button_nn mit den ganzen if's etc wirst du bei mehr als 4 Karten nicht auf Dauer glücklich werden. Überleg dir wie du das modularer (große n) gestalten kannst.
 

Neue Beiträge