So würde ich vorgehen:
- Sortiere die Karten nach Wert. Das erleichtert praktisch viele der Erkennungen.
- Trenne die Werte in Einzelkarten, Zwillinge, Drillinge und Vierlinge. Behalte sortiere die Kategorien nach Größe.
- Überprüfe auf Flush.
- Überprüfe auf Straße.
- Gehe die Kombinationen von der höchsten durch, und breche ab wenn du eine gefunden halt.
Also etwa so:
- if karten.istFlush() und karten.istStraße() und karten.höchsteKarte().wert() = ASS then return ROYAL_FLUSH;
- if karten.istFlush() und karten.istStraße() then return STRAIGHT_FLUSH;
- if karten.hatVierling() then return FOUR_OF_A_KIND;
- if karten.hatZwilling() und karten.hatDrilling() then return FULL_HOUSE;
- if karten.istFlush() then return FLUSH;
- if karten.istStraße() then return STREET;
- ...
Die Zwischenergebnisse kannst du dann auch verwenden, um festzustellen, wer bei Ergebnis gewonnen hat: zum Beispiel das höhere Pärchen.
EDIT: Kniffel! ... wie bin ich denn bei Poker gelandet
Der Trick mit dem Einteilen der Würfelwerte in Kategorien (zweier, dreier, ...) klappt trotzdem. Sortieren macht bestimmt auch vieles leichter.