Wer Wird Millionär

TobiasN

Neues Mitglied
Moin, Ich habe das Problem, das die erste Frage, und wenn ich diese richtig beantworte auch die zweite Frage korrekt angezeigt werden, danach allerdings immer die Frage auf "Falsche Antwort! Das Spiel ist vorbei" gesetzt wird und nicht auf die nächste, obwohl ich die Frage eigentlich richtig beantwortet habe. Die antworten und auch die Belohnung hingegen werden angepasst.
Außerdem soll, wenn die Frage falsch beantwortet wurde, der Antwort Butten keine Aktion mehr auslösen.
Der Neustart Butten ist noch ohne Funktion, ich möchte aber erstmal, dass die Fragen bei einer richtigen Antwort auch richtig angepasst werden.

Java:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class WWM {
    // GUI Objekte und Variablen definieren
    JFrame frame;
    JLabel frageLabel;
    JRadioButton antwortARadioButton;
    JRadioButton antwortBRadioButton;
    JRadioButton antwortCRadioButton;
    JRadioButton antwortDRadioButton;
    ButtonGroup antwortButtonGroup = new ButtonGroup();
    JButton antwortButton;
    JButton neustartButton;
    JLabel belohnungLabel;

    int[] belohnung = { 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 250000, 500000, 1000000 };
    int fragenNummer = 0;
    static boolean gameOver = false;
    WWM gui;

    public WWM() {
        // GUI grundgerüst
        frame = new JFrame("Wer wird Millionär?");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1200, 600);
        frame.setLayout(new GridLayout(4, 1));

        // Bereich, wo die Fragen angezeigt werden
        JPanel fragePanel = new JPanel();
        fragePanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        fragePanel.setBackground(Color.WHITE);
        fragePanel.setLayout(new GridLayout(2, 1));
        frageLabel = new JLabel("Frage");
        frageLabel.setFont(new Font("Arial", Font.PLAIN, 18));
        fragePanel.add(frageLabel);
        belohnungLabel = new JLabel("0 €");
        belohnungLabel.setFont(new Font("Arial", Font.BOLD, 16));
        belohnungLabel.setHorizontalAlignment(JLabel.RIGHT);
        fragePanel.add(belohnungLabel);

        // Bereich, wo die Antworten stehen
        JPanel antwortPanel = new JPanel();
        antwortPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 5, 10));
        antwortPanel.setBackground(Color.WHITE);
        antwortPanel.setLayout(new GridLayout(4, 1));
        antwortARadioButton = new JRadioButton("A");
        antwortARadioButton.setFont(new Font("Arial", Font.PLAIN, 16));
        antwortBRadioButton = new JRadioButton("B");
        antwortBRadioButton.setFont(new Font("Arial", Font.PLAIN, 16));
        antwortCRadioButton = new JRadioButton("C");
        antwortCRadioButton.setFont(new Font("Arial", Font.PLAIN, 16));
        antwortDRadioButton = new JRadioButton("D");
        antwortDRadioButton.setFont(new Font("Arial", Font.PLAIN, 16));
        antwortButtonGroup = new ButtonGroup();
        antwortButtonGroup.add(antwortARadioButton);
        antwortButtonGroup.add(antwortBRadioButton);
        antwortButtonGroup.add(antwortCRadioButton);
        antwortButtonGroup.add(antwortDRadioButton);
        antwortPanel.add(antwortARadioButton);
        antwortPanel.add(antwortBRadioButton);
        antwortPanel.add(antwortCRadioButton);
        antwortPanel.add(antwortDRadioButton);

        // Buttons für die Antworten
        JPanel buttonPanelAntwort = new JPanel();
        buttonPanelAntwort.setBorder(BorderFactory.createEmptyBorder(5, 10, 10, 10));
        buttonPanelAntwort.setBackground(Color.WHITE);
        buttonPanelAntwort.setLayout(new GridLayout(1, 1));
        antwortButton = new JButton("Antwort");
        antwortButton.setFont(new Font("Arial", Font.PLAIN, 16));
        buttonPanelAntwort.add(antwortButton);

        // Button zum neustarten
        JPanel buttonPanelNeustart = new JPanel();
        buttonPanelNeustart.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        buttonPanelNeustart.setBackground(Color.WHITE);
        buttonPanelNeustart.setLayout(new GridLayout(1, 1));
        neustartButton = new JButton("Spiel neu starten");
        neustartButton.setFont(new Font("Arial", Font.PLAIN, 16));
        buttonPanelNeustart.add(neustartButton);

        // Alles zum Frame hinzufügen
        frame.add(fragePanel);
        frame.add(antwortPanel);
        frame.add(buttonPanelAntwort);
        frame.add(buttonPanelNeustart);
        frame.setVisible(true);
    }

    // Liste mit fragen
    java.util.List<String[]> fragenList;

    // antworten der fragen
    String[] richtigeAntworten = { "D", "D", "C", "A", "B", "C", "D", "B", "C", "C", "C", "B", "B", "A", "C" };
    ActionListener antwortButtonListener = null;

    // Frage anzeigen
    public void setFrage(String fragen) {
        frageLabel.setText(fragen);
    }

    // Antwort A
    public void setAntwortA(String antwort) {
        antwortARadioButton.setText("A) " + antwort);
    }

    // Antwort B
    public void setAntwortB(String antwort) {
        antwortBRadioButton.setText("B) " + antwort);
    }

    // Antwort C
    public void setAntwortC(String antwort) {
        antwortCRadioButton.setText("C) " + antwort);
    }

    // Antwort D
    public void setAntwortD(String antwort) {
        antwortDRadioButton.setText("D) " + antwort);
    }

    // Buttonlistener zum Überprüfen der Antwort
    public void addAntwortButtonListener(ActionListener antwortButtonListener) {
        antwortButton.addActionListener(e -> {
            ButtonModel selected = antwortButtonGroup.getSelection();
            if (selected != null) {
                antwortButtonListener.actionPerformed(e);
            }
        });
    }

    // Anzeige für gewonnenes Geld
    public void setBelohnung(int fragenNummer) {
        int aktuelleBelohnung = belohnung[fragenNummer];
        belohnungLabel.setText(aktuelleBelohnung + " €");
    }

    // Start Methode
    public void start() {
        gui = new WWM();
        gui.setBelohnung(0);

        // Fragen und Antworten: {Frage, A, B, C, D}
        String[][] fragen = {
                { "Beschäftigt der fünfmalige Tour-de-France-Sieger Hinault entsprechende Hausangestellte, dann arbeiten bei ... ?",
                        "Focks Tärrier", "Dallma Tiener", "Re Pinnscher", "Bernard Diener" },
                { "Lässt man sich auf eine Beziehung mit einer Schönheitskönigin ein, hat man sozusagen ...?",
                        "ein Ungleich-Gewicht", "ein Über-Maß", "ein Miss-Verhältnis", "eine Schief-Lage" },
                { "Gesundheitsbewusste Strandurlauber sind auch beim ... ?", "Nünftig vernünftig", "Sonnen besonnen",
                        "Sichtig umsichtig", "Sam achtsam" },
                { "Wer einen Kellner sucht, findet ihn buchstäblich im ... ?", "September", "Oktober", "November",
                        "Dezember" },
                { "Zu vorgerückter Stunde beeilten sich die Wanderer, damit sie es noch vor Einbruch der Dunkelheit bis zum nächsten ...?",
                        "Klein stätte", "Sied lunngen", "Ort schafften", "Kuh dörfer" },
                { "Wühlt der Hund mit seinem Gesicht im Schnee, ist er danach sozusagen ...?", "erbarmungslos",
                        "abgebrüht", "unnachgiebig", "kaltschnäuzig" },
                { "Wem während des Einkaufs der Drahtesel gestohlen wird, der steht vor dem Laden erst mal völlig ...?",
                        "schutslos", "radlos", "plahnlos", "hilflos" },
                { "Wovon findet man die Version mit „W“ am Anfang beim Einkaufen oft im selben Regal?",
                        "Vollmilchschokolade", "Vollkornbrot", "Vollwaschmittel", "Vollwertmüsli" },
                { "Welche Präposition ist auch für Weinkenner nicht weit hergeholt?", "mosel", "ahr", "nahe", "rhein" },
                { "Was stieg mit Jahresbeginn 2023 auf 250 Euro im Monat?", "Rundfunkbeitrag", "Hundesteuer",
                        "Kindergeld", "m²-Mietpreis in München" },
                { "Wer gehört zu den Kolleginnen von Merle Frohms, Giulia Gwinn, Lina Magull, Sara Däbritz und Marina Hegering?",
                        "Annalena Baerbock", "Alexandra Popp", "Jil Sander", "Cornelia Poletto" },
                { "Wer ist ständiger Begleiter von Wednesday aus der Addams Family, der derzeit wohl angesagtesten Serien-Teenagerin?",
                        "Laufendes Näschen", "Eiskaltes Händchen", "Zuckendes Äuglein", "Stinkendes Füßchen" },
                { "Wie nennt der Engländer seine Vermieterin?", "landlady", "villagequeen", "citymadam", "townmiss" },
                { "Abstimmungskrimi in Washington: Wer brauchte 2023 ganz 15 Wahlgänge, um Sprecher des Repräsentantenhauses zu werden?",
                        "Nixon", "Eisenhower", "McCarthy", "Hoover" },
        };

        fragenList = Arrays.asList(fragen);

        antwortButtonListener = e -> {
            // Überprüfung der Antwort und Aktualisierung der Anzeige
            String eingabe = "";
            if (gui.antwortARadioButton.isSelected()) {
                eingabe = "A";
            } else if (gui.antwortBRadioButton.isSelected()) {
                eingabe = "B";
            } else if (gui.antwortCRadioButton.isSelected()) {
                eingabe = "C";
            } else if (gui.antwortDRadioButton.isSelected()) {
                eingabe = "D";
            }

            if (eingabe.equals(richtigeAntworten[fragenNummer])) {

                // Richtige Antwort
                belohnung[fragenNummer] = belohnung[fragenNummer + 1];
                fragenNummer++;
                gui.setBelohnung(fragenNummer);
                spieleRunde(fragenNummer);

            } else {
                // Falsche Antwort
                gui.setFrage("Falsche Antwort! Das Spiel ist vorbei.");
                gameOver = true;
                antwortButton.removeActionListener(antwortButtonListener);
            }
        };
        spieleRunde(fragenNummer);
    }

    public void spieleRunde(int fragenNummer) {
        gui.addAntwortButtonListener(antwortButtonListener);
        if (fragenNummer >= belohnung.length || gameOver) {
            // Alle Fragen wurden durchlaufen oder das Spiel ist vorbei
            return;
        }

        // Anzeigen der aktuellen Frage und Antworten
        gui.setFrage(fragenList.get(fragenNummer)[0]);
        gui.setAntwortA(fragenList.get(fragenNummer)[1]);
        gui.setAntwortB(fragenList.get(fragenNummer)[2]);
        gui.setAntwortC(fragenList.get(fragenNummer)[3]);
        gui.setAntwortD(fragenList.get(fragenNummer)[4]);
    }

    public static void main(String[] args) {
        WWM gui = new WWM(); // Neue Instanz
        gui.start(); // Startet GUI
    }
}
 

KonradN

Super-Moderator
Mitarbeiter
Mehrere Probleme:

a) Du hast zwei Instanzen von WWM - Das ist also schon ein erstes Problem, da Du mal auf die erste erzeugte Instanz zugreifst und mal auf die Instanz in gui.

b) Du fügst in spieleRunde erneut einen ActionListener hinzu. Beim zweiten Klick wird dieser also doppelt behandelt:
Die Frage an Index 1 hast Du richtig beantwortet. Damit geht er zur Frage 2. Dann wird der Klick aber noch einmal ausgewertet. Frage mit Index 2 hat aber nun eine andere richtige Antwort, daher ist die Antwort falsch.
 

TobiasN

Neues Mitglied
Danke für die Antwort, ich habe den Code jetzt etwas angepasst, allerdings werden die Fragen und Antworten nach der 2. Frage nicht mehr aktualisiert.
Also ich beantworte Frage 0 richtig -> Frage 1 wird angezeigt, Belohnung wird aktualisiert -> beantworte Frage 1 richtig -> Frage 1 wird weiterhin angezeigt, Belohnung wird aktualisiert
wenn ich jetzt die Antwort auswähle, welche für Frage 2 richtig wäre, kommt die Meldung "Falsche Antwort", Belohnung wird aktualisiert, wenn ich die frage falsch beantworte, kommt die gleiche Meldung, aber die Belohnung wird nicht aktualisiert.
Hier noch einmal der angepasste Code:

Java:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class WWM {
    // GUI Objekte und Variablen definieren
    JFrame frame;
    JLabel frageLabel;
    JRadioButton antwortARadioButton;
    JRadioButton antwortBRadioButton;
    JRadioButton antwortCRadioButton;
    JRadioButton antwortDRadioButton;
    ButtonGroup antwortButtonGroup = new ButtonGroup();
    JButton antwortButton;
    JButton neustartButton;
    JLabel belohnungLabel;

    int[] belohnung = { 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 250000, 500000, 1000000 };
    int fragenNummer = 0;
    static boolean gameOver = false;
    WWM gui;

    public WWM() {
        // GUI grundgerüst
        frame = new JFrame("Wer wird Millionär?");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1200, 600);
        frame.setLayout(new GridLayout(4, 1));

        // Bereich, wo die Fragen angezeigt werden
        JPanel fragePanel = new JPanel();
        fragePanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        fragePanel.setBackground(Color.WHITE);
        fragePanel.setLayout(new GridLayout(2, 1));
        frageLabel = new JLabel("Frage");
        frageLabel.setFont(new Font("Arial", Font.PLAIN, 18));
        fragePanel.add(frageLabel);
        belohnungLabel = new JLabel("0 €");
        belohnungLabel.setFont(new Font("Arial", Font.BOLD, 16));
        belohnungLabel.setHorizontalAlignment(JLabel.RIGHT);
        fragePanel.add(belohnungLabel);

        // Bereich, wo die Antworten stehen
        JPanel antwortPanel = new JPanel();
        antwortPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 5, 10));
        antwortPanel.setBackground(Color.WHITE);
        antwortPanel.setLayout(new GridLayout(4, 1));
        antwortARadioButton = new JRadioButton("A");
        antwortARadioButton.setFont(new Font("Arial", Font.PLAIN, 16));
        antwortBRadioButton = new JRadioButton("B");
        antwortBRadioButton.setFont(new Font("Arial", Font.PLAIN, 16));
        antwortCRadioButton = new JRadioButton("C");
        antwortCRadioButton.setFont(new Font("Arial", Font.PLAIN, 16));
        antwortDRadioButton = new JRadioButton("D");
        antwortDRadioButton.setFont(new Font("Arial", Font.PLAIN, 16));
        antwortButtonGroup = new ButtonGroup();
        antwortButtonGroup.add(antwortARadioButton);
        antwortButtonGroup.add(antwortBRadioButton);
        antwortButtonGroup.add(antwortCRadioButton);
        antwortButtonGroup.add(antwortDRadioButton);
        antwortPanel.add(antwortARadioButton);
        antwortPanel.add(antwortBRadioButton);
        antwortPanel.add(antwortCRadioButton);
        antwortPanel.add(antwortDRadioButton);

        // Buttons für die Antworten
        JPanel buttonPanelAntwort = new JPanel();
        buttonPanelAntwort.setBorder(BorderFactory.createEmptyBorder(5, 10, 10, 10));
        buttonPanelAntwort.setBackground(Color.WHITE);
        buttonPanelAntwort.setLayout(new GridLayout(1, 1));
        antwortButton = new JButton("Antwort");
        antwortButton.setFont(new Font("Arial", Font.PLAIN, 16));
        buttonPanelAntwort.add(antwortButton);

        // Button zum neustarten
        JPanel buttonPanelNeustart = new JPanel();
        buttonPanelNeustart.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        buttonPanelNeustart.setBackground(Color.WHITE);
        buttonPanelNeustart.setLayout(new GridLayout(1, 1));
        neustartButton = new JButton("Spiel neu starten");
        neustartButton.setFont(new Font("Arial", Font.PLAIN, 16));
        buttonPanelNeustart.add(neustartButton);

        // Alles zum Frame hinzufügen
        frame.add(fragePanel);
        frame.add(antwortPanel);
        frame.add(buttonPanelAntwort);
        frame.add(buttonPanelNeustart);
        frame.setVisible(true);
    }

    // Liste mit fragen
    java.util.List<String[]> fragenList;

    // antworten der fragen
    String[] richtigeAntworten = { "D", "D", "C", "A", "B", "C", "D", "B", "C", "C", "C", "B", "B", "A", "C" };
    ActionListener antwortButtonListener = null;

    // Frage anzeigen
    public void setFrage(String fragen) {
        frageLabel.setText(fragen);
    }

    // Antwort A
    public void setAntwortA(String antwort) {
        antwortARadioButton.setText("A) " + antwort);
    }

    // Antwort B
    public void setAntwortB(String antwort) {
        antwortBRadioButton.setText("B) " + antwort);
    }

    // Antwort C
    public void setAntwortC(String antwort) {
        antwortCRadioButton.setText("C) " + antwort);
    }

    // Antwort D
    public void setAntwortD(String antwort) {
        antwortDRadioButton.setText("D) " + antwort);
    }

    // Buttonlistener zum Überprüfen der Antwort
    public void addAntwortButtonListener(ActionListener antwortButtonListener) {
        antwortButton.addActionListener(e -> {
            ButtonModel selected = antwortButtonGroup.getSelection();
            if (selected != null) {
                antwortButtonListener.actionPerformed(e);
            }
        });
    }

    // Anzeige für gewonnenes Geld
    public void setBelohnung(int fragenNummer) {
        int aktuelleBelohnung = belohnung[fragenNummer];
        belohnungLabel.setText(aktuelleBelohnung + " €");
    }

    // Start Methode
    public void start() {
        gui = this;
        gui.setBelohnung(0);

        // Fragen und Antworten: {Frage, A, B, C, D}
        String[][] fragen = {
                { "Beschäftigt der fünfmalige Tour-de-France-Sieger Hinault entsprechende Hausangestellte, dann arbeiten bei ... ?",
                        "Focks Tärrier", "Dallma Tiener", "Re Pinnscher", "Bernard Diener" },
                { "Lässt man sich auf eine Beziehung mit einer Schönheitskönigin ein, hat man sozusagen ...?",
                        "ein Ungleich-Gewicht", "ein Über-Maß", "ein Miss-Verhältnis", "eine Schief-Lage" },
                { "Gesundheitsbewusste Strandurlauber sind auch beim ... ?", "Nünftig vernünftig", "Sonnen besonnen",
                        "Sichtig umsichtig", "Sam achtsam" },
                { "Wer einen Kellner sucht, findet ihn buchstäblich im ... ?", "September", "Oktober", "November",
                        "Dezember" },
                { "Zu vorgerückter Stunde beeilten sich die Wanderer, damit sie es noch vor Einbruch der Dunkelheit bis zum nächsten ...?",
                        "Klein stätte", "Sied lunngen", "Ort schafften", "Kuh dörfer" },
                { "Wühlt der Hund mit seinem Gesicht im Schnee, ist er danach sozusagen ...?", "erbarmungslos",
                        "abgebrüht", "unnachgiebig", "kaltschnäuzig" },
                { "Wem während des Einkaufs der Drahtesel gestohlen wird, der steht vor dem Laden erst mal völlig ...?",
                        "schutslos", "radlos", "plahnlos", "hilflos" },
                { "Wovon findet man die Version mit „W“ am Anfang beim Einkaufen oft im selben Regal?",
                        "Vollmilchschokolade", "Vollkornbrot", "Vollwaschmittel", "Vollwertmüsli" },
                { "Welche Präposition ist auch für Weinkenner nicht weit hergeholt?", "mosel", "ahr", "nahe", "rhein" },
                { "Was stieg mit Jahresbeginn 2023 auf 250 Euro im Monat?", "Rundfunkbeitrag", "Hundesteuer",
                        "Kindergeld", "m²-Mietpreis in München" },
                { "Wer gehört zu den Kolleginnen von Merle Frohms, Giulia Gwinn, Lina Magull, Sara Däbritz und Marina Hegering?",
                        "Annalena Baerbock", "Alexandra Popp", "Jil Sander", "Cornelia Poletto" },
                { "Wer ist ständiger Begleiter von Wednesday aus der Addams Family, der derzeit wohl angesagtesten Serien-Teenagerin?",
                        "Laufendes Näschen", "Eiskaltes Händchen", "Zuckendes Äuglein", "Stinkendes Füßchen" },
                { "Wie nennt der Engländer seine Vermieterin?", "landlady", "villagequeen", "citymadam", "townmiss" },
                { "Abstimmungskrimi in Washington: Wer brauchte 2023 ganz 15 Wahlgänge, um Sprecher des Repräsentantenhauses zu werden?",
                        "Nixon", "Eisenhower", "McCarthy", "Hoover" },
        };

        fragenList = Arrays.asList(fragen);

        spieleRunde(fragenNummer);
    }

    public void spieleRunde(int fragenNummer) {
        antwortButtonListener = e -> {
            // Überprüfung der Antwort und Aktualisierung der Anzeige
            String eingabe = "";
            if (gui.antwortARadioButton.isSelected()) {
                eingabe = "A";
            } else if (gui.antwortBRadioButton.isSelected()) {
                eingabe = "B";
            } else if (gui.antwortCRadioButton.isSelected()) {
                eingabe = "C";
            } else if (gui.antwortDRadioButton.isSelected()) {
                eingabe = "D";
            }
 
            if (eingabe.equals(richtigeAntworten[fragenNummer])) {
 
                // Richtige Antwort
                belohnung[fragenNummer] = belohnung[fragenNummer + 1];
                gui.setBelohnung(fragenNummer);
                spieleRunde(fragenNummer + 1);
 
            } else {
                // Falsche Antwort
                gui.setFrage("Falsche Antwort! Das Spiel ist vorbei.");
                gameOver = true;
            }
        };
        gui.addAntwortButtonListener(antwortButtonListener);
        if (fragenNummer >= belohnung.length || gameOver) {
            // Alle Fragen wurden durchlaufen oder das Spiel ist vorbei
            return;
        }
 
        // Anzeigen der aktuellen Frage und Antworten
        gui.setFrage(fragenList.get(fragenNummer)[0]);
        gui.setAntwortA(fragenList.get(fragenNummer)[1]);
        gui.setAntwortB(fragenList.get(fragenNummer)[2]);
        gui.setAntwortC(fragenList.get(fragenNummer)[3]);
        gui.setAntwortD(fragenList.get(fragenNummer)[4]);
    }

    public static void main(String[] args) {
        WWM gui = new WWM(); // Neue Instanz
        gui.start(); // Startet GUI
    }
}
 

KonradN

Super-Moderator
Mitarbeiter
Du hast in dem Code weiterhin drin, dass da immer weitere Listener eingebaut werden.

Und jetzt zählst Du fragenNummer nicht mehr hoch, daher scheint es so, als ob es nicht weiter gehen würde, aber du bekommst in wirklichkeit einfach immer nur die Frage mit index 1.

Du baust die UI genau einmal auf. Da setzt Du den Listener. Danach veränderst Du da nichts mehr!

Also passen wir das mal alles etwas an:
a) diese Variable gui schmeißen wir als statische Variable ganz raus. Die setzt Du ja jetzt selbst auf this. Also überall, wo wir es nutzen, da nutzen wir nun einfach "this." statt "gui."
b) Den Listener setzen wir nur einmal - das this.addAntwortButtonListener(antwortButtonListener); verschieben wir also dahin, wo wir die UI aufbauen. Aber da wir da diese Variable noch nicht gesetzt haben, machen wir daraus eine normale Methode unserer Klasse. Also wir machen daraus ein this.addAntwortButtonListener(this::behandleButtonKlick); und sagen dann, dass die IDE uns die Methode erzeugen soll.

Dann packen wir in diese Methode das, was Du im Lambda Ausdruck hattest:
Java:
    private void behandleButtonKlick(ActionEvent actionEvent) {
        // Überprüfung der Antwort und Aktualisierung der Anzeige
        String eingabe = "";
        if (this.antwortARadioButton.isSelected()) {
            eingabe = "A";
        } else if (this.antwortBRadioButton.isSelected()) {
            eingabe = "B";
        } else if (this.antwortCRadioButton.isSelected()) {
            eingabe = "C";
        } else if (this.antwortDRadioButton.isSelected()) {
            eingabe = "D";
        }

        if (eingabe.equals(richtigeAntworten[fragenNummer])) {

            // Richtige Antwort
            belohnung[fragenNummer] = belohnung[fragenNummer + 1];
            this.setBelohnung(fragenNummer);
            spieleRunde(fragenNummer + 1);

        } else {
            // Falsche Antwort
            this.setFrage("Falsche Antwort! Das Spiel ist vorbei.");
            gameOver = true;
        }
    }

Natürlich muss dann fragenNummer um eins erhöht werden, d.h. wir passen den part der Methode an:
Java:
            fragenNummer++;
            spieleRunde(fragenNummer);

Nun kann man noch etwas aufräumen, denn dieses antwortButtonListener braucht man nicht mehr ... aber das ist erst einmal egal - wir schauen uns nun an, ob es funktioniert und siehe da: Es geht.

Vorsichtshalber mal den ganzen, noch nicht aufgeräumten, Code mit allen angesprochenen Anpassungen:
Java:
package de.kneitzel;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class WWM {
    // GUI Objekte und Variablen definieren
    JFrame frame;
    JLabel frageLabel;
    JRadioButton antwortARadioButton;
    JRadioButton antwortBRadioButton;
    JRadioButton antwortCRadioButton;
    JRadioButton antwortDRadioButton;
    ButtonGroup antwortButtonGroup = new ButtonGroup();
    JButton antwortButton;
    JButton neustartButton;
    JLabel belohnungLabel;

    int[] belohnung = { 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 250000, 500000, 1000000 };
    int fragenNummer = 0;
    static boolean gameOver = false;

    public WWM() {
        // GUI grundgerüst
        frame = new JFrame("Wer wird Millionär?");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1200, 600);
        frame.setLayout(new GridLayout(4, 1));

        // Bereich, wo die Fragen angezeigt werden
        JPanel fragePanel = new JPanel();
        fragePanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        fragePanel.setBackground(Color.WHITE);
        fragePanel.setLayout(new GridLayout(2, 1));
        frageLabel = new JLabel("Frage");
        frageLabel.setFont(new Font("Arial", Font.PLAIN, 18));
        fragePanel.add(frageLabel);
        belohnungLabel = new JLabel("0 €");
        belohnungLabel.setFont(new Font("Arial", Font.BOLD, 16));
        belohnungLabel.setHorizontalAlignment(JLabel.RIGHT);
        fragePanel.add(belohnungLabel);

        // Bereich, wo die Antworten stehen
        JPanel antwortPanel = new JPanel();
        antwortPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 5, 10));
        antwortPanel.setBackground(Color.WHITE);
        antwortPanel.setLayout(new GridLayout(4, 1));
        antwortARadioButton = new JRadioButton("A");
        antwortARadioButton.setFont(new Font("Arial", Font.PLAIN, 16));
        antwortBRadioButton = new JRadioButton("B");
        antwortBRadioButton.setFont(new Font("Arial", Font.PLAIN, 16));
        antwortCRadioButton = new JRadioButton("C");
        antwortCRadioButton.setFont(new Font("Arial", Font.PLAIN, 16));
        antwortDRadioButton = new JRadioButton("D");
        antwortDRadioButton.setFont(new Font("Arial", Font.PLAIN, 16));
        antwortButtonGroup = new ButtonGroup();
        antwortButtonGroup.add(antwortARadioButton);
        antwortButtonGroup.add(antwortBRadioButton);
        antwortButtonGroup.add(antwortCRadioButton);
        antwortButtonGroup.add(antwortDRadioButton);
        antwortPanel.add(antwortARadioButton);
        antwortPanel.add(antwortBRadioButton);
        antwortPanel.add(antwortCRadioButton);
        antwortPanel.add(antwortDRadioButton);

        // Buttons für die Antworten
        JPanel buttonPanelAntwort = new JPanel();
        buttonPanelAntwort.setBorder(BorderFactory.createEmptyBorder(5, 10, 10, 10));
        buttonPanelAntwort.setBackground(Color.WHITE);
        buttonPanelAntwort.setLayout(new GridLayout(1, 1));
        antwortButton = new JButton("Antwort");
        antwortButton.setFont(new Font("Arial", Font.PLAIN, 16));
        buttonPanelAntwort.add(antwortButton);

        // Button zum neustarten
        JPanel buttonPanelNeustart = new JPanel();
        buttonPanelNeustart.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        buttonPanelNeustart.setBackground(Color.WHITE);
        buttonPanelNeustart.setLayout(new GridLayout(1, 1));
        neustartButton = new JButton("Spiel neu starten");
        neustartButton.setFont(new Font("Arial", Font.PLAIN, 16));
        buttonPanelNeustart.add(neustartButton);

        // Alles zum Frame hinzufügen
        frame.add(fragePanel);
        frame.add(antwortPanel);
        frame.add(buttonPanelAntwort);
        frame.add(buttonPanelNeustart);

        this.addAntwortButtonListener(this::behandleButtonKlick);

        frame.setVisible(true);
    }

    private void behandleButtonKlick(ActionEvent actionEvent) {
        // Überprüfung der Antwort und Aktualisierung der Anzeige
        String eingabe = "";
        if (this.antwortARadioButton.isSelected()) {
            eingabe = "A";
        } else if (this.antwortBRadioButton.isSelected()) {
            eingabe = "B";
        } else if (this.antwortCRadioButton.isSelected()) {
            eingabe = "C";
        } else if (this.antwortDRadioButton.isSelected()) {
            eingabe = "D";
        }

        if (eingabe.equals(richtigeAntworten[fragenNummer])) {

            // Richtige Antwort
            belohnung[fragenNummer] = belohnung[fragenNummer + 1];
            this.setBelohnung(fragenNummer);
            fragenNummer++;
            spieleRunde(fragenNummer);

        } else {
            // Falsche Antwort
            this.setFrage("Falsche Antwort! Das Spiel ist vorbei.");
            gameOver = true;
        }
    }

    // Liste mit fragen
    java.util.List<String[]> fragenList;

    // antworten der fragen
    String[] richtigeAntworten = { "D", "D", "C", "A", "B", "C", "D", "B", "C", "C", "C", "B", "B", "A", "C" };
    ActionListener antwortButtonListener = null;

    // Frage anzeigen
    public void setFrage(String fragen) {
        frageLabel.setText(fragen);
    }

    // Antwort A
    public void setAntwortA(String antwort) {
        antwortARadioButton.setText("A) " + antwort);
    }

    // Antwort B
    public void setAntwortB(String antwort) {
        antwortBRadioButton.setText("B) " + antwort);
    }

    // Antwort C
    public void setAntwortC(String antwort) {
        antwortCRadioButton.setText("C) " + antwort);
    }

    // Antwort D
    public void setAntwortD(String antwort) {
        antwortDRadioButton.setText("D) " + antwort);
    }

    // Buttonlistener zum Überprüfen der Antwort
    public void addAntwortButtonListener(ActionListener antwortButtonListener) {
        antwortButton.addActionListener(e -> {
            ButtonModel selected = antwortButtonGroup.getSelection();
            if (selected != null) {
                antwortButtonListener.actionPerformed(e);
            }
        });
    }

    // Anzeige für gewonnenes Geld
    public void setBelohnung(int fragenNummer) {
        int aktuelleBelohnung = belohnung[fragenNummer];
        belohnungLabel.setText(aktuelleBelohnung + " €");
    }

    // Start Methode
    public void start() {
        this.setBelohnung(0);

        // Fragen und Antworten: {Frage, A, B, C, D}
        String[][] fragen = {
                { "Beschäftigt der fünfmalige Tour-de-France-Sieger Hinault entsprechende Hausangestellte, dann arbeiten bei ... ?",
                        "Focks Tärrier", "Dallma Tiener", "Re Pinnscher", "Bernard Diener" },
                { "Lässt man sich auf eine Beziehung mit einer Schönheitskönigin ein, hat man sozusagen ...?",
                        "ein Ungleich-Gewicht", "ein Über-Maß", "ein Miss-Verhältnis", "eine Schief-Lage" },
                { "Gesundheitsbewusste Strandurlauber sind auch beim ... ?", "Nünftig vernünftig", "Sonnen besonnen",
                        "Sichtig umsichtig", "Sam achtsam" },
                { "Wer einen Kellner sucht, findet ihn buchstäblich im ... ?", "September", "Oktober", "November",
                        "Dezember" },
                { "Zu vorgerückter Stunde beeilten sich die Wanderer, damit sie es noch vor Einbruch der Dunkelheit bis zum nächsten ...?",
                        "Klein stätte", "Sied lunngen", "Ort schafften", "Kuh dörfer" },
                { "Wühlt der Hund mit seinem Gesicht im Schnee, ist er danach sozusagen ...?", "erbarmungslos",
                        "abgebrüht", "unnachgiebig", "kaltschnäuzig" },
                { "Wem während des Einkaufs der Drahtesel gestohlen wird, der steht vor dem Laden erst mal völlig ...?",
                        "schutslos", "radlos", "plahnlos", "hilflos" },
                { "Wovon findet man die Version mit „W“ am Anfang beim Einkaufen oft im selben Regal?",
                        "Vollmilchschokolade", "Vollkornbrot", "Vollwaschmittel", "Vollwertmüsli" },
                { "Welche Präposition ist auch für Weinkenner nicht weit hergeholt?", "mosel", "ahr", "nahe", "rhein" },
                { "Was stieg mit Jahresbeginn 2023 auf 250 Euro im Monat?", "Rundfunkbeitrag", "Hundesteuer",
                        "Kindergeld", "m²-Mietpreis in München" },
                { "Wer gehört zu den Kolleginnen von Merle Frohms, Giulia Gwinn, Lina Magull, Sara Däbritz und Marina Hegering?",
                        "Annalena Baerbock", "Alexandra Popp", "Jil Sander", "Cornelia Poletto" },
                { "Wer ist ständiger Begleiter von Wednesday aus der Addams Family, der derzeit wohl angesagtesten Serien-Teenagerin?",
                        "Laufendes Näschen", "Eiskaltes Händchen", "Zuckendes Äuglein", "Stinkendes Füßchen" },
                { "Wie nennt der Engländer seine Vermieterin?", "landlady", "villagequeen", "citymadam", "townmiss" },
                { "Abstimmungskrimi in Washington: Wer brauchte 2023 ganz 15 Wahlgänge, um Sprecher des Repräsentantenhauses zu werden?",
                        "Nixon", "Eisenhower", "McCarthy", "Hoover" },
        };

        fragenList = Arrays.asList(fragen);

        spieleRunde(fragenNummer);
    }

    public void spieleRunde(int fragenNummer) {
        antwortButtonListener = e -> {
        };
        if (fragenNummer >= belohnung.length || gameOver) {
            // Alle Fragen wurden durchlaufen oder das Spiel ist vorbei
            return;
        }

        // Anzeigen der aktuellen Frage und Antworten
        this.setFrage(fragenList.get(fragenNummer)[0]);
        this.setAntwortA(fragenList.get(fragenNummer)[1]);
        this.setAntwortB(fragenList.get(fragenNummer)[2]);
        this.setAntwortC(fragenList.get(fragenNummer)[3]);
        this.setAntwortD(fragenList.get(fragenNummer)[4]);
    }

    public static void main(String[] args) {
        WWM gui = new WWM();
        gui.start();
    }
}
 

Blender3D

Top Contributor
Moin, Ich habe das Problem, das die erste Frage, und wenn ich diese richtig beantworte auch die zweite Frage korrekt angezeigt werden, danach allerdings immer die Frage auf "Falsche Antwort! Das Spiel ist vorbei" gesetzt wird und nicht auf die nächste, obwohl ich die Frage eigentlich richtig beantwortet habe. Die antworten und auch die Belohnung hingegen werden angepasst.
Außerdem soll, wenn die Frage falsch beantwortet wurde, der Antwort Butten keine Aktion mehr auslösen.
Der Neustart Butten ist noch ohne Funktion, ich möchte aber erstmal, dass die Fragen bei einer richtigen Antwort auch richtig angepasst werden.
Ich möchte Dir einen grundsätzlichen Tipp zu Deiner Herangehensweise geben. Was Deine Frage betrifft bist Du bei @KonradN bereits sehr gut aufgehoben.
Du möchtest das Spiel Wer Wird Millionär programmieren. Ich würde nicht mit dem User Interface beginnen sondern mit den Fragen.

Was ist eine Frage bei der Millionenshow? Sie besteht aus der Frage selbst , vier Antwortmöglichkeiten und sie muss die richtige Antwort kennen.
Bei diesem Spiel dreht sich alles nur um Fragen, Du brauchst eine große Zahl davon, sie sind je nach Level von unterschiedlichem Schwierigkeitsgrad und sie müssen zufällig ausgewählt werden.
Da es sich um eine groß Zahl von Fragen handelt ist auch die Datenspeicherung sehr wichtig.
Du kämpfst in Deinem Code mit dem User Interface und das obwohl Du obige Anforderungen noch gar nicht implementiert hast.

Hier eine andere Art der Herangehensweise: Zum Probieren lade die Datei WWM.jar herunter

Es bieten sich zuerst die Klassen Question ( Frage ) und QuestionServer ( stellt die Fragen zur Verfügung ) an.
QuestionServer soll in unserem Fall die Fragen von einem File beziehen mit einer Frage pro Zeile.
Das bedeutet für die Klasse Question benötigen wir einen Konstruktor der eine String als Parameter hat.
Java:
public Question(String data)
Wir wählen zuerst ein Format wie die Frage in einer Zeile gespeichert werden soll.
AntwortA||AntwortB||AntwortC||AntwortD<tab>Die Frage;;id ( id= richtige Antwort (0-3))
Die Trennzeichen sind || <tab> und ;;
Mittels dieser Trennzeichen baut dann der Konstruktor ein Objekt vom Typ Question.
Die Klasse Question braucht dann noch eine Methode, um diesen Prozess umzukehren
Java:
public String toDataString()
.
Diese Methode wird dann für das speichern der Question verwendet.


Java:
import java.util.Arrays;

/**
 * A question has four options for an answer.
 *
 * @see Question#Question(String[])
 * @see Question#Question(String)
 *
 * @author Blender3D
 *
 */
public class Question {
    private final static String SEPERATOR_CORRECT = ";;";
    private final static String SEPERATOR_ANSWERS = "''";
    private final static String SEPERATOR_QUESTION = "\t";

    private final String[] answers = new String[4];
    private final String question;
    private final ANSWER answer;

    public enum ANSWER {
        A, B, C, D
    };

    /**
     * Expected format is A||B||C||D\tquestion;;id
     *
     * @param data
     *            String containing question , options for the answer , and the id
     *            of the correct answer.
     * @throws IllegalArgumentException
     */
    public Question(String data) throws IllegalArgumentException {
        String tmp[] = data.split(SEPERATOR_CORRECT);
        if (tmp.length != 2)
            throwSeperatorException(SEPERATOR_CORRECT);
        data = tmp[0];
        answer = strToAnswer(tmp[1]);
        tmp = data.split(SEPERATOR_QUESTION);
        if (tmp.length != 2)
            throwSeperatorException(SEPERATOR_QUESTION);
        data = tmp[0];
        question = tmp[1];
        tmp = data.split(SEPERATOR_ANSWERS);
        if (tmp.length != 4)
            throwSeperatorException(SEPERATOR_ANSWERS + " 4 answeres are expected not " + tmp.length);
        for (int i = 0; i < answers.length; i++)
            answers[i] = tmp[i];
    }

    /**
     * Expects array with 6 entries. [question,A,B,C,D,id]
     *
     * @param data
     * @throws IllegalArgumentException
     */
    public Question(String[] data) throws IllegalArgumentException {
        if (data == null || data.length != 6)
            throw new IllegalArgumentException("Invalid number of entries in data array !");
        question = data[0];
        for (int i = 1; i < 5; i++)
            answers[i - 1] = data[i];
        answer = strToAnswer(data[5]);
    }

    public boolean isCorrectAnswer(ANSWER answer) {
        return this.answer.equals(answer);
    }

    public String answerToStr(ANSWER answer) {
        return answers[answer.ordinal()];
    }

    public String[] getAnswers() {
        return Arrays.copyOf(answers, answers.length);
    }

    public String getQuestion() {
        return question;
    }

    public static ANSWER idToAnswer(int id) {
        return ANSWER.values()[id];
    }

    private int strToInt(String str) {
        int value = 0;
        try {
            value = Integer.parseInt(str.trim());
        } catch (Exception e) {
            throw new IllegalArgumentException(str + " can't be converted to an integer value!");
        }
        return value;
    }

    private ANSWER strToAnswer(String str) {
        int id = strToInt(str);
        if (id < 0 || id > 3)
            throw new IllegalArgumentException("correct question id =[" + answer + "] is out of range [0-3] ");
        return idToAnswer(id);
    }

    private void throwSeperatorException(String seperator) {
        throw new IllegalArgumentException("Invalid format at seperator " + seperator);
    }

    public String toDataString() {
        StringBuffer tmp = new StringBuffer(answers[0]);
        for (int i = 1; i < answers.length; i++)
            tmp.append(SEPERATOR_ANSWERS + answers[i]);
        tmp.append(SEPERATOR_QUESTION + question);
        return tmp.append(SEPERATOR_CORRECT + answer.ordinal()).toString();
    }

    @Override
    public String toString() {
        return question;
    }

}

Die Klasse QuestionServer liefert zufällige Fragen und stellt sicher , dass sie nur einmal verwendet werden.
Die verschiedenen Schwierigkeitsgrade kann damit man durch mehrere Files abbilden.

Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.Random;
import javax.swing.JOptionPane;

public class QuestionServer {
    private final static Random rnd = new Random(System.currentTimeMillis());
    private String questionFile;
    private ArrayList<Question> questions = new ArrayList<>();
    private BitSet used;

    public QuestionServer(String file) {
        questionFile = file;
        load();
        used = new BitSet(questions.size());
    }

    private static int getRndInt(int max) {
        return rnd.nextInt(max);
    }

    public boolean isQuestionAvailAble() {
        for (int i = 0; i < questions.size(); i++) {
            if (!used.get(i))
                return true;
        }
        return false;
    }

    private boolean load() {
        File file = new File(questionFile);
        if (!file.exists()) {
            JOptionPane.showMessageDialog(null, "Question file " + file.getAbsolutePath() + " not found!");
            return false;
        }
        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String line = null;
            while ((line = br.readLine()) != null)
                questions.add(new Question(line));
            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return true;
    }

    public Question next() {
        if (!isQuestionAvailAble())
            return null;
        int id = getRndInt(questions.size());
        while (used.get(id))
            id = getRndInt(questions.size());
        used.set(id);
        return questions.get(id);
    }

    public void reset() {
        used.clear();
    }

}

Abschießend noch die Klasse DefaultQuestionFileCreator die ein Default File zum Testen erstellt.

Java:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * @see #Question
 */
public class DefaultQuestionFileCreator {

    private static String[][] questions = { {
            "Beschäftigt der fünfmalige Tour-de-France-Sieger Hinault entsprechende Hausangestellte, dann arbeiten bei ... ?",
            "Focks Tärrier", "Dallma Tiener", "Re Pinnscher", "Bernard Diener", "3" },
            { "Lässt man sich auf eine Beziehung mit einer Schönheitskönigin ein, hat man sozusagen ...?",
                    "ein Ungleich-Gewicht", "ein Über-Maß", "ein Miss-Verhältnis", "eine Schief-Lage", "2" },
            { "Gesundheitsbewusste Strandurlauber sind auch beim ... ?", "Nünftig vernünftig", "Sonnen besonnen",
                    "Sichtig umsichtig", "Sam achtsam", "1" },
            { "Zu vorgerückter Stunde beeilten sich die Wanderer, damit sie es noch vor Einbruch der Dunkelheit bis zum nächsten ...?",
                    "Klein stätte", "Sied lunngen", "Ort schafften", "Kuh dörfer", "2" },
            { "Wühlt der Hund mit seinem Gesicht im Schnee, ist er danach sozusagen ...?", "erbarmungslos", "abgebrüht",
                    "unnachgiebig", "kaltschnäuzig", "3" },
            { "Wem während des Einkaufs der Drahtesel gestohlen wird, der steht vor dem Laden erst mal völlig ...?",
                    "schutzlos", "ratlos", "plahnlos", "hilflos", "1" },
            { "Welche Präposition ist auch für Weinkenner nicht weit hergeholt?", "mosel", "ahr", "nahe", "rhein",
                    "2" },
            { "Was stieg mit Jahresbeginn 2023 auf 250 Euro im Monat?", "Rundfunkbeitrag", "Hundesteuer", "Kindergeld",
                    "m²-Mietpreis in München", "2" },
            { "Wer gehört zu den Kolleginnen von Merle Frohms, Giulia Gwinn, Lina Magull, Sara Däbritz und Marina Hegering?",
                    "Annalena Baerbock", "Alexandra Popp", "Jil Sander", "Cornelia Poletto", "1" },
            { "Wer ist ständiger Begleiter von Wednesday aus der Addams Family, der derzeit wohl angesagtesten Serien-Teenagerin?",
                    "Laufendes Näschen", "Eiskaltes Händchen", "Zuckendes Äuglein", "Stinkendes Füßchen", "1" },
            { "Wie nennt der Engländer seine Vermieterin?", "landlady", "villagequeen", "citymadam", "townmiss", "0" },
            { "Abstimmungskrimi in Washington: Wer brauchte 2023 ganz 15 Wahlgänge, um Sprecher des Repräsentantenhauses zu werden?",
                    "Nixon", "Eisenhower", "McCarthy", "Hoover", "2" }, };

    public static void createQuestionFile(String name) throws IOException {
        File file = new File(name);
        PrintWriter pw = new PrintWriter(new FileWriter(file));
        for (int i = 0; i < questions.length; i++) {
            Question q = new Question(questions[i]);
            pw.write(q.toDataString() + System.lineSeparator());
        }
        pw.close();
    }

}
 

Anhänge

  • wwm.jar
    13 KB · Aufrufe: 1
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Wer wird Millionär / Fragefenster Spiele- und Multimedia-Programmierung 6
B Bild wird nicht geladen Spiele- und Multimedia-Programmierung 4
R JPanel wird erst im Fullscreen angezeigt Spiele- und Multimedia-Programmierung 1
K Das Leerzeichen der Tastatur wird nicht gleichgesetzt mit dem Leerzeichen aus der Text Datei Spiele- und Multimedia-Programmierung 5
B Programmieren wie der Befehl /ban in Minecraft geblockt wird aber nicht /ban mit einem Argument Spiele- und Multimedia-Programmierung 1
J OpenGL Bild wird nicht richtig angezeigt Spiele- und Multimedia-Programmierung 2
S GetBufferStrategy-Methode wird nicht angezeigt Spiele- und Multimedia-Programmierung 6
L Transparenz wird magenta Spiele- und Multimedia-Programmierung 3
Polarfuchs Status von Midi Datei(wird gerade abgespielt oder nicht) Spiele- und Multimedia-Programmierung 0
A Bild(sequenz) wird nicht geladen Spiele- und Multimedia-Programmierung 1
F 4 Gewinnt - Code wird ignoriert Spiele- und Multimedia-Programmierung 7
C Mein Programm wird sofort terminated Spiele- und Multimedia-Programmierung 8
A [LWJGL] BMP Textur wird nicht richtig dargestellt Spiele- und Multimedia-Programmierung 8
S LWJGL Rechteck wird nicht gezeichnet Spiele- und Multimedia-Programmierung 6
J Versch. Pfeiltasten angezeigt obwohl nur 1 gedrückt wird Spiele- und Multimedia-Programmierung 2
Creylon [LWJGL] Textur wird falsch angezeigt Spiele- und Multimedia-Programmierung 12
S Nur den Bereich des JPanels zeichen der im Viewport des JScrollPane angezeigt wird Spiele- und Multimedia-Programmierung 8
Q BufferedImage vs. Heap Space ‒ Warum wird der Speicher nicht freigegeben? Spiele- und Multimedia-Programmierung 6
M Karte wird falsch gezeichnet Spiele- und Multimedia-Programmierung 9
H Skalierung eines Polygons ohne das es verschoben wird Spiele- und Multimedia-Programmierung 3
C Alles hängt, wenn ein Sound abgespielt wird Spiele- und Multimedia-Programmierung 9
K Transformation wird nicht angewendet Spiele- und Multimedia-Programmierung 3
A Wie wird die Person im Game animiert, dass sie ihre Körperteile bewegen? Spiele- und Multimedia-Programmierung 3
A Shape Geometry, wird nicht angezeigt Spiele- und Multimedia-Programmierung 6
L Progress Bar wird erst zu spät ganz angezeigt Spiele- und Multimedia-Programmierung 5
D Jogl:Textur auf GLUquadric wird vertikal spiegelverkehrt dargestellt Spiele- und Multimedia-Programmierung 2
M Java Textadventure HashMap wird nicht befüllt? Spiele- und Multimedia-Programmierung 7
P [JMF] Webcam wird nicht gefunden Spiele- und Multimedia-Programmierung 3
P Erkennen auf welche Objekte gezeigt wird in JoGL Spiele- und Multimedia-Programmierung 6
Steev KeyPressed:Tab wird nicht mehr weitergeleitet Spiele- und Multimedia-Programmierung 2
J JOGL - Bild wird immer wieder weiß Spiele- und Multimedia-Programmierung 2
0x7F800000 weiß einer wozu ANTLR beim build von JOGL verwendet wird? Spiele- und Multimedia-Programmierung 3
J MenuBar wird bei Spiel nicht angezeigt Spiele- und Multimedia-Programmierung 5
L Frame wird geöffnet es wird aber nix angezeigt Spiele- und Multimedia-Programmierung 2
R Die korrekte Breite/Höhe eines Bildes wird nicht erkannt. Spiele- und Multimedia-Programmierung 2
P JOGL: mit glTranslated wird nichts gezeichnet Spiele- und Multimedia-Programmierung 3
F Szene wird nicht komplett angezeigt (Tiefenproblem?) Spiele- und Multimedia-Programmierung 2
G Fragespiel, Hilfe ! like Wer wird Millinär Spiele- und Multimedia-Programmierung 12
M 1. Menüleiste wird doppelt gezeichnet 2. awt auf ein jpanel Spiele- und Multimedia-Programmierung 4
F WakeupOnAWTEvent wird ignoriert! Spiele- und Multimedia-Programmierung 2
C BackgroundSound wird nicht abgespielt Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben