![]() |
Texas Hol'dem Gewinner-Erkennung
Moin Moin liebe Gemeinde,
Eben ein bisschen OT :-D Ich habe jetzt seit neustem einen Nebenjob als Dealer bei Pokerturnieren. Dabei solte man so schnell wie möglich beim Showdown die Gewinnerhand erkennen. Extra dafür wollte ich eine Software schreiben, bei der Zufallsmäßig zwei bis 4 Spieler (virtuell) beim Showdown mitmachen. Dann, nach einer gewissen Zeit wird dann vom Programm angesagt, wer gewonnen hat. Dies soll als Training zur schnellen Erkennung der Gewinnerhand dienen. Jetzt aber zu meinem Problem. Ich hab im Moment keien Plan, wie ich das umsetzen könnte, dass das Programm erkennt, welche Hand denn die Gewinnerhand ist und womit der Betreffende gewonnen hat. Könnte mir vielleicht jemand von euch helfen? Vielen Dank |
Re: Texas Hol'dem Gewinner-Erkennung
Als erstes würde ich mir eine Routine schreiben die bestimmte Konstellationen von Karten erkennt (Paar, Drilling, Full House, etc.).
Anhand dieser Konstellation gewichtest du die Blätter der einzelnen Spieler. Bei zwei gleichen Gewichtungen an erster Stelle musst du noch die Symbole auf den Karten mit einbeziehen. |
Re: Texas Hol'dem Gewinner-Erkennung
Du könntest einfach eine Liste mit allen möglichen Händen machen (High Card bis Royal Flush) und dann jeweils mit der Hand des Spielers vergleichen.
Programmtechnisch am besten als Schleife von oben nach unten. Also
Delphi-Quellcode:
Das Break sorgt dafür, dass bei einem Vierling nicht auch noch 2 Paare erkannt werden.
if HandIsRoyalFlush(SpielerHand) then
begin showmessage('Wow, Cheater!'); break; end; if HandIsstraightFlush(Spielerhand) then begin showmessage('SF'); break; end; Dann musst du noch die einzelnen Funktionen schreiben. Da kannst du recht BruteForce vorgehen, da du immer nur wenige Hände betrachten musst. Also jede Möglichkeit 5 Karten zusammenzunehmen ausprobieren. Wenn du dann fünf Karten hast, solltest du die aufsteigend sortieren. Dann die einzelnen Funktionen könntest du z.b. so machen:
Delphi-Quellcode:
Aus denen kannst du dann den RoyalFlush zusammenbauen:
IsFlush: for i=2 to 5 do
if notkarteNrI.Farbe=KarteNr1.Farbe break; Is straigt: schleife, if not karteNr(i+1).Wert=KarteNr(i).Wert+1 break;
Delphi-Quellcode:
drilling kannst du überprüfen, in dem du alle zusammenhängenden dreiergruppen prüfst, usw
if IsFlush and IsStraigt and karteNr5.Wert=13(Ass) then true;
Zitat:
|
Re: Texas Hol'dem Gewinner-Erkennung
Zitat:
|
Re: Texas Hol'dem Gewinner-Erkennung
War ja nur ein schneller hack zur Demo. Ich persönlich mag solche extremen else-Schachteln nicht, da es doch unübersichtlich wird.
|
Re: Texas Hol'dem Gewinner-Erkennung
Leicht OT: Es gibt bundesweit öfters einige Dealerkurse die von Casinos zu einem annehmlichen Preis veranstaltet werden. Über Google sollte man leicht solche Angebote finden. ;)
Grüße |
Re: Texas Hol'dem Gewinner-Erkennung
Jo erst einmal danke für eure Tipps.
Sorry, dass ich mich jetzt erst melde, hatte aber viel zu tun. Leicht OT: Ich hab an so einem Dealerkurs teilgenommen. Der war für mich aber kostenlos. Hat ein riesen Spaß gemacht. Fruee mich schon auf Freitag, da hab ich dann mein erstes Turnier bei dem ich deale. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz