Einzelnen Beitrag anzeigen

Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Texas Hol'dem Gewinner-Erkennung

  Alt 20. Jun 2007, 09:50
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:
if HandIsRoyalFlush(SpielerHand) then
 begin
 showmessage('Wow, Cheater!');
 break;
 end;

if HandIsstraightFlush(Spielerhand) then
 begin
 showmessage('SF');
 break;
 end;
Das Break sorgt dafür, dass bei einem Vierling nicht auch noch 2 Paare erkannt werden.

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:
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;
Aus denen kannst du dann den RoyalFlush zusammenbauen: if IsFlush and IsStraigt and karteNr5.Wert=13(Ass) then true; drilling kannst du überprüfen, in dem du alle zusammenhängenden dreiergruppen prüfst, usw

Zitat:
Bei zwei gleichen Gewichtungen an erster Stelle musst du noch die Symbole auf den Karten mit einbeziehen.
Nein. Die Symbole sind alle gleichwertig. Bei gleichen Händen wird der Pot mittig geteilt. Passiert meistens z.B. in so Fällen, wenn offen eine straight oder sowas liegt.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat