Wie kann ich die Fragen mit den anderen Klassen verbinden?

Vitalia

Mitglied
Hallo alle zusammen,
ich habe ein großes Problem. Leider weiß ich nicht,wie ich meine Frage-Klasse mit Button und etc. mit den anderen Klassen verbinde :bahnhof:

Könnte mir jemand vielleicht dabei behilflich sein?


Code 1.
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Brainbomb
{
    MatchMaker matchmaker;

    JPanel  main, 
            startPanel, 
            selectPanel, 
            playPanel, 
            endPanel;

    JLabel  startHeadline,
            selectHeadline, 
            frageLabel,
            content;

    JButton selectChars,
            devs, 
            startGame, 
            antwort1,
            antwort2, 
            antwort3, 
            antwort4;

    public Brainbomb()
    {
        matchmaker = new MatchMaker();
        GUI();
    }

    public void GUI()
    {
        JFrame frame = new JFrame("Brainbomb");

        main = new JPanel();
        startPanel = new JPanel();
        selectPanel = new JPanel();
        playPanel = new JPanel();
        endPanel = new JPanel();

        startPanel.setLayout(new GridBagLayout());
        selectPanel.setLayout(new GridBagLayout());
        playPanel.setLayout(new GridBagLayout());
        endPanel.setLayout(new GridBagLayout());

        main.add(startPanel);
        main.add(selectPanel);
        main.add(playPanel);
        main.add(endPanel);
        frame.add(main);

        GridBagConstraints c = new GridBagConstraints();
        c.insets = new Insets(5, 5, 5, 5);

        // startPanel
        startHeadline = new JLabel("Willkommen bei Brainbomb!");
        c.gridx = 0; 
        c.gridy = 0;
        c.gridwidth = 3;
        startPanel.add(startHeadline, c);

        devs = new JButton("?");
        devs.addActionListener(new devsListener());
        c.gridx = 4;
        c.gridy = 0;
        c.gridwidth = 1;
        startPanel.add(devs, c);

        content = new JLabel("");
        c.gridx = 0;
        c.gridy = 1;
        c.gridwidth = 4;
        startPanel.add(content, c);

        selectChars = new JButton("Spieler auswählen!");
        selectChars.addActionListener(new selectCharsListener());
        c.gridx = 0; 
        c.gridy = 2;
        c.gridwidth = 4;
        startPanel.add(selectChars, c);

        // selectPanel
        selectHeadline = new JLabel("Wählen Sie ihre Spielfigur.");
        c.gridx = 0;
        c.gridy = 0;
        c.gridwidth = 4;
        selectPanel.add(selectHeadline, c);

        startGame = new JButton("Spiel starten!");
        startGame.addActionListener(new startGameListener());
        c.gridx = 0; 
        c.gridy = 4;
        c.gridwidth = 4;
        selectPanel.add(startGame, c);

        // playPanel
        frageLabel = new JLabel("Hier wird die Frage stehen!");
        c.gridx = 0;
        c.gridy = 0;
        c.gridwidth = 4;
        playPanel.add(frageLabel, c);

        antwort1 = new JButton("1");
        c.gridx = 0;
        c.gridy = 1;
        c.gridwidth = 1;
        playPanel.add(antwort1, c);

        antwort2 = new JButton("2");
        c.gridx = 1;
        c.gridy = 1;
        c.gridwidth = 1;
        playPanel.add(antwort2, c);

        antwort3 = new JButton("3");
        c.gridx = 0;
        c.gridy = 2;
        c.gridwidth = 1;
        playPanel.add(antwort3, c);

        antwort4 = new JButton("4");
        c.gridx = 1;
        c.gridy = 2;
        c.gridwidth = 1;
        playPanel.add(antwort4, c);

        // endPanel
        // ---
        
        selectPanel.setVisible(false);
        playPanel.setVisible(false);
        endPanel.setVisible(false);
        startPanel.setVisible(true);

        frame.pack();
        frame.setSize(400, 250);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    class selectCharsListener implements ActionListener {
        public void actionPerformed(ActionEvent event) 
        {
            startPanel.setVisible(false);
            selectPanel.setVisible(true);
        }
    }

    class devsListener implements ActionListener {
        public void actionPerformed(ActionEvent event) 
        {
            content.setText("Developer: Armin, Sara, Merve, Irina");
        }
    }

    class startGameListener implements ActionListener {
        public void actionPerformed(ActionEvent event) {
            Frage datensatz = matchmaker.naechsteRunde();
            frageLabel.setText("");
            selectPanel.setVisible(false);
            playPanel.setVisible(true);
        }
    }
}

Code 2
Java:
public class MatchMaker
{
    Player[] players = new Player[2];
    Datenbank datenbank = null;
    int rundencounter = 0;

    public MatchMaker()
    {
        players[0] = new Player();
        players[1] = new Player();

        datenbank = new Datenbank();
    }
    
    public Frage naechsteRunde() {
        rundencounter++;
        return datenbank.getFrage(rundencounter - 1);
    }
}

Code 3

Java:
public class Datenbank
{
    Frage[] fragen = new Frage[15];
    
    public Datenbank()
    {
        fragen[0] = new Frage();
        fragen[0].setFrage("Wie groß ist der Eiffelturm?");
        String[] antworten0 = {"301m", "100m", "1000mm", "20m"};
        fragen[0].setAntworten(antworten0);
        
        fragen[1] = new Frage();
        fragen[1].setFrage("Wie groß ist der Berliner Fernsehturm?");
        String[] antworten1 = {"egal", "122m", "192m", "300m"};
        fragen[1].setAntworten(antworten1);
    }
    
    public Frage getFrage(int rundencounter) {
        return fragen[rundencounter];
    }
}

Code 4

Java:
public class Player
{
    private int score;
    
    public Player()
    {
    }
    
    public void addScore(int score) {
        this.score = score;
    }
    
    public int getScore() {
        return score;
    }
}

Code 5

Java:
public class Frage
{
    String frage = null;
    String[] antworten = new String[4];
    
    public Frage()
    {
    }
    
    public void setFrage(String frage) {
        this.frage = frage;
    }
    
    public String getFrage() {
        return frage;
    }
    
    public void setAntworten(String[] antwortArray) {
        this.antworten = antwortArray;
    }
        
    public String[] getAntworten() {
        return antworten;
    }
}

Gegebenfalls habe ich noch diese Klasse mit einer Vererbung mit JFrame und Implementierung vom ActionListener aufgeschrieben:

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class Box extends JFrame implements ActionListener
{
    JButton button1;
    JButton button2;
    JButton button3;
    JButton button4;
    JLabel label;
    JPanel panel;
    
    public Box(String a1, String a2, String a3,String a4, String b1) 
    { 
        this.setTitle("Brainbomb");
        this.setSize(400,200);
        panel = new JPanel();
        
        label = new JLabel();
        
        button1 = new JButton (a1);
        button2 = new JButton (a2);
        button3 = new JButton (a3);
        button4 = new JButton (a4);
        
        button1.addActionListener(this);
        button2.addActionListener(this);
        button3.addActionListener(this);
        button4.addActionListener(this);
        
        panel.add(button1);
        panel.add(button2);
        panel.add(button3);
        panel.add(button4);
        
        panel.add(label);
        this.add(panel);
        
        label.setText((b1));
    }
    
    public static void main(String[] args)
    { 
        Box b = new Box("Muenchen","Bonn","Berlin","Duesseldorf","Welches ist die Haupstadt von Deutschland?");
        b. setVisible(true);
    }
    public void actionPerformed (ActionEvent e)
    {
        if(e.getSource() == this.button1 || e.getSource() == this.button2 
        || e.getSource() == this. button4) {
            label.setText(("Falsch"));
        }
        else if(e.getSource() == this.button3) {
            label.setText("Richtig");
        }
    }
}

Ich bedanke mich schon mal für eure Tipps und Hilfen..🙂
 
Ist eine sehr allgemeine Frage. Du kannst entweder Referenzen über den Konstruktor weiterreichen oder mit Settern arbeiten.

new devsListener(matchMaker);

devListener = new devsListener();
devListener.setMatchMaker(matchMaker);
 

Zurück
Oben