# Nimm Spiel muenzen



## mucke (13. Nov 2009)

Hi
ich hoffe ihr könnt mir irgendwie weiter helfen. Und zwar bekomm ich das irgendwie nicht hin das dass Spielfeld nach jedem zug richtig angezeigt wird. ahja und beim else vom spielzugComputer komme ich auch nicht weiter. Wenn sich das spielfeld durch 4 teilen lässt soll er 3 nehmen und sonst soll er so nehmen das der Spielstand durch 4 teilbar ist.



```
/* Test */

public class Test
    
{ 
    public static void main (String[] args) 
    {
        System.out.println("Erläuterung der Spielregeln:");
        System.out.println("Das Spiel wird mit zwei Spielern gespielt. Jeder der beiden Spieler setzt 1 Euro zu 10 mal 10 Cent. 
Diese werden in eine Reihe gelegt, wobei 11 mal 10 Cent einzeln und am Ende 1 mal 90 Cent (gestapelt) gelegt werden.
 Nun darf jeder abwechselnd 1, 2 oder 3 Positionen der Reihe vom Anfang beginnend entfernen. Dieses Geld gehört ihm. 
Es besteht Zugzwang. Wenn alle Positionen entfernt wurden, ist das Spiel zu Ende. 
Natürlich hat derjenige, der Position 12 erreicht, Gewinn gemacht, der andere den entsprechenden Verlust.");

              int spieler;
              {
                  System.out.println(" Wer soll beginnen? (0: Computer 1: Ich)");
                  spieler = Read.getInt();
              }
              if (spieler == 1) 
              {
                  System.out.println(" Spieler beginnt");
              }
              else if (spieler == 0)
              {
                  System.out.println(" Computer beginnt");
              }
              
              spiel (spieler);
             // int gesGewinnPc=0;
             // int gesGewinnSp=0;
              //Endergebniss
    }
    static int spiel(int spieler)
    {
        
        int spielstand= 0;
        spielfeld(spielstand);
        int zug= 0;
        
        while (spielstand < 12)
        {
            
            if ( spieler == 1)
            {
                spielzugSpieler (spielstand, zug);
                spieler--;
                
            }
            
            else
            {
                spielzugComputer (spielstand,zug);
                spieler++;
                
            }
            spielstand ++;
            spielfeld (spielstand);

        }
     
        return spielstand;
   
    }
    static void spielzugComputer (int spielstand, int zug)
    {
        if (spielstand % 4==0)
        {
            spielstand = 3;
            System.out.println(" Computer nimmt: " + spielstand);
        }
        else
        {
            spielstand = (spielstand%4);
            System.out.println(" Computer nimmt: " + spielstand);
        }
        
       
    }
    static int spielzugSpieler (int spielstand, int zug)
    {
       
       System.out.println(" Wieviel Muenzen willst du nehmen? ");
       zug = Read.getInt();
       
       
       return spielstand;
       
    }
    
    static void spielfeld (int spielstand)
    {
       if (spielstand == 12)
       {
           System.out.println("x x x x x x x x x x X");
       }
       else
       {
           for (int i = 0; i < spielstand; i++)
           {
               System.out.print(" x ");
           }
           
           int rest = 11 - spielstand;
           for (int i = 0;i < rest; i++)
           {
               System.out.print(" o ");
           }
           System.out.print(" O "); 
       }
    }
}
```

Noctarius: Bitte Java-Tags nehmen, sonst wird keiner deinen Source lesen wollen


----------



## javimka (13. Nov 2009)

Schmeiss mal deinen wahnsinn-String raus. Ist ja kaum lesbar, dein Code.


----------



## mucke (13. Nov 2009)

Wie kann ich den jetzt noch rauswerfen?


----------



## unregistriert (13. Nov 2009)

Die Regeln könnte man in einer Textdatei (.txt) unterbringen.


----------



## Marco13 (13. Nov 2009)

Was funktioniert denn nicht?


----------



## mucke (13. Nov 2009)

Die muenzstabel ausgabe, die zeigt immer zwei reihen an und "addiert" nicht wirklich die von den spielern genommenen münzen.


----------



## ARadauer (13. Nov 2009)

```
static void spielzugComputer (int spielstand, int zug)
    {
        if (spielstand % 4==0)
        {
            spielstand = 3;
            System.out.println(" Computer nimmt: " + spielstand);
        }
        else
        {
            spielstand = (spielstand%4);
            System.out.println(" Computer nimmt: " + spielstand);
        }
        
       
    }
```
das ist falsch, spielstand = 3; ändert hier nur die lokale variable der Methode. Die Änderung hat nach aussen keine Wirkung..


warum überhaupt = 3? plus oder?
warum machst du ein spielstand ++; in der methode spiel?

mah sorry, ich hab mir gedacht ich besser dir das schnell aus, aber das ist ja komplett falsch. 
ich würd nochmal neu anfangen...


----------



## mucke (13. Nov 2009)

Ne eigentlich will ich damit sagen das der Computer 3 nehmen soll wenn sich das Spielfeld durch 4 teilen lässt und wenns net gehn soll soll der soviele nehmen das es sich dann durch 4 teilen lässt.
Und das problem bei der Ausgabe vom spielfeld ,ist dass er nicht die o die er nimmt in x umwandelt.Weisst was ich mein?^^

 Ah  das spielstand++ war da nur versuchsweise drinnen und hatte ich vergessen rauszulöschen.

Was ist komplett falsch? die ganze aufgabe? oder spielzugComputer?


----------



## Marco13 (13. Nov 2009)

Naja, "komplett falsch" klingt so hart. Es ist nur so, dass man es kaum "richtig" machen kann, ohne dass man das was da ist, löscht und neuschreibt, weil es eben nicht so viel ist.

Vielleicht mal ... schrittweise:
[c]static void spielzugComputer (int spielstand, int zug)[/c]
Was ist spielstand, was ist zug, warum werden die an die Methode übergeben, und was soll die Methode machen? (Beachte, dass die übergebenen Werte nicht verändert werden können - aber eine Methode kann ggf. eine einzelne Zahl, die sie ausgrechnet hat, _zurückgeben_...)


----------



## mucke (13. Nov 2009)

Sei mir net böse wenn ich nicht gleich weiss was du meinst^^ mach erst 3 wochen java und blick da noch net so ganz durch.
Aber ich bedank mich schonmal für deine Bemühungen.:toll::toll::toll:

So soll das design aussehen vll hilft das ein wenig.
zug= Anzahl der gezogenen felder.


Funktion: main:
 (für ein Spiel. Diese Funktion kann durch eine Schleife ergänzt werden, dass mehrfach gespielt wird)
      Erlaeutere Spielregeln
      Frage, wer beginnen soll  
      CALL Spiel 
      Gib Endergebnis aus


Funktion: Spiel (Parameter: Anfänger, Rückgabewert: Spielgewinn)
       Initialisiere Spiel (insbesondere Spielstand auf null setzen) 
       CALL print Spielfeld 
       WHILE Spiel nicht beendet
              IF Spieler am Zug 
              CALL Spielzug Spieler
              Berechne Gesamtgewinn
       ELSE
              CALL Spielzug Computer 
       END IF
              Bestimme wer am Zug ist
              CALL print Spielfeld 
       END WHILE


Funktion: Spielzug Computer (Parameter: Spielstand, Rückgabewert: Anzahl gezogene Felder)
    IF Spielstand durch 4 teilbar 
             Wähle 3 Felder
    ELSE 
             Wähle so viele Felder, dass Spielstand durch 4 teilbar
    END IF

Funktion: Spielzug Spieler (Parameter: -, Rückgabewert: Anzahl gezogene Felder)
    Frage Spieler nach seinem Spielzug 
    Lese Anzahl gezogene Felder ein


Funktion: print Spielfeld (Parameter: Spielstand, Rückgabewert: -)
IF Spielstand gleich 12 
    print 11 mal "x " 
    print "X"
ELSE
    print Anzahl "x " 
    print Anzahl "o " 
    print "O"
END IF


----------



## Marco13 (14. Nov 2009)

Ohjaok ... das ist ja schon Pseudocode. Also... bei sowas wie
_Funktion: Spielzug Computer (Parameter: Spielstand, Rückgabewert: Anzahl gezogene Felder)_
ist das gemeint, was ich schon angedeutet hatte: Dort soll etwas zurückgegeben werden. So läuft die Wahl, wie viele Münzen man nimmt, ja auch in der Wirklichkeit ab: Man sieht wie viele Münzen schon genommen wurden (Eingabe oder Parameter), und sagt dann, wie viele Münzen man selbst wegnimmt (Ausgabe oder Rückgabewert). D.h. diese Funktion sollte so aussehen:

```
private int spielzugComputer(int spielstand)
{
    int anzahlGezogeneFelder = ... (ausrechnen)

    return anzahlGezogeneFelder; // Wert zurückgeben
}
```

Die Funktion wird dann aufgerufen, um den Spielzug des Computers abzufragen:

```
int anzahlGezogeneFelderDesComputers = spielzugComputer(spielstand);
.... (rechne mit 'anzahlGezogeneFelderDesComputers' den neuen Spielstand aus) ...
```


----------



## mucke (14. Nov 2009)

ah oke werds heute abend mal ausprobieren und danke nochmal für die Mühe


----------



## mucke (15. Nov 2009)

sry für sie Späte antwort. War das ganze We unterwegs und werde das morgen mal ausprobieren. Aber nohc ne frage hab ich. Ich soll noch den Gewinner ermitteln. Hab ber kein Plan wie ich das machen soll, ich weiss nur der "Spieler" der den Stapel 12 nimmt ,hat gewonnen.


----------



## Marco13 (15. Nov 2009)

Sobald der spieldstand zu "12" wird, ist das spiel zuende, und der Gewinner steht fest.


----------



## mucke (15. Nov 2009)

Jo, aber irgendwie steh ich voll auf dem Schlauch und hab null plan wie ich das mit einbauen soll.;(


----------



## Marco13 (15. Nov 2009)

```
private int gewinner = -1;
...
        while (spielstand < 12)
        {

..

...
            if (spielstand == 12) gewinner = spieler;
        }
```


----------



## mucke (15. Nov 2009)

ah oke danke werd mal mein glück versuchen. warum eigentlich private?


----------



## Marco13 (16. Nov 2009)

Alle fields sollten private sein. Siehe auch FAQ


----------



## mucke (16. Nov 2009)

So hab jetzt hin bekommen. Funktioniert soweit auch alles aber kann man den spielzug vom Computer vll eleganter lösen?


```
/* Testat */

public class Testat2
    
{ 
    public static void main (String[] args) 
    {
        System.out.println("Erläuterung der Spielregeln:");
        System.out.println("Das Spiel wird mit zwei Spielern gespielt. Jeder der beiden Spieler setzt 1 Euro zu 10 mal 10 Cent. Diese werden in eine Reihe gelegt, wobei 11 mal 10 Cent einzeln und am Ende 1 mal 90 Cent (gestapelt) gelegt werden. Nun darf jeder abwechselnd 1, 2 oder 3 Positionen der Reihe vom Anfang beginnend entfernen. Dieses Geld gehört ihm. Es besteht Zugzwang. Wenn alle Positionen entfernt wurden, ist das Spiel zu Ende. Natürlich hat derjenige, der Position 12 erreicht, Gewinn gemacht, der andere den entsprechenden Verlust.");

              int spieler;
              {
                  System.out.println(" Wer soll beginnen? (0: Computer 1: Ich)");
                  spieler = Read.getInt();
              }
              if (spieler == 1) 
              {
                  System.out.println(" Spieler beginnt");
              }
              else if (spieler == 0)
              {
                  System.out.println(" Computer beginnt");
              }
              
              spiel (spieler);


    }
    static int spiel(int spieler)
    {
        
        int spielstand= 0; //(gesamt gezogener felder)
        spielfeld(spielstand);
        int gewinnS=0;
        int gewinnC=0;
        
        while (spielstand < 12)
        {
            int agfS = 0;
            int agfC = 0;
            
            if ( spieler == 1)
            {
                agfS = spielzugSpieler ();
                gewinnS+= agfS;
                System.out.println(" Spieler hat " + gewinnS*10 + " Muenzen");
                spieler--;
                
            }
            
            else
            {
               agfC = spielzugComputer (spielstand);
               gewinnC+= agfC;
               System.out.println(" Computer hat " + gewinnC*10 + " Muenzen");
               spieler++;
                
            }
            
            spielstand+= agfS + agfC;
            spielfeld (spielstand);

        }
        if (spieler==1)
        {
            System.out.println(" Computer hat gewonnen");
            System.out.println(" Computer hat insgesamt " + (90 + gewinnC*10) + " Muenzen gewonnen");
            System.out.println(" Spieler hat insgesamt " +  gewinnS*10 + " Muenzen gewonnen");
        }
        else
        {
            System.out.println(" Sie haben gewonnen");
            System.out.println(" Spieler hat insgesamt " + (90 + gewinnS*10) + " Muenzen gewonnen");
            System.out.println(" Computer hat insgesamt " +  gewinnC*10 + " Muenzen gewonnen");
        }
 
        return spielstand;
   
    }
    static int spielzugComputer (int spielstand)
    {
        int agfC=0;
        
        if (spielstand % 4==0)
        {
            agfC += 3;
            System.out.println(" Computer nimmt: " + agfC);
        }
        else
        {
            switch (spielstand)
            {
                case 0:
                    agfC = 2;
                    System.out.println(" Computer nimmt: " + agfC);
                    break;
                case 1:
                    agfC = 3;
                    System.out.println(" Computer nimmt: " + agfC);
                    break;
                case 2:
                    agfC = 2;
                    System.out.println(" Computer nimmt: " + agfC);
                    break;
                case 3:
                    agfC = 1;
                    System.out.println(" Computer nimmt: " + agfC);
                    break;
                case 5:
                    agfC = 3;
                    System.out.println(" Computer nimmt: " + agfC);
                    break;
                case 6:
                    agfC = 2;
                    System.out.println(" Computer nimmt: " + agfC);
                    break;
                case 7:
                    agfC = 1;
                    System.out.println(" Computer nimmt: " + agfC);
                    break;
                case 9:
                    agfC = 3;
                    System.out.println(" Computer nimmt: " + agfC);
                    break;
                case 10:
                    agfC = 2;
                    System.out.println(" Computer nimmt: " + agfC);
                    break;
                case 11:
                    agfC = 1;
                    System.out.println(" Computer nimmt: " + agfC);
                    break;
                    
            }
                
        }
        
        return agfC;  
    }
    static int spielzugSpieler ()
    {
       int agfS;
       System.out.println(" Wieviel Muenzen willst du nehmen? ");
       agfS = Read.getInt();

       return agfS;
       
    }
    
    static void spielfeld (int spielstand)
    {
       if (spielstand == 12)
       {
           System.out.println("x x x x x x x x x x X");
       }
       else
       {
           for (int i = 0; i < spielstand; i++)
           {
               System.out.print(" x ");
           }
           
           int rest = 11 - spielstand;
           for (int i = 0;i < rest; i++)
           {
               System.out.print(" o ");
           }
           System.out.print(" O \n");
           
       }
    }
}
```


----------



## Painii (16. Nov 2009)

zum schluss [/code] statt 
	
	
	
	





```
:eek:
```


----------



## mucke (16. Nov 2009)

thx^^


----------



## Marco13 (16. Nov 2009)

WAH 

Schau nochmal genau, was dort in der Aufgabenstellung steht, und versuch' das mal ohne switch zu schreiben...


----------



## mucke (16. Nov 2009)

hehe ja ich weiss ist keine elegante lösung ;D aber ohne switch bekomm ichs einfach net hin trotz deiner Hilfestellung. Naja ich probiers nochmal a weng


----------



## mucke (16. Nov 2009)

komm immer nur auf das hier, aber funzt net wirklich -.-

static int spielzugComputer (int spielstand)
    {
        int agfC=0;

        if (spielstand % 4==0)
        {
            agfC += 3;
            System.out.println(" Computer nimmt: " + agfC);
        }
        else
        {
            agfC+=(spielstand%4);
            System.out.println(" Computer nimmt: " + agfC);


        }

        return agfC; 

    }


----------



## mucke (16. Nov 2009)

so ich habs ;D

static int spielzugComputer (int spielstand)
    {
        int agfC=0;

        if (spielstand % 4==0)
        {
            agfC += 3;
            System.out.println(" Computer nimmt: " + agfC);
        }
        else
        {
            do    
            {
                 agfC++;
            }
               while ((agfC + spielstand) % 4 != 0);
               System.out.println(" Computer nimmt: " + agfC);

        }

        return agfC;


----------



## Marco13 (16. Nov 2009)

Naja... angenommen der Spielstand ist
1 : 3 nehmen
2 : 2 nehmen
3 : 1 nehmen
4 : x nehmen
5 : 3 nehmen
6 : 2 nehmen
7 : 1 nehmen
8 : x nehmen...

Das was "net wirklich funzt" war von der Idee her schon fast richtig. (Genaugenommen war es das Gegenteil von richtig *wink* ). Schreib' die Liste oben mal vollständig auf, und in jeder Zeile noch das Ergebnis von "spielstand%4" dahinter...


----------



## mucke (16. Nov 2009)

Jo wie gesagt hab schon rausbekommen, ein post vorher^^. oder ist das noch immer suboptimal? 
Aber wie schon gesagt vielen Dank für deine Hilfe


----------



## Marco13 (16. Nov 2009)

Ja neee, ich meinte die Schleife ... die ist ja ... Naja  Man kann das ja direkt ausrechnen.

(Gut, der Fall, dass es um 2 Milliarden münzen geht, und die Schleife dann zu lange dauern würde, wäre jetzt weit hergeholt ... es geht um's Prinzip  )


----------



## mucke (16. Nov 2009)

ahhhhhhhhhh weiss schon was du meinst aber ich komm da net drauf, dafür hab ich irgendwie noch net den durchblick in java. Verrats mir doch einfach  oder schubs mich noch mehr in die richtung


----------



## Marco13 (16. Nov 2009)

Ich schubs doch schon die ganze Zeit   Und das hat auch nicht unbedingt was mit Java zu tun. Hast du die Liste mal vervollständigt? Siehst du keinen Zusammenhang zwischen "spielstand%4" und dem, was zurückgegeben werden muss?


----------



## mucke (16. Nov 2009)

bäää schäm, aber ichs sehs ums verrecken nicht ;(  hab die liste und das spielstand%4 gemacht und es ist im prinzip genau anders rum. Aber wie ich das jetzt umsetzt *kopfkratz* gibt es denn ein gegenteil von %  ???

1 : 3 nehmen    1
2 : 2 nehmen    2
3 : 1 nehmen    3
4 : x nehmen
5 : 3 nehmen    1
6 : 2 nehmen    2
7 : 1 nehmen    3
8 : x nehmen...


----------



## Marco13 (17. Nov 2009)

Stell dir vor, du hast in der Variablen "x" den Wert von "spielfeld%4" gespeichert. Für folgende Werte von x soll das jeweilige Ergebnis in einer Variable y gespeichert werden:
x = 3 : y = 1
x = 2 : y = 2
x = 1 : y = 3

Die Lösung steht hier in unsichtbarer Schrift, aber du wirst dich tierisch ärgern wenn du's mit der Maus markierst um es lesen zu können:
--->
y=4-x; oder: agfC=4-(spielstand%4);
<---


----------



## mucke (17. Nov 2009)

omg :autsch: ahhhh  logisch. Man oh man hat ich da ein Brett vorm kopf. Oh man vielen vielen dank


----------



## ARadauer (17. Nov 2009)

Falls du noch immer Probleme mit dem Programm hast, habe ich einen Tipp für dich. Setzt dich einfach einmal hin, nimm dir ein paar Münzen und spiel das Spiel 2-3 mal. Dann spielst du es nochmal und überleg dir, wie man das mit einem Programm machen könnte was du gerade machst...


----------



## mucke (17. Nov 2009)

^^ das spiel funktioiert jetzt perfekt genau so wie es soll .hier nochmal die endfassung

```
public class testat
    
{ 
    public static void main (String[] args) 
    {
        System.out.println("Erlaeuterung der Spielregeln:");
        System.out.println("");
        System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
        
              int spieler;
              {
                  System.out.println(" Wer soll beginnen? (0: Computer 1: Ich)");
                  spieler = Read.getInt();
              }
              if (spieler == 1) 
              {
                  System.out.println(" Spieler beginnt");
              }
              else if (spieler == 0)
              {
                  System.out.println(" Computer beginnt");
              }
              
              spiel (spieler);
             
    }
    static int spiel(int spieler)
    {
        
        int spielstand= 0; 
        spielfeld(spielstand);
        int gewinnS=0;
        int gewinnC=0;
        
        while (spielstand < 12)
        {
            int agfS = 0;
            int agfC = 0;
            
            if ( spieler == 1)
            {
                agfS = spielzugSpieler ();
                gewinnS+= agfS;
                System.out.println(" Spieler hat " + gewinnS*10 + " Cent");
                spieler--;
                
            }
            
            else
            {
               agfC = spielzugComputer (spielstand);
               gewinnC+= agfC;
               System.out.println(" Computer hat " + gewinnC*10 + " Cent");
               spieler++;
                
            }
            
            spielstand+= agfS + agfC;
            spielfeld (spielstand);

        }
        if (spieler==1)
        {
            System.out.println(" Computer hat gewonnen");
            System.out.println(" Computer hat insgesamt " + (90 + gewinnC*10) + " Cent gewonnen");
            System.out.println(" Spieler hat insgesamt " +  gewinnS*10 + " Cent gewonnen");
        }
        else
        {
            System.out.println(" Sie haben gewonnen");
            System.out.println(" Spieler hat insgesamt " + (90 + gewinnS*10) + " Cent gewonnen");
            System.out.println(" Computer hat insgesamt " +  gewinnC*10 + " Cent gewonnen");
        }
 
        return spielstand;
   
    }
    static int spielzugComputer (int spielstand)
    {
        int agfC=0;
        
        if (spielstand % 4==0)
        {
            agfC += 3;
            System.out.println(" Computer nimmt: " + agfC);
        }
        else
        {
            agfC +=4-(spielstand % 4);
            System.out.println(" Computer nimmt: " + agfC);
       
        }
        
        return agfC; 
         
    }
    static int spielzugSpieler ()
    {
       int agfS;
       System.out.println(" Wieviel Muenzen willst du nehmen? ");
       agfS = Read.getInt();

       return agfS;
       
    }   
    static void spielfeld (int spielstand)
    {
       if (spielstand == 12)
       {
           System.out.println(" x x x x x x x x x x X");
       }
       else
       {
           for (int i = 0; i < spielstand; i++)
           {
               System.out.print(" x ");
           }
           
           int rest = 11 - spielstand;
           for (int i = 0;i < rest; i++)
           {
               System.out.print(" o ");
           }
           System.out.print(" O \n");           
       }
    }
}
```

und nochmal vielen vielen vielen dank :toll::toll::toll:


----------



## Marco13 (17. Nov 2009)

Ja, könnte man halt alles noch vereinfachen... (teilweise auch deutlich)... also, solche _vermeintlichen_ Kleinigeiten, wie dass man statt

```
if (spielstand % 4==0)
        {
            agfC += 3;
            System.out.println(" Computer nimmt: " + agfC);
        }
        else
        {
            agfC +=4-(spielstand % 4);
            System.out.println(" Computer nimmt: " + agfC);
       
        }
```
auch

```
if (spielstand % 4==0)
        {
            agfC = 3;
        }
        else
        {
            agfC =4-(spielstand % 4);
        }
        System.out.println(" Computer nimmt: " + agfC);
[/Java]
schreiben könnte und so... das ist (um die Aufgabe abzugeben) wohl nicht wichtig, aber ... schau' vielleicht nochmal drüber, ob du noch solche Sachen entdeckst...
```


----------



## mucke (17. Nov 2009)

Jo hast recht. Werd da noch a weng was zusammenfassen. Thx


----------



## LuckyEric1986 (24. Nov 2009)

Also ich hab das selbe Problem wie mein Vorredner..
im Post #10 wird das Spiel erklärt...
Und ich komm auch nich weiter.
Ich bekomm Fehlermeldungen die ich so noch nie gesehn habe.
Hier mal der Quelltext:


```
// Testat.java

public class Testat1
{
	public static void main (String []args)
	{
		System.out.println("********************************************");
		System.out.println("*Das Spiel wird mit zwei Spielern gespielt.*");
		System.out.println("* Jeder der beiden Spieler setzt 1 Euro zu *");
		System.out.println("*10 mal 10 Cent. Diese werden in eine Reihe*");
		System.out.println("* gelegt, wobei 11 mal 10 Cent einzeln und *");
		System.out.println("*   am Ende 1 mal 90 Cent gestapel gelegt  *");
		System.out.println("*  werden. Nun darf jeder abwechselnd 1, 2 *");
		System.out.println("*  oder 3 Positionen der Reihe von Anfang  *");
		System.out.println("*  beginnend entfernen. Dieses Geld gehˆrt *");
		System.out.println("*    ihm. Es besteht Zugzwang. Wenn alle   *");
		System.out.println("* Positionen entfernt wurden, ist das Spiel*");
		System.out.println("*   zu Ende. Nat¸rlich hat derjenige, der  *");
		System.out.println("* Position 12 erreicht, Gewinn gemacht, der*");
		System.out.println("*      andere entsprechenden Verlust.      *");
		System.out.println("********************************************");

			int SpielerEingabe; 					// Wieviel M¸nzen der Spieler nimmt
			int SpielerStapel = 0;					// Wie groﬂ der Stapel des Spielers ist
			
			int PcEingabe;							// Wieviel M¸nzen der PC nimmt
			int PcStapel = 0;						// Wie groﬂ der Stapel des PC's ist

			int Wechsel;							// Das ist die Wechselfunktion			
			
			int Muenzen;
			
			int Beginner;
			
				System.out.println("Wer soll den ersten Zug machen?");
				System.out.println("Wenn Sie den ersten Zug machen mˆchten, druecken Sie die 1.");
				System.out.println("Wenn der Computer den ersten Zug machen soll, druecken Sie die 2.");
				Beginner = Read.getInt(); // Hier muss der Spieler eingeben wer beginnen soll!
			
			
			
			
			
			
	while (Muenzen < 12) 						// Die Schleife sagt aus, das wir 11 Stapel haben, den groﬂen Stapel ausgeschlossen
	{
		if (Beginner == 1)
			{
                System.out.println("Sie mˆchten also beginnen");
            }
			System.out.println("Sie sind dran.");
			SpielerEingabe = SpielzugSpieler();
			Muenzen += SpielerEingabe;						// Hier wird der M¸nzbetrag des Spielers erhˆht
			SpielerStapel += SpielerEingabe;
			Aufbau();
			
			if (Muenzen == 12)								// Wird bei erreichen des 12ten Stapels gedruckt!
			{
				System.out.println("Sie haben das Spiel f¸r sich entschieden und " + (SpielerStapel * 10 + 90) + " M¸nzen gesammelt.");
				System.out.println("Der Computer hat verloren und" + (PcStapel * 10) + "Muenzen gesammelt."); 
			}
		}
		else 
		{
		  {
		    System.out.println("Sie mˆchten also das der Computer beginnt");
		  }
			System.out.println("Der Computer ist dran.");
			PcEingabe = SpielzugPc();
			Muenzen += PcEingabe;
			PcStapel += PcEingabe;
			System.out.println("Der Computer nimmt " + PcEingabe + " Muenzen");
			Aufbau();
			
			if (Muenzen == 12)
			{
				System.out.println("Der Computer hat das Spiel f¸r sich entschienden und " + (PcStapel * 10 + 90) + " M¸nzen gesammelt.");
				System.out.println("Sie haben verloren und" + (SpielerStapel * 10) + "Muenzen gesammelt."); 
			}
		}
		
		if (Wechsel == 1)
		{
			Wechsel = 0;
		}
		else
		{
			Wechsel = 1;
		}
	}
 }
	
	static void Aufbau (int Muenzen);
	{
		if (Muenzen < 12)
		{
			for (int i = 0; i < Muenzen; i++)
			{
				System.out.print("x");							// Es soll x abgebildet werden, solange die Variable i kleiner ist, als die M¸nzen die 
			}													// genommen werden. Da am Anfang noch keine M¸nzen genommen wurden, werden 11 "x" abge.
			for (int i = 0; i < (12-Muenzen); i++)
			{
				System.out.print("o");							// F¸r die Anzahl der genommen M¸nzen, soll ein "o" angezeigt werden
			}
				System.out.print("O");							// Das "O" zeigt den groﬂen Stapel an
			
			System.out.println();								// Hier werden die System.out.print zusammengefasst!
		}
		else
		{
			System.out.println("xxxxxxxxxxxX");					// Hier wird das Spielfeld, wie es bei Spielende aussieht, abgebildet
		}
							
	}		

	static int SpielzugSpieler;
	{
		{
			System.out.println("Bitte w‰hlen Sie wieviele M¸nzen Sie nehmen mˆchten (Es herrscht Zugzwang)");
		}
	
		int SZ = Read.getint();						// SZ = Spieler Zug
		return SZ;
	}
	
	static int SpielzugPc (int PZ);
	{
		if (PZ % 4 == 0)							// Da Pc nicht auf die Gewinnerposition kommt
		{
			return 3; 								// nimmt er die Maximale Anzahl an M¸nzen
		}
		else 
		{
			return (4-(x % 4));						// Kann er in die Gewinnerposition kommen, nimmt der PC sie ein
		}
	}
	
}
```

Vielleicht hat ja jemand Zeit mir zu helfen.
Danke


----------



## ARadauer (24. Nov 2009)

1. Welche Fehlermeldung?
2. Bitte eigenen Thread aufmachen
3. Variablen schreibt man klein!


----------

