[JAVA] Ratespiel - Probleme < Sonstige < Schule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 12:15 Sa 17.01.2009 | Autor: | foxxx |
Aufgabe | Entwerfen Sie ein kleines Java-Programm. |
Hallo liebe Community,
Bin recht neu hier und habe logischerweise ein Problem ^^
Im Info Unterricht machen wir grad Programmieren mit Java und eigentlich hatte ich da auch kein Problem mit.
Ist ja ein bisschen wie bei Javascript (miz zusätzlichem Konstruktor etc..) und das hat auch immer geklappt.
Jedenfalls ging es jetzt erstmal darum ein Ratespiel zu machen, wie das gelöst wird, ist jedem selbst überlassen.
Hier ist der Quellcode der main-Klasse(n)
1: | class RateSpiel {
| 2: |
| 3: | int computerZahl;
| 4: | int spielerZahl;
| 5: | boolean weiterSpielen;
| 6: | int wievielteRunde;
| 7: | int unterGrenze;
| 8: | int obgerGrenze;
| 9: | int maxVersuche;
| 10: | ConInput eingabe = new ConInput();
| 11: |
| 12: | RateSpiel(int uG, int oG, int maxV){
| 13: | this.unterGrenze = uG;
| 14: | this.obgerGrenze = oG;
| 15: |
| 16: | if (uG > oG) {
| 17: | this.unterGrenze = oG;
| 18: | this.obgerGrenze = uG;
| 19: | }
| 20: | else {
| 21: | this.unterGrenze = uG;
| 22: | this.obgerGrenze = oG;
| 23: | }
| 24: |
| 25: | if (maxV > 1) this.maxVersuche = maxV;
| 26: | else this.maxVersuche = 3;
| 27: |
| 28: | this.weiterSpielen = true;
| 29: | this.wievielteRunde = 0;
| 30: | }
| 31: |
| 32: | public void run(){
| 33: | this.wievielteRunde = 0;
| 34: | this.computerZahl = (int) (Math.random() * (oberGrenze - unterGrenze) + unterGrenze);
| 35: | // System.out.println(this.computerZahl);
| 36: | while (this.wievielteRunde < this.maxVersuche){
| 37: | this.wievielteRunde++;
| 38: | this.spielerZahl = eingabe.eingabeInt("Dein Tipp: ");
| 39: | if (this.spielerZahl == this.computerZahl){
| 40: | System.out.println("Richtig geraten!");
| 41: | break;
| 42: | }
| 43: | else
| 44: | if (this.spielerZahl < this.computerZahl){
| 45: | System.out.println("Falsch, Deine Zahl war zu klein! Noch " + (maxVersuche - wievielteRunde) + " Versuch(e)");
| 46: | }
| 47: | else System.out.println("Falsch, Deine Zahl war zu groß! Noch " + (maxVersuche - wievielteRunde) + " Versuch(e)");
| 48: | }
| 49: | }
| 50: |
| 51: | public void hauptSchleife(){
| 52: | do{
| 53: | this.run();
| 54: | this.weiterSpielen = eingabe.eingabeBoolean("Willst Du nochmal spielen? (ja/nein)");
| 55: | }
| 56: | while (this.weiterSpielen);
| 57: | }
| 58: | } |
Und hier ein kleines Programm zum Testen davon:
1: | class SpielTest {
| 2: |
| 3: | public static void main(String[] args) {
| 4: | RateSpiel spiel = new RateSpiel(20, 40, 4);
| 5: | spiel.hauptSchleife();
| 6: | }
| 7: | } |
Allerdings lässt sich das Programm nichtmal Kompilieren....
Hier der Auszug aus dem Compiler vom Java-Editor:
1: | Compiliere C:\Users\FoX\Desktop\ratespiel\RateSpiel.java mit Java-Compiler
| 2: | RateSpiel.java:10:7: cannot find symbol
| 3: | symbol : class ConInput
| 4: | location: class RateSpiel
| 5: | ConInput eingabe = new ConInput();
| 6: | ^
| 7: | RateSpiel.java:10:30: cannot find symbol
| 8: | symbol : class ConInput
| 9: | location: class RateSpiel
| 10: | ConInput eingabe = new ConInput();
| 11: | ^
| 12: | RateSpiel.java:34:53: cannot find symbol
| 13: | symbol : variable oberGrenze
| 14: | location: class RateSpiel
| 15: | this.computerZahl = (int) (Math.random() * (oberGrenze - unterGrenze) + unterGrenze);
| 16: | ^
| 17: | 3 errors
| 18: |
| 19: | Compiliere C:\Users\FoX\Desktop\ratespiel\SpielTest.java mit Java-Compiler
| 20: | .\RateSpiel.java:10:7: cannot find symbol
| 21: | symbol : class ConInput
| 22: | location: class RateSpiel
| 23: | ConInput eingabe = new ConInput();
| 24: | ^
| 25: | .\RateSpiel.java:10:30: cannot find symbol
| 26: | symbol : class ConInput
| 27: | location: class RateSpiel
| 28: | ConInput eingabe = new ConInput();
| 29: | ^
| 30: | .\RateSpiel.java:34:53: cannot find symbol
| 31: | symbol : variable oberGrenze
| 32: | location: class RateSpiel
| 33: | this.computerZahl = (int) (Math.random() * (oberGrenze - unterGrenze) + unterGrenze);
| 34: | ^
| 35: | 3 errors
|
Ich bin nun mittlerweile etwas ratlos, da ich davon ausging, dass das einfach so funktioniert.
Mit Java an sich hatte ich auch keine Probleme, ich wollte mich jetzt auch primär auf die grafische Oberfläche stürzen und nur schnell ein kleines Programm dafür schreiben.
Ich sehe meinen Fehler echt nicht, allerdings bin ich mir mit dem ConInput noch nicht sicher, aber dazu finde ich auch bei google irgendwie nichts ...
Es wäre sehr nett, wenn mir jemand erläutern könnte, WO und WARUM der Fehler da ist. :)
Desweiteren wäre eine Einleitung in die grafische Oberfläche mit Swing echt nützlich, ich kann zwar mit dem Java-Editor ein Grundgerüst aufrufen, aber weiß noch nicht, wie ich mein Programm dort einfüge.
Außerdem müssten so Sachen wie die Eingabe des Benutzers in Text-Felder gelegt werden und ein Button zum starten wäre auch nicht verkehrt.
mfg
foxxx
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 12:22 Sa 17.01.2009 | Autor: | rainerS |
Hallo!
> Hier der Auszug aus dem Compiler vom Java-Editor:
>
> 1: | Compiliere
| 2: | > [mm]C:\Users\FoX\Desktop\ratespiel\RateSpiel.java[/mm] mit
| 3: | > Java-Compiler
| 4: | > RateSpiel.java:10:7: cannot find symbol
| 5: | > symbol : class ConInput
| 6: | > location: class RateSpiel
| 7: | > ConInput eingabe = new ConInput();
| 8: | > ^
| 9: | > RateSpiel.java:10:30: cannot find symbol
| 10: | > symbol : class ConInput
| 11: | > location: class RateSpiel
| 12: | > ConInput eingabe = new ConInput();
| 13: | > ^
| 14: | > RateSpiel.java:34:53: cannot find symbol
| 15: | > symbol : variable oberGrenze
| 16: | > location: class RateSpiel
| 17: | > this.computerZahl = (int) (Math.random() *
| 18: | > (oberGrenze - unterGrenze) + unterGrenze);
| 19: | > ^
| 20: | > 3 errors
| 21: | >
| 22: | > Compiliere [mm]C:\Users\FoX\Desktop\ratespiel\SpielTest.java[/mm]
| 23: | > mit Java-Compiler
| 24: | > [mm].\RateSpiel.java:10:7:[/mm] cannot find symbol
| 25: | > symbol : class ConInput
| 26: | > location: class RateSpiel
| 27: | > ConInput eingabe = new ConInput();
| 28: | > ^
| 29: | > [mm].\RateSpiel.java:10:30:[/mm] cannot find symbol
| 30: | > symbol : class ConInput
| 31: | > location: class RateSpiel
| 32: | > ConInput eingabe = new ConInput();
| 33: | > ^
| 34: | > [mm].\RateSpiel.java:34:53:[/mm] cannot find symbol
| 35: | > symbol : variable oberGrenze
| 36: | > location: class RateSpiel
| 37: | > this.computerZahl = (int) (Math.random() *
| 38: | > (oberGrenze - unterGrenze) + unterGrenze);
| 39: | > ^
| 40: | > 3 errors
| 41: | > |
>
>
>
> Ich bin nun mittlerweile etwas ratlos, da ich davon
> ausging, dass das einfach so funktioniert.
>
> Mit Java an sich hatte ich auch keine Probleme, ich wollte
> mich jetzt auch primär auf die grafische Oberfläche stürzen
> und nur schnell ein kleines Programm dafür schreiben.
>
> Ich sehe meinen Fehler echt nicht, allerdings bin ich mir
> mit dem ConInput noch nicht sicher, aber dazu finde ich
> auch bei google irgendwie nichts ...
>
>
> Es wäre sehr nett, wenn mir jemand erläutern könnte, WO und
> WARUM der Fehler da ist. :)
In Java müssen alle verwendeten Klassen definiert werden. Ich sehe in deinem Programm weder irgendwo die Definition von ConInput nocht eine import-Anweisung, um die Klasse aus einer Bibliothek zu holen.
> Desweiteren wäre eine Einleitung in die grafische
> Oberfläche mit Swing echt nützlich, ich kann zwar mit dem
> Java-Editor ein Grundgerüst aufrufen, aber weiß noch nicht,
> wie ich mein Programm dort einfüge.
> Außerdem müssten so Sachen wie die Eingabe des Benutzers
> in Text-Felder gelegt werden und ein Button zum starten
> wäre auch nicht verkehrt.
Da verlangst du zuviel; das kann keiner in wenigen Sätzen tun. Es gibt bei Sun ein englisches Tutorial.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 13:20 Sa 17.01.2009 | Autor: | foxxx |
> Hallo!
> In Java müssen alle verwendeten Klassen definiert werden.
> Ich sehe in deinem Programm weder irgendwo die Definition
> von ConInput nocht eine import-Anweisung, um die Klasse aus
> einer Bibliothek zu holen.
> Viele Grüße
> Rainer
Das mit der grafischen Oberfläche ist auch erstmal nebensächlich.
Das Programm soll funktionieren.
Es wäre jetzt sehr nett, wenn du mi sagen könntest, wie ich ConInput zu definieren habe, oder wie ich das umgehen kann etc, die eigentliche Funktionsweise des Programms sollte ja klar sein :)
mfg
foxxx
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:55 Sa 17.01.2009 | Autor: | rainerS |
Hallo!
> Es wäre jetzt sehr nett, wenn du mi sagen könntest, wie ich
> ConInput zu definieren habe, oder wie ich das umgehen kann
> etc, die eigentliche Funktionsweise des Programms sollte ja
> klar sein :)
Schau mal hier.
Ich rate dir, eine Einführung in Java durchzuarbeiten. Die Ähnlichkeit mit JavaScript endet doch schon bald nach der Syntax.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 17:04 Sa 17.01.2009 | Autor: | foxxx |
Ich bin jetzt schon etwas weiter, das Programm läuft schonmal :D
funktionierender Quellcode:
1: | import java.io.*;
| 2: |
| 3: | class RateSpiel {
| 4: |
| 5: | int computerZahl;
| 6: | String spielerEingabe;
| 7: | String spielen;
| 8: | int spielerZahl;
| 9: | boolean weiterSpielen;
| 10: | int wievielteRunde;
| 11: | int unterGrenze;
| 12: | int oberGrenze;
| 13: | int maxVersuche;
| 14: | BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
| 15: |
| 16: | RateSpiel(int uG, int oG, int maxV){
| 17: | this.unterGrenze = uG;
| 18: | this.oberGrenze = oG;
| 19: |
| 20: | if (uG > oG) {
| 21: | this.unterGrenze = oG;
| 22: | this.oberGrenze = uG;
| 23: | }
| 24: | else {
| 25: | this.unterGrenze = uG;
| 26: | this.oberGrenze = oG;
| 27: | }
| 28: |
| 29: | if (maxV > 1) this.maxVersuche = maxV;
| 30: | else this.maxVersuche = 3;
| 31: |
| 32: | this.weiterSpielen = true;
| 33: | this.wievielteRunde = 0;
| 34: | }
| 35: |
| 36: | public void run(){
| 37: | this.wievielteRunde = 0;
| 38: | this.computerZahl = (int) (Math.random() * (oberGrenze - unterGrenze) + unterGrenze);
| 39: | // System.out.println(this.computerZahl);
| 40: | while (this.wievielteRunde < this.maxVersuche){
| 41: | this.wievielteRunde++;
| 42: |
| 43: | System.out.print("Dein Tipp: ");
| 44: | String spielerEingabe = null;
| 45: | try {
| 46: | spielerEingabe = console.readLine();
| 47: | }
| 48: | catch (IOException e) {
| 49: | // Sollte eigentlich nie passieren
| 50: | e.printStackTrace();
| 51: | }
| 52: | spielerZahl = Integer.parseInt(spielerEingabe);
| 53: |
| 54: |
| 55: | //System.out.println("Dein Tipp lautet: " + spielerZahl);
| 56: |
| 57: | if (this.spielerZahl == this.computerZahl){
| 58: | System.out.println("Richtig geraten!");
| 59: | break;
| 60: | }
| 61: | else
| 62: | if (this.spielerZahl < this.computerZahl){
| 63: | System.out.println("Falsch, Deine Zahl war zu klein! Noch " + (maxVersuche - wievielteRunde) + " Versuch(e)");
| 64: | }
| 65: | else System.out.println("Falsch, Deine Zahl war zu groß! Noch " + (maxVersuche - wievielteRunde) + " Versuch(e)");
| 66: | }
| 67: | }
| 68: |
| 69: | public void hauptSchleife(){
| 70: | do{
| 71: | this.run();
| 72: | System.out.println("Willst Du nochmal spielen? (ja/nein)");
| 73: | String spielen = null;
| 74: | try {
| 75: | spielen = console.readLine();
| 76: | }
| 77: | catch (IOException e) {
| 78: | // Sollte eigentlich nie passieren
| 79: | e.printStackTrace();
| 80: | }
| 81: | //System.out.println(spielen.toLowerCase().equals("ja"));
| 82: | this.weiterSpielen = spielen.toLowerCase().equals("ja");
| 83: |
| 84: | }
| 85: | while (this.weiterSpielen);
| 86: | }
| 87: | } |
Start-Programm:
1: | class SpielTest {
| 2: |
| 3: | public static void main(String[] args) {
| 4: | RateSpiel spiel = new RateSpiel(10, 20, 3);
| 5: | spiel.hauptSchleife();
| 6: | }
| 7: | } |
In der ersten Version waren noch einige Tippfehler, die ich einfach nicht gesehen hab, naja jetzt sind sie weg :)
Jetzt bin ich gerade dabei, die grafische Oberfläche zu machen.
Aktuell sieht es jetzt so aus:
[img=http://www.abload.de/thumb/swing_versuch1zhuz.jpg]
Ich weiß aber nicht, ob das so intelligent gelöst ist...
Außerdem habe ich die Objekte alle nur platziert und mal halbwegs sinnvoll benannt.
Es fehlt nocht jegliche Einbindung und Verknüpfung in mein Ratespiel.
Da habe ich nun kein Plan und muss nochmal suchen, ob ich da eine vernünftige Anleitung finde.
mfg
foxxx
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 01:45 So 18.01.2009 | Autor: | foxxx |
Ich komm noch immer nicht weiter, ich hab leider keine brauchbare Anleitung für Swing gefunden ...
Bei "Java ist auch eine Insel" hab ich auch geguckt, aber das hilft mir auch nicht weiter.
Elemente sind wie gesagt alle platziert, aber müssen noch verknüpft werden, ich weiß nur noch nicht wie ...
mfg
foxxx
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:44 So 18.01.2009 | Autor: | foxxx |
Ich möchte ja nicht drängeln, aber bis morgen müsste das Programm schon fertig sein ...
mfg
foxxx
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 05:21 Di 20.01.2009 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|