Hab ein Problem mit einem Progg.
Es ist ein Rechenspiel und soll eigentlich Aufgaben generieren, die der User dann lösen muss. Richtige Antwort: Pluspunkt
falsche Antwort: Leben abgezogen
Es wird aber nur eine Aufgabe generiert. Nach der Antwort passiert nichts mehr.
Hier der Code:
und als public class
Es ist ein Rechenspiel und soll eigentlich Aufgaben generieren, die der User dann lösen muss. Richtige Antwort: Pluspunkt
falsche Antwort: Leben abgezogen
Es wird aber nur eine Aufgabe generiert. Nach der Antwort passiert nichts mehr.
Hier der Code:
Code:
// Created on 22.07.2005
package s_moeller.rechenspiel;
import javax.swing.*;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.*;
//import java.awt.event.*;
public class Hauptfenster extends JFrame {
// Überprüfen des Ergebnisses und Konsequenzen ziehen
class KnopfAktion implements ActionListener {
public void actionPerformed(ActionEvent e) {
// Eingabe zu Zahl wandeln
ergEingabe = Double.parseDouble(ergebnis.getText());
if (ergEingabe == erg) {
punkte++;
System.out.println("Das war richtig!");
} else {
leben--;
System.out.println("Das war falsch!");
}
System.out.println("Punkte: " + punkte);
System.out.println("Leben: " + leben);
}
}
// Instanzvariablen
private JLabel zahl1, zahl2, punkteAnzeige, lebenAnzeige, operator;
private double erg, ergEingabe;
public int z1, z2, zz, punkte, leben, operatorZ;
private JPanel aufgabe, status;
private JTextField ergebnis;
private String SLeben, SPunkte;
private JButton ok;
private JRadioButton bLevel1, bLevel2;
private ButtonGroup levelGroup;
private JMenuBar menueLeiste;
private JMenu menueSpiel, menueLevel;
private JMenuItem itemNeu, itemEnd, itemLevel1, itemLevel2, itemLevel3,
itemLevel4, itemLevel5, itemLevelUser;
// Konstruktor
public Hauptfenster() {
super("Rechenspiel");
// Leben und Punkte bei Start festlegen
leben = 3;
punkte = 0;
// nur zum Test
zz = 10;
// Layout
this.getContentPane().setLayout(new GridLayout(2, 1));
// Aufabau des Aufgaben-Panels
zahl1 = new JLabel();
zahl2 = new JLabel();
operator = new JLabel();
ok = new JButton("OK");
ergebnis = new JTextField("0");
ok.setMnemonic(KeyEvent.VK_ESCAPE);
ok.addActionListener(new KnopfAktion());
aufgabe = new JPanel();
aufgabe.setBackground(new Color(0, 200, 0));
aufgabe.add(zahl1);
aufgabe.add(operator);
aufgabe.add(zahl2);
aufgabe.add(ergebnis);
aufgabe.add(ok);
aufgabe.setLayout(new GridLayout(1, 5, 10, 10));
// Aufbau des Status Panles
lebenAnzeige = new JLabel("Leben: " + SLeben);
punkteAnzeige = new JLabel("Punkte: " + SPunkte);
status = new JPanel();
status.setLayout(new GridLayout(1, 2, 10, 10));
status.add(lebenAnzeige);
status.add(punkteAnzeige);
// Menü erstellen
menueLeiste = new JMenuBar();
// Spiel-Menü erstellen
menueSpiel = new JMenu("Spiel");
itemNeu = new JMenuItem("Neues Spiel", KeyEvent.VK_N);
itemNeu.addActionListener(new MenuAktionen());
itemEnd = new JMenuItem("Beenden");
itemEnd.addActionListener(new MenuAktionen());
menueSpiel.add(itemNeu);
menueSpiel.addSeparator();
menueSpiel.add(itemEnd);
// Level-Menü erstellen
menueLevel = new JMenu("Level");
itemLevel1 = new JMenuItem("Level 1");
itemLevel2 = new JMenuItem("Level 2");
itemLevel3 = new JMenuItem("Level 3");
itemLevel4 = new JMenuItem("Level 4");
itemLevel5 = new JMenuItem("Level 5");
itemLevelUser = new JMenuItem("benutzerdefiniert");
menueLevel.add(itemLevel1);
menueLevel.add(itemLevel2);
menueLevel.add(itemLevel3);
menueLevel.add(itemLevel4);
menueLevel.add(itemLevel5);
menueLevel.add(itemLevelUser);
/* Level-Radio-Buttons initialisieren und hinzufügen
bLevel1 = new JRadioButton();
bLevel2 = new JRadioButton();
levelGroup = new ButtonGroup();
levelGroup.add(bLevel1);
levelGroup.add(bLevel2);
itemLevel1.add(bLevel1);
itemLevel2.add(bLevel2);
*/
menueLeiste.add(menueSpiel);
menueLeiste.add(menueLevel);
// Zusammensetzen der Content-Pane
this.getContentPane().add(status);
this.getContentPane().add(aufgabe);
this.setJMenuBar(menueLeiste);
// Fenster schliessen
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Das eigentliche Spiel in einer if-Schleife
if (leben > 0) {
// Generieren der Zahlen
z1 = (int) Math.round(Math.random() * zz);
z2 = (int) Math.round(Math.random() * zz);
zahl1.setText(Integer.toString(z1));
zahl2.setText(Integer.toString(z2));
// Generieren der Operatoren-Zahl für die if-Abfrage
operatorZ = (int) Math.round(Math.random() * 2);
// Generieren des Rechenzeichens und Ausrechnen des Ergebnisses
if (operatorZ == 0) {
operator.setText("+");
erg = z1 + z2;
}
if (operatorZ == 1) {
operator.setText("-");
erg = z1 - z2;
}
if (operatorZ == 2) {
operator.setText("*");
erg = z1 * z2;
}
// Division ist noch nicht gewollt
if (operatorZ == 3) {
operator.setText(":");
if (z2 == 0) {
z2++;
}
erg = z1 / z2;
}
// Punkte und Leben in Strings umwandeln
SLeben = Integer.toString(leben);
SPunkte = Integer.toString(punkte);
// Aktualisieren der Status-Leiste
lebenAnzeige.setText("Leben: " + SLeben);
punkteAnzeige.setText("Punkte: " + SPunkte);
}
}
// Klasse für die Menü-Aktionen
public class MenuAktionen implements ActionListener {
public void actionPerformed(ActionEvent me) {
if (me.getActionCommand() == itemNeu.getText()) {
leben = 3;
punkte = 0;
}
if (me.getActionCommand() == itemEnd.getText()) {
System.exit(0);
}
}
}
}
und als public class
Code:
// Created on 22.07.2005
package s_moeller.rechenspiel;
public class Rechenspiel {
public static void main(String[] args) {
Hauptfenster app = new Hauptfenster();
app.setSize(500, 150);
app.setLocation(200, 200);
app.setVisible(true);
}
}