Autor Beitrag
Ebil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131



BeitragVerfasst: Di 23.12.08 00:30 
Hi leute,
Hat jemand von euch eine idee wie ich die Poker spiel kombinationen (texas hold'em) am besten erkennen kann?
Ich habs im moment so gemacht das alle karten einen wert aus der basis von 2 zugeteilt wurde zb:
1->'A-P ';
2->'A-H ';
4->'A-Ka ';
8->'A-Kr ';
Wobei P,H,Ka,Kr Piek Herz Karo kreuz sind.
Das ganze geht so weiter für alle 52 karten, was am ende natürlich eine riesen zahl ergiebt.
Durch den bitweisen und operator kann ich nun das blatt herrausfinden => 1+4=6= A-H und A-Ka.
Damit könnte man die Kombinationen rausfinden und realisieren.

Kombinationen die nicht viele möglichkeiten haben gehen ja noch, aber für alle pärchen jeweils wird das ne ganze menge auszurechenen und aufzuschreiben, um dann herrauszufinden das der spieler ein pärchen hat.
Schwer zu erklären, ich suche eigentlich nur eine relativ einfache möglichkeit herrauszufinden was der spieler nun für ein blatt hat und ihn entsprechend gewinnen oder verlieren zu lassen gegen das blatt des computers.
Villeicht kennt jemand auch ein OpenSource spiel bei dem ich mal reinschauen kann.

Gruß
Ebil
Sylvus
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 195



BeitragVerfasst: Di 23.12.08 02:04 
willst du es nicht einfach nach Wertigkeiten aufbauen?
Also als erste prüfst du ob die einen StraighFlush haben, wenn nicht ob sie ein Vierling.... wenn du irgendwo zu dem Entschluss kommst, dass beide das gleiche haben nimmst du halt noch ne Prozedur, die schaut wer die höhere Karte hat. Ist doch simpel oder?

Grüße Sylvus
TmpDir
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53
Erhaltene Danke: 3

Win7HP Win8.1 Deb/Ubuntu
C# [Delphi 6 Pro, Delphi 2005 PE, TurboDelphi PE]
BeitragVerfasst: Di 23.12.08 02:52 
Nimm
C=Club S=Spade D=Diamond H=Heart
A,2,3,4,5,6,7,8,9,T,J,Q,K

_________________
repeat :autsch: until :think:


Zuletzt bearbeitet von TmpDir am Mi 24.12.08 02:17, insgesamt 2-mal bearbeitet
Ebil Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131



BeitragVerfasst: Di 23.12.08 02:52 
Naja vllt mach ichs mir auch einfach zu kompliziert, aber ich checks einfach nicht.
Wie teste ich ob der spieler/computer AA, BB, 22, 55 oda so hat? Am besten natürlich noch mit den jeweiligen farben.

Ebil

//Edit:
Hilft mir nicht wirklich TmpDir. Mir gehts imo nicht um die bezeichnung.
TmpDir
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53
Erhaltene Danke: 3

Win7HP Win8.1 Deb/Ubuntu
C# [Delphi 6 Pro, Delphi 2005 PE, TurboDelphi PE]
BeitragVerfasst: Di 23.12.08 03:20 
Dann kommst du um Sylvus Vorschlag nicht drumherum.

Die Bezeichnungen von mir sind eigentlich nur dafür, das man immer 2 Byte pro Karte hat.

_________________
repeat :autsch: until :think:
der organist
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Di 23.12.08 14:38 
Außerdem würde ich intern den J,Q,K zu 11,12,13 umwandeln, wie will man j,Q,K vergleichen?

_________________
»Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
TmpDir
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53
Erhaltene Danke: 3

Win7HP Win8.1 Deb/Ubuntu
C# [Delphi 6 Pro, Delphi 2005 PE, TurboDelphi PE]
BeitragVerfasst: Di 23.12.08 15:35 
Als Anregung:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
TCardType = (cHeart, cDiamond, cSpade, cClub);

TCard = class(TObject) 
  CardType : TCardType;
  Value    : Integer;

THand = array of TCard;  // Oder ObjektListe an Stelle von Array
TDeck = array[1..52of TCard;

function isRoyalFlush(ATischkarten, AHandKarten: THand; var Ergebnis:THand):Boolean;
begin
  // code here
end;

function isStraight(ATischkarten, AHandKarten:THand; var Ergebnis:THand):Boolean;
begin
  // code here
  // Bei Vergleichen allerdings die doppelte Wertigkeit vom A berücksichtigen (A,2,3,4,5) order (T,J,Q,K,A) 
end;

function AddCardToHand(ACard:TCard; AHand:THand);
...

_________________
repeat :autsch: until :think:
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Di 23.12.08 15:46 
Als Anschauungs-Objekt, wenn gleich schlecht und umständlich gecodet, kannst du dir mal meinen Hole-Cards rechner anschauen:

www.delphi-forum.de/...amp;highlight=prodds

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Ebil Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131



BeitragVerfasst: Di 23.12.08 18:45 
Danke euch beiden, damit werd ich wohl erstmal klar kommen ^^.

Ebil