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.
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
}
}