import java.awt.*; import java.awt.event.*; /** * Graphisches Zahlenrate-Programm. * Ermittelt Zufallszahl und lässt Benutzer raten. * Demonstriert folgende Themen: Oberflächen mit AWT, Layout, * Ereignisbehandlung mit AWT-Events, String->Zahl Konvertierung * @author Tom Eicher - http://www.teicher.net */ public class ZahlenratenGUI implements ActionListener, WindowListener { /** Fenster das die Anwendung darstellen wird */ Frame f; /** Label das das Ergebnis der Benutzerinterkation zeigt */ Label ergLabel; /** Feld in das der Benutzer seine Eingabe tippt */ TextField zahlFeld; /** zum Speichern der Zahlenwerte */ int zahl, versuche=0; /** Programmstart */ public static void main(String args[]) { ZahlenratenGUI z = new ZahlenratenGUI(); } /** Konstruktor der Klasse. Erzeugt Benutzeroberfläche, verbindet Listener mit den Components und ermittelt erste Zufallszahl */ public ZahlenratenGUI() { f=new Frame("Zahlenraten GUI"); f.addWindowListener(this); f.add(new Label("Erraten Sie die Zahl"), BorderLayout.NORTH); ergLabel=new Label("Erster Versuch. Viel Glück!"); f.add(ergLabel, BorderLayout.SOUTH); zahlFeld = new TextField(30); f.add(zahlFeld, BorderLayout.CENTER); zahlFeld.addActionListener(this); zahl=zufall(); // Zufallszahl ermitteln f.pack(); f.setLocation(250,200); f.setVisible(true); } /** Interaktion: Wird aufgerufen wenn der Benutzer RETURN drückt. Prüft die Eingabe und schreibt das Ergbnis in das ergLabel. Erhöht die AnzahlVersuche. War die Eingabe richtig, so wird eine neue Zufallszahl ermittelt, und die Anzahl Versuche auf 0 gesetzt. */ public void actionPerformed(ActionEvent ae) { // Ermitteln der Eingabe int e; try { e = Integer.parseInt(zahlFeld.getText()); }catch (Exception fff) { ergLabel.setText("Ungültige Eingabe!"); return; } zahlFeld.setText(""); // Überprüfung versuche++; // Versuchszähler erhöhen if (e > zahl) { ergLabel.setText("Leider zu groß! (beim "+versuche+". Versuch)"); } else if (e < zahl) { ergLabel.setText("Leider zu klein! (beim "+versuche+". Versuch)"); } else { ergLabel.setText("Bravo! In "+versuche+" Versuchen! Jetzt nochmal!"); zahl=zufall(); // Zufallszahl ermitteln versuche=0; } } /** Ermittelt eine Zufallszahl von 0 - 99 */ static int zufall() { return (int)(Math.random()*100); } /** Implementiert, um auf das Fenster-Schliessen zu reagieren */ public void windowClosing(WindowEvent e) { System.exit(0); } /** Leer implementiert, da nicht von Interesse */ public void windowOpened(WindowEvent e) { } /** Leer implementiert, da nicht von Interesse */ public void windowClosed(WindowEvent e) { } /** Leer implementiert, da nicht von Interesse */ public void windowIconified(WindowEvent e) { } /** Leer implementiert, da nicht von Interesse */ public void windowDeiconified(WindowEvent e) { } /** Leer implementiert, da nicht von Interesse */ public void windowActivated(WindowEvent e) { } /** Leer implementiert, da nicht von Interesse */ public void windowDeactivated(WindowEvent e) { } }