# Java Kartenspiel UNO



## Trisa (21. Nov 2015)

Hallo liebe Forumsmitglieder,

ich sitze gerade vor der Aufgabe Uno in java zu programmieren und der Ansatz besteht auch schon. Eine Regel des Spiels besagt aber, dass ich eine PLUS4-Sonderkarte nur legen darf, wenn keine andere Karte passt (Farbe oder Zahl). Ich hab jedoch überhaupt keine Idee, wie ich den Kartenstapel als String darauf testen soll.
Würde mich über Ideen und Anregungen von euch freuen!
Danke schonmal!


----------



## Khal Drogo (21. Nov 2015)

Guten Morgen, 

um dir da wirklich hilfreiche Tipps geben zu können, müssen wir erstmal genauer wissen, wie du das ganze bis jetzt angegangen bist. 
Grundsätzlich hört es sich für mich so an, als müsstest du nur die oberste Karte auf dem Stapel mit deinen Handkarten vergleichen, indem du über die zweiteren iterierst. 

Mit freundlichen Grüßen 
Xelsarion


----------



## Trisa (21. Nov 2015)

Also ich habe eine Match Methode, die in etwa so aussieht:

```
static int matchKarten (int lastMatch, String gewaehlteKarte, String karteTisch) {
       boolean keinTrefferp;
       int spielsituation = 0;
       char wertKarteGew =' ';
       char farbeKarteGew = ' ';
    
       char wertKarteTisch = karteTisch.charAt (karteTisch.length () -2);
       char farbeKarteTisch = karteTisch.charAt (karteTisch.length () -1);
        
       if (!(gewaehlteKarte.equals("0"))) {
          wertKarteGew = gewaehlteKarte.charAt(gewaehlteKarte.length() -2);
          farbeKarteGew = gewaehlteKarte.charAt (gewaehlteKarte.length () -1);
            
       }
       keinTrefferp=true;   
            
       if (lastMatch == MATCH_PLUS_2)  { 
           if (!(gewaehlteKarte.equals("0"))) {
             if ((wertKarteGew == PLUS_2) || (wertKarteGew == PLUS_4)) {  /* Karte darf gelegt werden */
                 spielsituation = MATCH_KETTE_PLUS_2;
                 keinTrefferp = false;
             }
          } 
          else {
                  spielsituation = MATCH_ENDE_KETTE_PLUS_2;
                  System.out.println ("Spieler muss Karten ziehen.");
                  keinTrefferp = false;
          }
       } 
        if (lastMatch == MATCH_PLUS_4)  { 
           if (!(gewaehlteKarte.equals("0"))) {
             if (wertKarteGew == PLUS_2){  /* Karte darf gelegt werden */
                 spielsituation = MATCH_KETTE_PLUS_2;
                 keinTrefferp = false;
             }
             if (wertKarteGew == PLUS_4){
                 spielsituation = MATCH_KETTE_PLUS_4;
                 keinTrefferp = false;
             }
          } 
          else {
                  spielsituation = MATCH_ENDE_KETTE_PLUS_4;
                  System.out.println ("Spieler muss Karten ziehen.");
                  keinTrefferp = false;
          }
       } 
       if (keinTrefferp == false) {
           return(spielsituation);
       }
       if (gewaehlteKarte.equals("0")) {
          spielsituation = KEINE_ABLAGE;
          keinTrefferp = false;
       }
       if (keinTrefferp == false) {
           return(spielsituation);
       }
       keinTrefferp = true;

        switch (wertKarteTisch) {
             case '0': case '1': case '2': case '3': case '4': case '5':
             case '6': case '7': case '8': case '9':     
                if ((wertKarteGew == wertKarteTisch) || (farbeKarteGew == farbeKarteTisch)) {
                   keinTrefferp = false;
                   spielsituation = MATCH_NORMAL;
                } else {
            
                if  (wertKarteGew == AUSSETZEN) {
                    if (farbeKarteGew == farbeKarteTisch) {
                        keinTrefferp = false;
                        spielsituation = MATCH_AUSSETZEN;
                    }   
                } else {
            
                if (wertKarteGew == PLUS_2) {
                    if (farbeKarteGew == farbeKarteTisch) {
                        keinTrefferp = false;
                        spielsituation = MATCH_PLUS_2;                       
                    }
                } else {
            
                if (wertKarteGew == PLUS_4) { /* ! kann nur gelegt werden, wenn keine andere Karte passt */
                    keinTrefferp = false;
                       spielsituation = MATCH_PLUS_4;                                       
                    }  else {
      
                if (wertKarteGew == FARBWAHL) {  /* kann immer gelegt werden */
                    keinTrefferp = false;
                    spielsituation = MATCH_FARBWAHL;                                 
                }}}}}
                break;
```


----------



## Trisa (21. Nov 2015)

und dann rufe ich in meiner main methode jeweils die spielsituation in einer switch -> case funktion auf


----------



## Khal Drogo (21. Nov 2015)

Also erstens den Code bitte als solchen formatieren. Dann solltest du vielleicht ein paar Kommentare hinzufügen, wenn du willst, dass wir helfen können, so ist das ganze nämlich sehr unübersichtlich und etwas kryptisch, da ja auch nicht alles angefügt ist. 

Mit freundlichen Grüßen 
Xelsarion


----------

