Permalänk

Poker i c++

Håller på att göra ett pokerspel i c++, har kommit ganska långt, skall bara fixa det sista när man skall räkna ut poängen för de "pokerhänder" som man har.

Alltså, man har placerat ut 25 kort i en kvadrat på 5*5. 5 kort i en rad eller kolumn bildar en "pokerhand", det finns alltså 10 pokerhänder sammanlagt (5 lodrätt, 5 vågrätt).
Det hela är uppbyggt med en dubbellista som heter kord[5][5]. Alltså om första kortet i första raden är hjärter 8 har jag tilldelat kord[1][1]="Hj8".
Men nu till saken, hur skall jag enklast göra för att räkna ut poängen för de 10 olika pokerhänderna? Jag kan ju säga att för att jämföra par t.ex. måste jag ju få ut siffrorna från korten i den t.ex första raden. Det kan jag göra på följande sätt, för att få ut 8:an i radens första kort skriver jag kord[1][1][2].
Alltså:

PROGRAMKOD-------------------ger utskrift:

cout <<kord[1][1]--------------Hj8
cout <<kord[1][1][0]-----------H
cout <<kord[1][1][1]-----------j
cout <<kord[1][1][2]-----------8

Följande skall jämföras:

Par----------------------------------1p
2par---------------------------------2p
Triss---------------------------------3p
Stege (alla i följd)----------------4p
Flush (alla i samma färg)--------5p
Kåk (triss+par)--------------------6p
Fyrtal--------------------------------7p
Straight Flush---------------------10p
Royal Straight Flush--------------50p

Väldigt tacksam för hjälp...

Permalänk

Jag skulle nog satsat på en bättre namngivning av korten "Hj8" 'r ju inte så smidigt, bättre ha en struct, typ så här:

struct Kort{
int value;
int color;
};

Kort kord[5][5];

Då kan ju en 1:a i color betyda Hjärter, 2:a Spader osv.
value innhåller bara kortets värde, dvs 1-13, där 1 betyder ess, 2 en tvåa osv.

Permalänk

Jo, men saken är den att det taget mig flertal timmar att bygga upp vad jag nu har, jag skulle gärna vilja fortsätta på det som jag byggt hittills. Du vet inte möjligtvis hur jag skall göra för att klara av poängräkningen med det jag har för tillfället?

Permalänk

Okej, förstår att du inte vill ändra hela koden

Det ska väl inte vara så svårt att fixa poängberäkningen

* Dela upp färg och poäng för alla kort och lägg de i en array av sådana struct som jag visade innan.

* Sedan gör du en frekvenstabell över valören på korten, dvs en array med 13 int:ar som du initierar till 0. Sen loopar du igenom arrayen med korten och för varje kort kör du: frekvenstabell[kort[i].value-1]++;

Par----------------------------------1p
Sedan är det här bara att loopa igenom frekvenstabellen och se att endast en valör har 2 i antal. I så fall är det Par.

2par---------------------------------2p
Loopa igenom frekvenstabellen och se att två valörer har 2 i antal. I så fall är det Två Par.

Triss---------------------------------3p
Loopa igenom frekvenstabellen och se om en valör har 3 i antal. I så fall är det Triss.

Straight (alla i följd)----------------4p
(får fundra lite mer på denna)

Flush (alla i samma färg)--------5p
loopa igenom arrayen av Kort structs och kolla att alla har samma värde för color

Kåk (triss+par)--------------------6p
reglerna för triss och par måste gälla.

Fyrtal--------------------------------7p
Loopa igenom frekvenstabellen och kolla om det är någon valör som har 4 i antal.

Straight Flush---------------------10p
reglerna för straight och flush måste gälla

Royal Straight Flush--------------50p
reglerna för straight och flush måste gälla plus att färgen är hjärter och straighten har ess i topp.