Ben bezig met het ontwikkelen van een pokergame.
Ik weet van vier personen hun `handen` ( = vijf kaarten die ze in bezit hebben).
De waarden van de vijf kaarten, per speler, heb ik als volgt (opgeslagen in een array);
Tevens heb ik alle mogelijke scorende combinaties in een (multidim.) array opgeslagen, waarbij de hoogst winnende combinatie (Royal Flush) de hoogste punten heeft; zie:
Wat is met deze gegevens het gemakkelijkste alghoritme om de persoon met de hoogste hand te verkijgen? Ik begrijp dat van bovenaf gewerkt moet worden (geen royal flush gevonden, zoek verder naar straigh flush, etc.).
Daarnaast moet de vergelijking tussen de `handen` van de spelers ook gemaakt worden als ze slechts twee kaarten in de hand hebben, vervolgens bij drie kaarten, etc. Ik heb al heel wat gezocht maar wellicht dat iemand mij even op weg kan helpen; gemakkelijk is het niet.
Mijn eigen bedachte mogelijk oplossing is als volgt;
Maak van iedere persoon zijn `hand` een vaste string:
persoon_a = 's6hvrhsas7';
..waarbij de waarden van de kaarten onderling gesoorteerd zijn op kleur, en vervolgens op waarde.
Vervolgens maak ik van elke scorende combinatie in de array tevens tekststrings. Vervolgens ga ik de user-strings vergelijken met de scorende strings, wel u snapt het, etc. Echter, er zijn dan al een paar problemen te bedenken, want bij bijvoorbeeld een Full House zal er geen match komen.
Een alternatief dan weer is om per persoon elke denkbare string ( maximaal 5 ^ 5 ) van zijn `hand` te maken en daar de vergelijkingen mee te gaan maken.
Ik weet van vier personen hun `handen` ( = vijf kaarten die ze in bezit hebben).
De waarden van de vijf kaarten, per speler, heb ik als volgt (opgeslagen in een array);
code:
1
2
3
4
5
| s6 = schoppen zes kt = klaver tien (de tien wordt tevens als letter genoteerd, zodat alle combinaties van een dek kaarten uit twee letters/cijfers bestaan) rh = ruiten heer ha = harten aas k3 = etc... |
Tevens heb ik alle mogelijke scorende combinaties in een (multidim.) array opgeslagen, waarbij de hoogst winnende combinatie (Royal Flush) de hoogste punten heeft; zie:
code:
1
2
3
4
5
6
7
8
9
| // pseudocode: //royal flush z = array(sa, sh, sv, sb, st) waarde[z] = 9999 // straight flush y = array(kv, kb, kt, k9, k8) waarde[y] = 9990 // etc... |
Wat is met deze gegevens het gemakkelijkste alghoritme om de persoon met de hoogste hand te verkijgen? Ik begrijp dat van bovenaf gewerkt moet worden (geen royal flush gevonden, zoek verder naar straigh flush, etc.).
Daarnaast moet de vergelijking tussen de `handen` van de spelers ook gemaakt worden als ze slechts twee kaarten in de hand hebben, vervolgens bij drie kaarten, etc. Ik heb al heel wat gezocht maar wellicht dat iemand mij even op weg kan helpen; gemakkelijk is het niet.
Mijn eigen bedachte mogelijk oplossing is als volgt;
Maak van iedere persoon zijn `hand` een vaste string:
persoon_a = 's6hvrhsas7';
..waarbij de waarden van de kaarten onderling gesoorteerd zijn op kleur, en vervolgens op waarde.
Vervolgens maak ik van elke scorende combinatie in de array tevens tekststrings. Vervolgens ga ik de user-strings vergelijken met de scorende strings, wel u snapt het, etc. Echter, er zijn dan al een paar problemen te bedenken, want bij bijvoorbeeld een Full House zal er geen match komen.
Een alternatief dan weer is om per persoon elke denkbare string ( maximaal 5 ^ 5 ) van zijn `hand` te maken en daar de vergelijkingen mee te gaan maken.
[ Voor 23% gewijzigd door Verwijderd op 09-12-2005 16:48 ]