# Zahlen erraten



## Need_Help1993 (30. Okt 2011)

Hallo liebes Java-forum.
Ich soll ein Programm entwerfen, mit dem ich Zahlen zwischen 1 und N raten kann. es sollen die benötigten Verusuche angegeben werden, und der Spieler bei erraten der Zahl gefragt werden ob er nochmal spielen will (mit boolean).
Das ganze Spiel soll in einer Klasse ZahlenRaten implementiert werden. Auer dem
Konstruktor der Klasse und der Methode starteSpiel() sollen alle Attribute und
Methoden private sein. Die main-Methode soll lediglich eine Instanz der Klasse erzeugen
und das Spiel starten.

Aufgabenstellung ist folgende:
Erstellen sie die Klasse ZahlenRaten. Sie soll als Attribute die eingegebene Obergrenze, die zu ratende Zahl und die Anzahl der benotigten Versuche beinhalten. Auerdem hat sie ein Attribut vom Typ scanner, womit Tastatureingaben gelesen werden konnen. Nur dieses muss im Konstruktor initialisiert werden.

Fügen Sie der Klasse nun die Methode int positiveZahl(String aufforderung) hinzu. Die Methode soll den Spieler mit dem ubergebenen String zur Eingabe einer positiven Zahl auordern. Mittels nextLine() der Klasse Scanner wird ein String von der Tastatur eingelesen. Der String kann durch Integer.parseInt(String) in eine ganze Zahl (auch negativ oder Null) umgewandelt werden. Die Eingabe soll so lange wiederholt werden, bis die Zahl groer als Null ist. Dann wird sie zuruck gegeben.

Implementieren Sie als nachstes die Methode void neuesSpiel(). Sie fordert den Spieler zuerst zur Eingabe der Obergrenze auf. Verwenden Sie positiveZahl. Danach wird die Anzahl der Versuche zurück gesetzt und eine zufallige Zahl im gewünschten Wertebereich gewürfelt.

Nun soll der eigentliche Ablauf des Spiels in der Methode void spiele() programmiert werden. Der Spieler wird wiederholt zum Eingeben einer positiven Zahl aufgefordert. Daraufhin wird eine Nachricht ausgegeben, ob die gesuchte Zahl groer oder kleiner ist. Dies wird so lange wiederholt, bis die Zahl erraten wurde. Die Methode endet mit der Ausgabe der benotigten Versuche auf dem Bildschirm.

Implementieren Sie die Methode boolean erneutSpielen(), die den Spieler fragt, ob
er noch einmal spielen mochte. Die Entscheidung des Spielers wird als boolean-Wert
zuruck gegeben. Uberlegen Sie sich, in welcher Form Sie am geschicktesten die Antwort
des Spielers einlesen konnen. Eine Falscheingabe des Spielers darf nicht automatisch als
ja oder nein gewertet werden.

Zuletzt soll die Methode void starteSpiel() hinzugefugt werden. Sie ruft die drei
vorigen Methoden neuesSpiel, spiele und erneutSpielen so oft auf, bis der Spieler
signalisiert, dass er von all dem Zahlen raten die Nase voll hat. .


```
import java.util.Scanner;


public class ZahlenRaten{
    
      public static void main (String args[])
      {
       System.out.println("*** Zahlenraten **");
       System.out.println("\nWillkommen beim Zahlenraten!");
       System.out.println("Ich denke mir eine Zahl zwischen 1 und N. Welchen Wert hat N?");
       
       Scanner scanner = new Scanner(System.in);
       String s = scanner.nextLine();
       
       int N= new Integer(s).intValue();
       int positiveZahl = (int)(Math.random()*(N+1));

        System.out.println("\nRate eine Zahl");
        System.out.println();
             
       
       
        int rateVersuche = 0;
        int rateZahl = -1;

              
        while (rateZahl != positiveZahl) {
            String rate = scanner.nextLine();
            
            rateZahl = Integer.valueOf(rate);
            
          rateVersuche++;
          System.out.print(rateVersuche + ". Versuch: ");
         
          if (rateZahl > positiveZahl)
          {
            System.out.println("Meine Zahl ist kleiner!\n");
          }
         
          if (rateZahl < positiveZahl)
          {
            System.out.println("Meine Zahl ist groesser!\n");
          }
         
          if (rateZahl == positiveZahl)
          {
            System.out.print("\nDas ist die gesuchte Zahl! \nDu hast " + rateVersuche);
            System.out.print(" Versuch(e) benoetigt um die Zahl zu erraten!");
          }
        }
      }
    
}
```

ich habe mich mal drangesetzt, und das ganze erstmal so zusammengeschustert, wie mir das am sinnvollsten erschien... (funktioniert soweit auch prima)
jetzt habe ich das problem, dass ich nicht genau weiß, wie ich das mit der Abfrage, ob erneut gespielt werden soll implementieren soll, und mir fehlt so die methode StarteSpiel.... 
ein weiteres kleines Problemchen ist, dass bei mir auch 0 raukommen kann (sollte aber eigentlich 1-N sein) also keine null.

kann mir da vielleicht jemand weiterhelfen?


----------



## SlaterB (31. Okt 2011)

alles aus der main kann doch in eine separate Methode,

was meinst du mit der 0? rechne auf die erstellte Zufallszahl +1, dann evtl. kleinere Zufallszahlen erstellen


----------



## Fab1 (31. Okt 2011)

Hi,

wenn ich das gleiche meine wie du, dann schau mal hier JOptionPane (Java Platform SE 6)


----------



## sillydude (31. Okt 2011)

japp genau, da hat er recht!

machs einfach so:
int positiveZahl = 1+ (int)(Math.random()*(N+1));
und wegen der abfrage, ob jemand nochmals spielen will, machs doch so wie mit dem erraten, solang er die zahl nicht erraten hat, gehts weiter, so funktionierts auch mit dem spiel, mach z.B. ne while schleife
wie etwa:  while (game) .... und naja am ende frägst du ab ob noch weitergespielt werden soll oder nicht, falls nicht wird game auf false gesetzt und du verabschiedest dich, wenn ja wird nichts gesetzt, da ja game sowieso standardmäßig auf true ist, so viel spaß dann


----------



## SlaterB (31. Okt 2011)

nana, mein Recht, falls auf mich bezogen, beinhaltete doch wohl
int positiveZahl = 1+ (int)(Math.random()*N);
sonst zu groß, über N hinaus


----------



## SlaterB (31. Okt 2011)

die gelöschte Postings stehen in
http://www.java-forum.org/plauderecke/126373-gemecker.html


----------



## Baum17 (31. Okt 2011)

Orientier dich an den methoden, die in den uebungsblaettern aufgelistet sind


----------



## Need_Help1993 (31. Okt 2011)

Baum 17 wie wäre es denn mal, wenn du mal was selbst machst, anstelle alles abzuschreiben und dan noch "schlaue" kommentare zu posten....?

BTW:
Ich habs jetzt hinbekommen, genau so wies in der Aufgabe gefragt war


----------



## Baum17 (31. Okt 2011)

Need_Help1993 hat gesagt.:


> Baum 17 wie wäre es denn mal, wenn du mal was selbst machst, anstelle alles abzuschreiben und dan noch "schlaue" kommentare zu posten....?
> 
> BTW:
> Ich habs jetzt hinbekommen, genau so wies in der Aufgabe gefragt war



Kannst du sie mal posten? 
Ich hab meins ja schon abgeschickt.


----------



## Need_Help1993 (31. Okt 2011)

na klar doch 
wovon träumst du eigentlich nachts?

und nur mal so btw.... wenn du exakt die gleiche aufgabenstellung hast kannste meinen ersten source code post in die tonne kloppen  

viel spaß noch beim Gutenbergen


----------



## Baum17 (2. Nov 2011)

Hab volle punktzahl bekommen. Geeeehhhht~

Edit: Gutenberg ist stolz auf mich


----------

