Frage

Ich entwickle ein Pokerspiel in C #. Im Moment versuche ich die Spieler Hand Score RegEx zu bekommen. Ich suche die Zeichenfolge (bestehend aus dem Karten-Anzug und Nummer) und sucht Anzüge oder Zahlen die RegEx übereinstimmen. Wenn ich 2 Ursachen bekommen dann hat der Spieler ein Paar, 3 Einsätze er 3 einer Art hat.

Ich habe 3 Klassen zur Zeit, eine Karte Klasse (mit Nummer und Anzug), ein Deck Klasse (enthalten 52 Karten) und eine Hand-Klasse, die fünf Karten aus dem Deck neu gemischt wird.

Deck-Klasse hat eine shuffleDeck(); Hand Klasse hat die Funktionen, die Partitur zu berechnen (ist in diesen Funktionen, die ich RegEx verwende).

erzeuge ich die Zeichenfolge auf das ich RegEx verwenden, indem die 5 Anzüge und Zahlen, dass die Hand hat.

Ist das eine gute Idee, oder soll ich tun es eine andere Art und Weise, wenn ja, wie?

Vielen Dank für Ihre Hilfe

PS. Ich bin einer der unerfahrene Programmierer, die ein neu erlernten Werkzeug für alles verwenden möchten

War es hilfreich?

Lösung

Ich glaube nicht, dass ein regulärer Ausdruck der geeignete Weg ist, damit umzugehen. Sie sollten wahrscheinlich eine komplexere Darstellung einer Hand als eine Zeichenfolge werden.

Andere Tipps

Sie haben nicht viel Detail zur Verfügung gestellt, aber was von dem, was ich gelesen habe, ich nehme an, Sie sind nicht die OOP sehr weit schieben ...

Ich würde eine Karte Klasse, die einen Rang und Anzug Klasseninstanzen hat. Ich würde dann ein Deck Klasse, die schlurfenden Griffe / Umgang ...

Ich würde dann eine Hand Klasse, die Ihre Pokerhand von n-Karte Objekten ...

enthalten würde

Auf diese Weise können Sie Regeln aufbauen kann jede Hand Objekt zu bewerten, so flexibler und dehnbarer in der Zukunft zu sein ... sagen, wenn Sie ein anderes Kartenspiel machen / hinzufügen Unterstützung für eine andere Variante von Poker ...

Reguläre Ausdrücke all dies zu tun, scheint eine ziemlich schlechte Wahl zu sein.

würde ich stimme mit den anderen, dass Regex wie eine schlechte Wahl zu sein scheint. Es könnte mit Paaren arbeiten, 3 von einer Art, 4 eine Art. Allerdings könnte es etwas schwierig (oder unmöglich) erhalten, sobald Sie an den Händen wie Wallungen, Straights Suche starten, und 2 Paar.

Ich denke, die beste Lösung, um die Karten aus bester Hand schlechteste Hand, zu bewerten wäre, wie hier gezeigt , und sobald Ihr Fund ein Spiel, dann ist das deine Hand. Dadurch wird sichergestellt, dass Sie nicht mehr als 4 von einer Art für 2 Paar Verwechseln Sie. Oder ein Straight Flush für nur einen gerade, oder einfach nur einen Flush. Ich würde mit mmattax gehen und ein Objekt für die Karte erstellen, und ein Objekt für die Hand, dann können Sie die Karten in jeder Hand zu bewerten, um zu sehen, ob sie die erforderlichen Kriterien für jede Hand erfüllen.

Ich denke, Primzahlen eine gute Lösung für das sind. betrachten:

//            D H S C    
colors =    [7,5,3,2]

//           A  Q  K  J  T  9  8  7  6  5  4  3  2    
ranks =     [61,59,53,43,41,37,31,29,23,19,17,13,11,61]

eine einzigartige Karte wird durch eine Farb Primzahl * a Rang Primzahl identifiziert. (Zum Beispiel als die Diamanten: prime = 7 * 61)

so ein entiere einzigartiges Deck oder combinaison identifiziert durch prime * prime * prime * prime * prime

, wenn es ein Flush von Diamanten, die 5 Karten Deck Primzahlen-ID muss von divisble (mod = 0) durch den Flush von Diamanten ID (7 ^ 5 weil Diamanten Farbe Primzahl 7)

eine Zeichenfolge Mit der Hand zu repräsentieren scheint wie eine schlechte Entscheidung. Meine Empfehlung wäre, eine Enum zu verwenden, um den Anzug zu vertreten und ein anderer den numerischen Wert der Karte darzustellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top