Karten sortieren nach Rang und Farbe

Jambolo

Mitglied
Moin, bräuchte hilfe bei dem sortieren von karten, die erste priorität wäre die karten gemäß des ranges zu sortieren: ACE vor KING, KING vor DAME, DAME vor Bube usw.... und die zweite priorität ist gemäß der farbe : CLUBS vor SPADES, SPADES vor HEARTS und als letztes DIAMONDS. habe das mit den rängen hinbekommen und hänge seid 3 std an den suits bzw farbe fest, weiß net wie ich das hinbekomme.
Java:
public class Sortieren implements Comparator<Card> {

    @Override
    public int compare(Card c1, Card c2) {
        int compare = c2.getRank().value() - c1.getRank().value();
        if (compare == 0) {
            // mit den farbwerten ......

        }
        return compare;
    }
}
 
alles gut habs hinbekommen
Die aufgabe war ja, dass ich einerseits nach dem rang sortieren soll (C5,C4,C3....) und nach dem Suit (Wenn HQ,DQ und SQ als Karten kommen, soll erstmal SQ dann HQ und dann DQ geprinted werden...) hab einfach noch eine Methode erstellt welche den ordinal der Farbe herausfindet und dementsprechend das mit dem compare eingebunden
Java:
public int compare(Card c1, Card c2) {
        int cmp = c2.getRank().value() - c1.getRank().value();
        if (cmp == 0) {
            cmp = valueSuit(c2) - valueSuit(c1);

        }
        return cmp;
    }

komm so auf mein ergebnis 🙂
 
alles gut habs hinbekommen
Die aufgabe war ja, dass ich einerseits nach dem rang sortieren soll (C5,C4,C3....) und nach dem Suit (Wenn HQ,DQ und SQ als Karten kommen, soll erstmal SQ dann HQ und dann DQ geprinted werden...) hab einfach noch eine Methode erstellt welche den ordinal der Farbe herausfindet und dementsprechend das mit dem compare eingebunden
Java:
public int compare(Card c1, Card c2) {
        int cmp = c2.getRank().value() - c1.getRank().value();
        if (cmp == 0) {
            cmp = valueSuit(c2) - valueSuit(c1);

        }
        return cmp;
    }

komm so auf mein ergebnis 🙂
Oder du fragst einfach direkt den ordinal ab 🙂
Ich würde auch die Ranks als Enum abspeichern (hast du vielleicht eh schon). Alles, wovon es eine genau definierte Menge gibt, eignet sich dafür. {One, Two, ... Jack, Queen, King, Ace}

Und nachdem jede Karte einzigartig ist, könnte man selbst die Klasse Card als Enum erstellen, jede Card mit einer eigenen Kombination aus Farbe und Wert, aber das wäre vielleicht etwas Overkill.
 

Zurück
Oben