# Java-Hausübung. Falls jemand viel Zeit hat! :)



## Turbokueken (20. Dez 2004)

Hallooo!

Ich hab heute um 24:00 eine Übung in Java abzugeben und ehrlich gesagt gar keinen Plan davon.  ???:L Ihr seid sozusagen meine letzte Hoffnung für heute, ansonsten kassier ich wieder 0 Punkte... Was ich natürlich auch überleben würde!  :wink: 

Also falls jemand wirklich absolut zuviel Zeit hat, dann wär ich demjenigen natürlich sehr, sehr dankbar, wenn er/sie mir das Programm schreiben könnte...  :roll: 


Die *Angabe* lautet (leider auf Englisch, ich weiß *heul*):

Write a class GuessingGame, that lets the user guess a natural number. Let this number be a random number (in a certain range), the program ‘thinks of’. Let the user enter her guesses and the program tell her if the guess is too low or too high.
Write a class GuessingGameTest to test the Class GuessingGame.

_Hints, tips, and comments: _

Write the tester class first and run it 
Then start working on the GuessingGame and TEST it as you go along 
Have you class be able to guess without user input: smth like: .guess(6)
Implement a method that asks the user for a number and then calls .guess.
This will make it easier for you to test (less user input) 

_So sollte das Output im Tester dann aussehen:_

Starting a new Game
You guessed: 19
and that was too high!
You guessed: 18
and that was too high!
You guessed: 17
and that was too high!
You guessed: 16
and that was too high!
You guessed: 15
and that was too high!
You guessed: 14
and that was too high!
You guessed: 13
and that was too high!
You guessed: 12
and that was too high!
You guessed: 11
and that was too high!
You guessed: 10
and that was too high!
You guessed: 9
and that was too high!
You guessed: 8
and that was right!
(took you 12 guesses)
right guess was: 8


Starting a new Game
You guessed: 32
and that was too low!
You give up?
correct answer would have been: 39


Also ich sag schon mal hier danke, dass ihr euch überhaupt die Zeit genommen habt, das hier alles zu lesen!  :### 

Liebe Grüße,
Turbokueken


----------



## P3AC3MAK3R (20. Dez 2004)

Hast Du wenigstens schon einen Ansatz (z. B. als Pseudocode)?

Dieses Forum ist nämlich nicht als Codegeneriermaschine gedacht.  :roll:


----------



## Turbokueken (20. Dez 2004)

Ich machs kurz und schmerzlos: Nein! *seufz*

Ich habe auch wirklich nicht vor, das Forum nochmals in dieser Form zu "missbrauchen"...  :roll:  Es ist jetzt nur die letzte Möglichkeit für mich, da Programmieren doch ziemlich Zeit aufwendig ist (wenn mans nicht wirklich kann) und ich aber noch für eine Prüfung morgen strebern muss (so wie schon seit Tagen)...   :### 

Danke für deine rasche Reaktion!  :wink:  Das ging ja echt flott!

LG, Turbokueken


----------



## Icewind (20. Dez 2004)

ich schreibs dir weil mir grad faad is in der schule...


----------



## P3AC3MAK3R (20. Dez 2004)

Icewind hat gesagt.:
			
		

> ich schreibs dir weil mir grad faad is in der schule...


Ich würde die Hier-ist-die-Aufgabe-nun-macht-mal-Mentalität ehrlich gesagt nicht unterstützen...


----------



## Icewind (20. Dez 2004)

hm naja normalerweise würd ich das ja nicht machen aber naja ich hab halt grad nix besseres zu tun...


----------



## SebiB90 (20. Dez 2004)

ich hab zwar die aufgaben stellungen nicht ganz durchgelesen, aber ich glaub ich weiß was gemeint ist und hab sowas schonmal geschrieben.
ich such es mal


----------



## Icewind (20. Dez 2004)

so bin fertig kann hier: GuessingGame
heruntergeladen werden

das hier is jetzt die aktualisierte version schau nach ob bei dir steht wieviele züge du gebraucht hast wenns nicht da steht dann nimm die version hier

_//edit: so hatte noch was vergessen aber jetzt is es fertig (glaub ich halt), schreib mir wenn was fehlt, hab aber nicht mehr so viel zeit_


----------



## Turbokueken (20. Dez 2004)

Dankeschön für die Mühe!


----------



## Student (20. Dez 2004)

also das sind zwei miniklassen .. die aufgabe sollte ja auch nicht zuuu gut gelöst sein .. :roll: (gute ausrede, was? ^^)


```
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Demos
{
    public static void main( String[] args ) throws IOException
    {
        Ratespiel rs = new Ratespiel();
        int attempts = 0;

        BufferedReader input = new BufferedReader( new InputStreamReader(System.in));

        System.out.println( "Bitte eine Zahl eingeben:" );

        // Man hat maximal 10 Versuche
        boolean guess = rs.guess(Integer.parseInt(input.readLine()));

        while( guess && attempts <= 10 )
        {
            System.out.println( "Bitte eine Zahl eingeben:" );
            guess = rs.guess(Integer.parseInt(input.readLine()));
            attempts++;
        }

        System.out.println( "Das war's." );

    }
}


class Ratespiel
{
    // Objektvariable, die den Zufallswert hält
    private long zahl;
    private int counter;

    public Ratespiel()
    {
        // Zahl zwischen 0 und 100
        this.zahl = Math.round(Math.random() * 100 );
        System.out.println( "Zufallszahl: " + this.zahl );

        // counter initialisieren
        this.counter = 0;
    }

    public boolean guess( int zahl )
    {
        boolean tryAgain = true;
        this.counter++;

        if( this.zahl == zahl )
        {
            System.out.println( "Richtig. Du hast " + this.counter + " Versuche gebraucht." );
            tryAgain = false;
        }
        else if( this.zahl < zahl )
        {
            System.out.println( "Die Zahl ist zu groß." );
        }
        else
        {
            System.out.println( "Die Zahl ist zu klein." );
        }

        return tryAgain;
    }


}
```

vielleicht hilft es ja wem ;-)


----------



## Manfred (20. Dez 2004)

Der Basic-Code zu diesem Spiel war übrigens einst im C64 Benutzerhandbuch vorgegeben  :wink:


----------



## Student (20. Dez 2004)

ah. ich sehe gerade ... die ausgabe der zufallszahl solltest du eventuell noch rausholen ^^ 
war nur zu testzwecken.


----------



## Turbokueken (20. Dez 2004)

SUPEEER! Ein großes DANKE an alle!


----------



## Student (20. Dez 2004)

Turbokueken hat gesagt.:
			
		

> SUPEEER! Ein großes DANKE an alle!


hastes auch annähernd verstanden? ;-)
falls dich wer fragt meine ich ..


----------



## Destiny1985 (10. Jan 2005)

ist zwar schon ne lösung vorhanden, aber habe selber auch so ein Programm geschrieben, das einwandfrei funktioniert:


```
import Prog1Tools.IOTools;

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 100.");
    System.out.println("\nRate diese Zahl :)");
    System.out.println();
    
    // Eine Zufallszahl zwischen 1 und 100. Math.random liefert entweder eine 0
    // oder 1, mit *99 und +1 kommt der Zahlenbereich zustande
    
    int geheimZahl = (int) (99 * Math.random() + 1);
    
    // Initalisieren von der geratenen Zahl und den Rateversuchen
    
    int rateZahl = 0;
    int rateVersuche = 0;
    
    // Schleife um geratene zahl zu überprüfen und auszugeben, ob zu hoch oder
    // zu niedrig, bzw. das die Zahl stimmt
    
    while (rateZahl != geheimZahl)
    {
      rateVersuche++;
      System.out.print(rateVersuche + ". Versuch: ");
      rateZahl = IOTools.readInteger();

      if (rateZahl > geheimZahl)
      {
        System.out.println("Meine Zahl ist kleiner!\n");
      }
      
      if (rateZahl < geheimZahl)
      {
        System.out.println("Meine Zahl ist groesser!\n");
      }
      
      if (rateZahl == geheimZahl)
      {
        System.out.print("\nDas ist die gesuchte Zahl! \nDu hast " + rateVersuche);
        System.out.print(" Versuch(e) benoetigt um die Zahl zu erraten!");
      }
    }
  }
}
```


vielleicht kannst ja trotzdem noch was mit anfangen :>


----------



## Destiny1985 (10. Jan 2005)

btw:

konstruktive kritik an dem code is erwünscht, bin nämlich selber noch anfänger :>


----------

