Thema: Ratespiel

  1. #1
    Cadet 4th Year
    Dabei seit
    Apr 2013
    Beiträge
    65

    [Java] Ratespiel

    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

  2. Anzeige
    Logge dich ein, um diese Anzeige nicht zu sehen.
  3. #2
    Lt. Commander
    Dabei seit
    Feb 2013
    Beiträge
    1.357

    [Java] AW: Ratespiel

    Und was ist jetzt deine Frage? Ob ein anderer Lust hat deine Hausaufgaben zu machen?
    Desktop: Win 8.1 Pro / Asus H87M-Pro / i5-4570 / GTX770 / 840Pro / 16GB Low V. / 2x Dell U2713HM
    Mobil: Dell E6520 / Win 8.1 Pro / i5-2 / 840EVO / 8GB Corsair / 1080p / 5yr ProSupport / 802.11ac / 14h Battery
    Numbercruncher: Win Server 2012R2 / 840EVO / Xeon E3-1230v3 / 32GB RAM / 12W idle / 50W load

  4. #3
    Cadet 4th Year
    Ersteller dieses Themas

    Dabei seit
    Apr 2013
    Beiträge
    65

    [Java] AW: Ratespiel

    nein wirklich nicht, erstmal will ich dieses eine Problem lösen mit der "Auswertung".

  5. #4
    Lt. Junior Grade
    Dabei seit
    Jan 2010
    Beiträge
    271

    [Java] AW: Ratespiel

    Verbessere deine Einrückungen und dann wirst du den Fehler sehen.
    BE PART OF THE CB FOLDING@HOME TEAM
    Wir brauchen weitere Mitglieder. Es zählt jeder einzelne Punkt - auch wenn die Hardware nicht High-End ist.

  6. #5
    Lt. Commander
    Dabei seit
    Apr 2010
    Beiträge
    1.447

    [Java] AW: Ratespiel

    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.

  7. #6
    Cadet 4th Year
    Ersteller dieses Themas

    Dabei seit
    Apr 2013
    Beiträge
    65

    [Java] AW: Ratespiel

    @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 vom 11.09.2013 22:27 Uhr: @DjNDB

    ja c sind die Versuche, ich habs nur zu test zwecken c gennant

  8. #7
    Commander
    Dabei seit
    Feb 2010
    Ort
    bei Köln
    Beiträge
    2.142

    [Java] AW: Ratespiel

    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");
    		}
    	}
    	}
    }

  9. #8
    Lt. Commander
    Dabei seit
    Apr 2010
    Beiträge
    1.447

    [Java] AW: Ratespiel

    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" );
    		}
    
    	}
    
    }
    Geändert von DjNDB (11.09.2013 um 23:01 Uhr)

  10. #9
    Moderator
    ⚖ ➡ ☹ ➡ ☠
    Dabei seit
    Dez 2005
    Ort
    BW/WN
    Beiträge
    23.061

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •