Java Kartenspiel UNO

Trisa

Mitglied
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!
 
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
 
Also ich habe eine Match Methode, die in etwa so aussieht:
Java:
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;
 
Zuletzt bearbeitet von einem Moderator:
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
 

Zurück
Oben