Java Ratespiel

Status
Für weitere Antworten geschlossen.

octekin

Cadet 4th Year
Registriert
Apr. 2013
Beiträge
69
Guten Abend,

und zwar verzweifle ich seit stunden an meiner Hausaufgabe. ( Java seit circa. 3 Wochen)

Die Aufgabe ist es ein Ratespiel zu programmieren was ein I/O Hauptprogramm, Menü, Auswahl der Range bzw. Versuch und Bestenliste enthält.

Erst einmal mein jetziges Programm:

Code:
import java.util.Scanner;

public class ratespiel2
{
	public static void main (String[] args){
	int count = 0;
	int c = 0;
	int runden = 1;
	int gewonnen = 0;
	int verloren = 0;
	Scanner scan = new Scanner(System.in);
	while(runden < 11)			
	{int zahl  = (int)(10 * Math.random () + 1);
	System.out.println("Runde: "+ runden );
	c = 0;
	while(c <= 2)
		{			  
		System.out.println(zahl);	  
		System.out.println("Bitte geben sie eine Zahl ein ");
		int Eingabe = scan.nextInt();
		if ( zahl == Eingabe)   
			{
			System.out.println("Sie haben das Spiel gewonnen");
			c = 2;
			gewonnen += 1;
			}		
		else if (Eingabe == zahl + 2 || Eingabe == zahl - 2)
	    {
			System.out.println("warm");  
	    }
		else if (Eingabe == zahl + 1 || Eingabe == zahl - 1)
	    {
			System.out.println("heiss");  
	    }
		else 
		{
			System.out.println("kalt");   
		}
		if (Eingabe != zahl)
			{
				count += 1;
				if (count == 3)
				{	
					System.out.println("Runde " + runden + " verloren");
					count = 0;
					verloren += 1;
				}
		if (runden == 10 && c == 2 )
		{
			System.out.println("Sie haben " + gewonnen + " Runden gewonnen und " + verloren + " Runden verloren");
		}
		if (runden == 10 && c == 1 )
		{
			System.out.println("Sie haben " + gewonnen + " Runden gewonnen und " + verloren + " Runden verloren");
		}

			}
			
			}
		c+=1;
	}	
runden+=1;
	
}

}

Meine Probleme:

Zeile 48 bis 55: Dort möchte ich das die Auswertung machen. Ehrlich gesagt weiß ich selber nicht mehr was ich dort gemacht habe.

Was ich noch machen muss:
I/O Hauptprogramm, Menü, Auswahl der Range bzw. Versuch und Bestenliste

Würde mich trotzdem über Hilfen freuen

MfG
 
nein wirklich nicht, erstmal will ich dieses eine Problem lösen mit der "Auswertung".
 
Ist c die Anzahl der Versuche pro Runde? Dann würde ich die auch angemessen nennen.
Die Ausgaben in 48-55 brauchst du nicht doppelt, denn der Wert von c ist da egal, wenn ich das richtig sehe.
 
@ModellbahnerTT

mit der Einrückung habe ich keine Probleme bzw. liegt das Problem nicht dadran. Ich weiß halt nicht wie ich das umsetzten kann.

Mein Programm macht ja dies zu Zeit:

10 Runden a 3 Versuche die Richtige Zahl zuerraten.

Und nach der 10 Runde soll ausgegeben werden wie viele Runden er gewonnen und verloren hat.

Code:
if (runden >= 10)
		{
			System.out.println("Sie haben " + gewonnen + " Runden gewonnen und " + verloren + " Runden verloren");
		}
			}

So hab ich es auch versucht aber dann wird direkt am Anfang der Runde 1 die Auswertung Ausgegeben.

Ich will wirklich nicht die Absicht das ich mir die HAs macht, brauch wirklich nur ne Hilfestellung
Ergänzung ()

@DjNDB

ja c sind die Versuche, ich habs nur zu test zwecken c gennant
 
Wenn ich dein Problem richtig verstanden habe, müsste es so funktionieren wie du es dir vorstellst.

Code:
import java.util.Scanner;
 
public class ratespiel2
{
	public static void main (String[] args){
	int count = 0;
	int c = 0;
	int runden = 1;
	int gewonnen = 0;
	int verloren = 0;
	Scanner scan = new Scanner(System.in);
	while(runden < 11)			
	{int zahl  = (int)(10 * Math.random () + 1);
	System.out.println("Runde: "+ runden );
	c = 0;
	while(c <= 2){			  
		System.out.println(zahl);	  
		System.out.println("Bitte geben sie eine Zahl ein ");
		int Eingabe = scan.nextInt();
		if ( zahl == Eingabe)   
			{
			System.out.println("Sie haben das Spiel gewonnen");
			c = 2;
			gewonnen += 1;
			}		
		else if (Eingabe == zahl + 2 || Eingabe == zahl - 2)
	    {
			System.out.println("warm");  
	    }
		else if (Eingabe == zahl + 1 || Eingabe == zahl - 1)
	    {
			System.out.println("heiss");  
	    }
		else 
		{
			System.out.println("kalt");   
		}
		if (Eingabe != zahl){
				count += 1;
				if (count == 3)
				{	
					System.out.println("Runde " + runden + " verloren");
					count = 0;
					verloren += 1;
				}
			}
		c+=1;
	}
		
		runden+=1;
		
		
		if (runden > 10 )
		{
			System.out.println("Sie haben " + gewonnen + " Runden gewonnen und " + verloren + " Runden verloren");
		}
	}
	}
}
 
Ich habe inzwischen eine funktionierende Lösung.
Ein paar allgemeine Tips die ich daraus abgeleitet habe:

1. Achte darauf wie du die werte initialisiert
2. Achte darauf an welcher stelle du sie veränderst (weshalb dort)
3. Achte auf die Bedingungen

Nagut, da nun eh schon eine Lösung gepostet ist, dann hier auch meine. Ich habe für die einfachere Lesbarkeit die erhöhung von versuche und runden oben gemacht, und RUNDEN als Konstante definiert, weil ich die Anzahl zum testen geringer haben wollte.

Code:
import java.util.Scanner;

public class ratespiel2
{
	public static void main( String[] args )
	{
		int count = 0;
		int versuche = 0;
		int runden = 0;
		int gewonnen = 0;
		int verloren = 0;
		final int RUNDEN = 3;
		Scanner scan = new Scanner( System.in );
		while ( runden < RUNDEN )
		{
			runden += 1;
			int zahl = (int) ( 10 * Math.random() + 1 );
			System.out.println( "Runde: " + runden );
			versuche = 0;
			while ( versuche <= 2 )
			{
				versuche += 1;
				System.out.println( zahl );
				System.out.println( "Bitte geben sie eine Zahl ein " );
				int Eingabe = scan.nextInt();
				if ( zahl == Eingabe )
				{
					System.out.println( "Sie haben das Spiel gewonnen" );
					versuche = 2;
					gewonnen += 1;
				}
				else if ( Eingabe == zahl + 2 || Eingabe == zahl - 2 )
				{
					System.out.println( "warm" );
				}
				else if ( Eingabe == zahl + 1 || Eingabe == zahl - 1 )
				{
					System.out.println( "heiss" );
				}
				else
				{
					System.out.println( "kalt" );
				}
				if ( Eingabe != zahl )
				{
					count += 1;
					if ( count == 3 )
					{
						System.out.println( "Runde " + runden + " verloren" );
						count = 0;
						verloren += 1;
					}

				}

			}

		}

		if ( runden == RUNDEN )
		{
			System.out.println( "Sie haben " + gewonnen + " Runden gewonnen und " + verloren
					+ " Runden verloren" );
		}

	}

}
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.

Ähnliche Themen

Zurück
Oben