Läste i den föra Java tråden som var uppe med hur man skall randomisera en lek på bästa sätt blev inspirerad så började bygga en eget poker spel. Du är alldeles för generell i din problemformulering. Försök att beskriva ditt problem lite bättre så kanske vi kan hjälpa till! vet inte hur jag skall vara mindre generell är inte ute efter något kod exempel eller så utan mer hur tänget skall vara för att på bästa sätt se vad man har på sin hand. jag hittade den här algoritmen på nätet: Det verkar som den algoritmen missar A-2-3-4-5-stege, och att kolla på näst högsta kort (och tredeje högsta) om högsta är lika. Alltså att 2-2-6-J-K är högre än 2-2-6-9-KMer om poker
Nu till min fråga hur skall man på bästa sätt ta fram på vad man har på sin hand?
Började med olika funktioner en för varige upp sättning, en för par två par triss också så vidare, men det kändes inget bra någon som har något bättre alternativ...
Tacksam för alla svar
//ViktorSv: Mer om poker
/AndreasSv: Mer om poker
Några idéer på hur detta skall lösas,
kan för stå om det är lite flummigt.Sv: Mer om poker
<info>
This algorithm is by no means the best or fastest way, but it should solve
the problem.
1) Sort the cards by rank. That way you can quickly see if you have pairs
(or three/four of a kind) or a straight.
2) Check to see if you have a straight. Iterate over the hand and make sure
each card's rank is one higher than the one previous.
3) Check for a flush. Iterate over each card to see if each suit is the
same.
4) Now check your results from step 2 & 3. If both are true, then you have
a straight flush. If neither is true continue checking. If one or the
other is true, then stop checking.
5) The rest of the hands are based on matching ranks of cards (i.e. pairs).
I would suggest creating an integer array of 14, setting the inital values
to zero. Now iterate through your hand. For each card you come across
increment the value in the array at that rank index. For example, the 2 of
spades/hearts/clubs/diamonds would be indexed at zero (since java arrays
start at zero, just subtract two from the card, so a 10 would be at 8, etc.
This makes the ace a rank of 14 and the twelfth index), so every 2 you get
increment that index by one. You shoudl now have the tallies for each card.
6) Go through the array and see if there are any counts of 4's (there will
be at most 1). If so you have four of a kind.
7) Go through the array to see if there are any 3's (there will be at most
1). If you found one, then you may have a full house or a 3-of-a-kind
depending on the next step.
8) Go through the array to see if there are any 2's. If you find one and
you already found a three, you have a full house. If you found two 2's,
then you have 2 pair. One 2, means just a pair. Found none, means no pair.
9) Now you just have to take into highest card if no other hand was found.
Also, if you have a tie (i.e. both the player and dealer have 2pair), then
you have to find the highest card to see you won.
</info>Sv: Mer om poker
Ska det användas i en tournament eller en mot en?
En mot en så är det nog bäst att göra något i stil med den givna algoritmen (men även ta med A-2-3-4-5 som stege), men med viss modifikation, där man istället jämför händerna uppifrån.
Har någon straight flush?
Har någon fyrtal?
Har någon kåk?
...
Om ena har det, men inte andra så har den personen vunnit.
Om båda har det så kollar man uppifrån; vem har högsta kort av de högsta, vem har högsta kort av de näst högsta, osv. Då borde det bli en korrekt koll av händerna.
I en tournament borde man kunna använda samma princip som en mot en, men att börja med första som vill visa korten, och andra som vill visa korten. Sen så tar man koll mot den som har högst kort dittils.