Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C++] Pokerserver: Sidepot

Pagina: 1
Acties:

  • vdvleon
  • Registratie: Januari 2008
  • Laatst online: 08-06-2023
Ik kan alleen je hulp vragen als je side pot systeem begrijpt van Texes Hold'em poker.

Ik ben bezig met een eigen poker poker server. Het is een gratis Sit & Go systeem, meerdere tafels en per tafel zijn eigen toernooi.

Het probleem is nu, dat ik er even niet uitkom hoe ik de side pot's moet bijhouden. Want als iemand all in gaat moet je aan het einde weten hoeveel die persoon krijgt. Dit kan best ingewikkeld worden als er mensen meer inzetten als jouw en later folden etc.

Heeft iemand hiertoevallig zelf al eens over nagedacht of een script liggen... alle hulp is welkom.

Leon

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 14:39
Op zich hoef je de side pot niet eens los bij te houden, als je gewoon bijhoudt hoeveel iedere speler ingezet heeft. Op het eind kijk je dan wie de winnaar is; als die persoon minder heeft ingezet dan andere spelers die niet gefold hebben, dan krijgt hij maar een deel van de pot, en met de rest ga je verder met de volgende persoon.

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Heb je zelf al iets opgezet? Want dit lijkt me nou niet erg ingewikkeld om bij te houden toch? Je maakt een lijst met alle sidepots en wie hoeveel er in stopt en op het einde kijk je hoeveel iedereen krijgt adv de winnaar.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

En voor het laten zien van de pots is het vergelijkbaar. De main pot is net zoveel als de laagste inzet. Side pot #1 is het verschil tussen de laagste inzet en de op één na laatste inzet. Side pot #2 weer tussen éénna en tweena laatste inzet, etc.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 12:19

pietje63

RTFM

Soultaker schreef op maandag 05 mei 2008 @ 20:47:
Op zich hoef je de side pot niet eens los bij te houden
Bij de meeste pokergames krijg je deze realtime te zien.

Niet te volgen verhaal dat niets meer toevoegt \/
Wat hersenspinsels
- je hoeft geen sidepot-check te doen totdat er iemand all-in gaat (als er meer wordt gebet dan een speler na jou nog heeft is er geen sprake van een side-pot totdat deze speler callt)
- op het moment dat iemand all-in gaat kijken of hij hiermee volledig called/ een raise maakt
Zo ja -> zolang er niet meer wordt geraised geen side-pot
Ze nee (of een raise daarna) -> sidepot

Berekenen sidepot kan als volgt:
- hele spel totale bet per persoon bijhouden
-> indien een speler WINT terwijl een andere speler meer heeft gebet, dan krijgt hij dit meerdere niet
-> vervolgens wordt er gekeken naar de nummer twee. Heeft deze nog een rest-bet dan krijgt deze persoon deze rest-bet en tevens (maximaal) dat bedrag van de overige spelers
(etc tot laatste spelers)

Wat dan over blijft is het real-time berekenen van de side-pot. Dit zou moeten kunnen met bovenstaande logica.
.oisyn schreef op maandag 05 mei 2008 @ 21:17:
En voor het laten zien van de pots is het vergelijkbaar. De main pot is net zoveel als de laagste inzet. Side pot #1 is het verschil tussen de laagste inzet en de op één na laatste inzet. Side pot #2 weer tussen éénna en tweena laatste inzet, etc.
Klopt niet helemaal, aangezien niet iedereen op hetzelfde moment bet.

[ Voor 17% gewijzigd door pietje63 op 05-05-2008 21:24 ]

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Key observation: Een side-pot wordt alleen gemaakt wanneer er iemand all-in gaat, en de pot groeit (of al gegroeid is) boven dit all-in bedrag. Voor elke side-pot is er dus minstens 1 speler die dit bedrag niet kan betalen.
Soultaker schreef op maandag 05 mei 2008 @ 20:47:
Op zich hoef je de side pot niet eens los bij te houden, als je gewoon bijhoudt hoeveel iedere speler ingezet heeft. Op het eind kijk je dan wie de winnaar is; als die persoon minder heeft ingezet dan andere spelers die niet gefold hebben, dan krijgt hij maar een deel van de pot, en met de rest ga je verder met de volgende persoon.
Dit lijkt me een werkbare oplossing.

[ Voor 52% gewijzigd door MrBucket op 05-05-2008 22:21 . Reden: Over de reactie van Soultaker heen gelezen :X ]


  • vdvleon
  • Registratie: Januari 2008
  • Laatst online: 08-06-2023
Ik heb nu het volgende:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void win(){
    int wp[numofplayers], i, j;
    int wpi = 0;
    char buf[100];
    double tmp, tmp2;
    for(i=0; i<numofplayers; i++) wp[i] = -1;
    if(roundmode<4){
        for(i=0; i<numofplayers; i++){
            if(!players->at(i).folded) wp[wpi++] = i;
        }
    }else{ // Check for best hand
        /*
        wp[wpi++] = best hand
        wp[wpi++] = second hand
        etc...
        */
    }
    if(wpi>0){
        tmp = 0.0;
        for(i=0; i<numofplayers; i++) tmp += players->at(i).pot;
        if(wpi==1){
            sprintf(buf, "WIN 0 %d %.2f", wp[0], tmp);
            SendAll(buf);
            players->at(wp[0]).money += tmp;
            std::cout << "Player " << wp[0] << " (" << players->at(wp[0]).name << ") wins " << tmp << "\n";
        }else{
            for(j=0; j<wpi; j++){
                tmp = 0.0;
                for(i=0; i<numofplayers; i++){
                    tmp2 = Max(players->at(i).pot, players->at(wp[j]).pot);
                    players->at(i).pot -= tmp2;
                    tmp += tmp2; 
                }
                players->at(wp[j]).money += tmp;
                if(tmp>0){
                    sprintf(buf, "WIN %d %d %.2f", j, wp[j], tmp);
                    SendAll(buf);
                    std::cout << "Player " << wp[0] << " (" << players->at(wp[0]).name << ") wins " << tmp << "\n";
                }
            }
        }
    }
    sendData();
    sleep(5);
    newRound();
}

  • scorpie
  • Registratie: Augustus 2001
  • Laatst online: 11:34

scorpie

Supra Addict

Kun je je post editten en ipv [ code ] te gebruiken, nu [ code=c++ ] gebruiken? Leest wat makkelijker :)

wil een Toyota Supra mkIV!!!!! | wil een Yamaha YZF-R{1,6} | wil stiekem ook een Ducati
"Security is just a state of mind"
PSN: scorpie | Diablo 3: scorpie#2470


  • vdvleon
  • Registratie: Januari 2008
  • Laatst online: 08-06-2023
Lol, ik wist niet dat, dat kon

  • vdvleon
  • Registratie: Januari 2008
  • Laatst online: 08-06-2023
C++:
1
2
3
4
5
6
if(wpi==1){
            sprintf(buf, "WIN 0 %d %.2f", wp[0], tmp);
            SendAll(buf);
            players->at(wp[0]).money += tmp;
            std::cout << "Player " << wp[0] << " (" << players->at(wp[0]).name << ") wins " << tmp << "\n";
        }else{ ...


Ik zie dat dit een beetje overbodig is...

  • vdvleon
  • Registratie: Januari 2008
  • Laatst online: 08-06-2023
Weet iemand of je op dit forum kunt instellen dat bij elke post in mjin topic ik een mailtje krijg...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

pietje63 schreef op maandag 05 mei 2008 @ 21:21:
Klopt niet helemaal, aangezien niet iedereen op hetzelfde moment bet.
Sidepots maak je ook alleen maar tussen bettingrondes, niet als iedereen aan het betten is. En tijdens het betten kan het nog, want het gaat alleen op als iemand all-in gaat, dus die kan dan sowieso niet verder betten.

[ Voor 19% gewijzigd door .oisyn op 05-05-2008 23:29 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

vdvleon schreef op maandag 05 mei 2008 @ 23:22:
Weet iemand of je op dit forum kunt instellen dat bij elke post in mjin topic ik een mailtje krijg...
offtopic:
nee dat kan niet, het idee is hier dat je zelf maar terug komt als je interesse hebt. Er staat wel onder ieder topic een RSS-link voor replies op dat topic te volgen

Professionele website nodig?


  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Een side pot kun je echt niet achteraf bepalen door te kijken naar het bedrag dat de all-in speler heeft ingelegd.

Situatie:

Speler 1 heeft 100
Speler 2 heeft 100
Speler 3 heeft 100
Speler 4 heeft 10

Speler 1 zet 5 in
Speler 2 callt
Speler 3 callt
Speler 4 gaat all-in
Speler 1 fold
Speler 2 callt
Speler 3 callt

Nu spelen 2 en 3 om een side-pot (als er nog wordt gebet) waar ook nog 5 van speler 1 inzit. Die vind je niet terug als je achteraf het aantal showdown spelers vermenigvuldigt met de totale bet van de all-in speler.


Ik zou gewoon zodra er een side-pot ontstaat die ook bijhouden in je programma. Als je de pokerregels goed kent is dat echt niet zo moeilijk.

TabCinema : NiftySplit


  • vdvleon
  • Registratie: Januari 2008
  • Laatst online: 08-06-2023
Kijk eens goed naar de code die ik heb gepost. Als je daar naar kijkt zie je toch dat je het wel achteraf kunt bepalen...

  • vdvleon
  • Registratie: Januari 2008
  • Laatst online: 08-06-2023
Je moet het voorstellen als een staaf diagram. Een speler gaat mee met de pot tot een bepaalde hoogte. Sommige gaan tot het einde mee en andere gaan allin en blijven dus onder de maximale waarde steken. Als die persoon (all in) dan wint, dan krijgt hij het geld van alle stafen tot waar hij heeft in gezet. Wat overblijft word weer verdeelt over de 2e plaats, etc.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 07:40

Creepy

Tactical Espionage Splatterer

offtopic:
Wil jij eens kijken naar de edit knop? Dan hoef je niet steeds posts onder elkaar te maken. Als je toch de laatste post in het topic hebt staan, edit dan gewoon je post. Nu lijkt het erop alsof je steeds je topic onder de aandacht wil brengen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Sowieso wordt er pas een pot gemaakt als de betting ronde over is. Je zet namelijk eerst allemaal je bets op de lijn, en dan gaan ze naar het midden en worden de pots gemaakt.

Hoe je dat bij kan houden... op heel veel manieren; dat lijkt me niet je grootste probleem bij een client-server poker programma. Overigens, met all-ins krijg je ook nog het probleem van de incomplete bet/raise regels. In principe werkt was .oisyn zei gewoon.

bv.
Speler 1: 1000
Speler 2: 1000
Speler 3: 90

S1 bet 50
S2 called
S3 raised all-in naar 90
S1 mag nu alleen callen of folden, en niet raisen om S3 te isoleren

[ Voor 16% gewijzigd door Zoijar op 06-05-2008 12:53 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Zoijar schreef op dinsdag 06 mei 2008 @ 12:49:
bv.
Speler 1: 1000
Speler 2: 1000
Speler 3: 90

S1 bet 50
S2 called
S3 raised all-in naar 90
S1 mag nu alleen callen of folden, en niet raisen om S3 te isoleren
offtopic:
Hoezo mag S1 niet raisen dan? Al hij geraised word krijgt hij toch altijd de kans om te re-raisen? Voor speler S3 haalt dat niet zoveel uit, maar S2 kan hij nog wel weg spelen. Of is dat een aparte regel als er iemand all-in gaat?

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zoijar schreef op dinsdag 06 mei 2008 @ 12:49:
In principe werkt was .oisyn zei gewoon.
Ik merk nu dat ik het alleen iets verkeerd bracht. Ik had het over de inzet van een persoon zelf, maar ik bedoelde natuurlijk de pot die al in het midden op tafel ligt op het moment dat hij z'n laatste inzet doet, plus van iedere persoon uit de huidige bettingronde wat hij heeft ingezet (inclusief z'n eigen inzet natuurlijk ;)).

Maar goed, je moet dus in principe altijd naar het eind van elke bettingronde kijken wat iedereen in totaal heeft ingezet die ronde. Hoe dat verder gegaan is doet er weinig toe.

Voorbeeld:

S1: 1000
S2: 1000
S3: 1000
S4: 100

S1 bet 20 (20)
S2 called 20 (20)
S3 called 20 en reraised nog eens 40 (60)
S4 called 60 en reraised all-in (100)
S1 fold (20)
S2 called 40+40 en reraised 100 (200)
S3 called 100 (200)

De totalen zijn nu:
S1: 20, maar doet niet meer mee
S2: 200
S3: 200
S4: 100 (all-in)

Van de spelers die nog meedoen heeft S4 de laagste inzet, dus hij krijgt van iedere speler maximaal zijn inzet (100), oftewel 20+100+100+100 = 320. Dat is de mainpot. S2 en S3 zijn nog niet all-in en gaan voor de sidepot van hun overgebleven deel, dus 100+100=200.

[ Voor 66% gewijzigd door .oisyn op 06-05-2008 13:34 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

rwb schreef op dinsdag 06 mei 2008 @ 12:59:
[...]

offtopic:
Hoezo mag S1 niet raisen dan? Al hij geraised word krijgt hij toch altijd de kans om te re-raisen? Voor speler S3 haalt dat niet zoveel uit, maar S2 kan hij nog wel weg spelen. Of is dat een aparte regel als er iemand all-in gaat?
Omdat de minimum raise 50 is na een bet van 50, dus speler 3 moet minimaal naar 100 raisen. Echter, hij gaat all-in naar 90 (<100) en dat geldt min of meer als een call en geen raise. Omdat speler 1 bet, speler 2 called, en speler 3 eigenlijk ook called is het cirkeltje dus rond, de betting ronde af, en mag speler 1 niet alsnog weer raisen. Maar omdat er toch nog geld in de pot moet, krijgen beide spelers 1 en 2 de keus om te callen of te folden. Je kan ze niet dwingen er extra geld bij te leggen, dus mogen ze folden.

(die regels varieren geloof ik nog wel eens per poker room, maar het geeft aan dat er iets meer bij een betting ronde komt kijken dan de side pots bijhouden)
.oisyn schreef op dinsdag 06 mei 2008 @ 13:17:
[...]

Ik merk nu dat ik het alleen iets verkeerd bracht. Ik had het over de inzet van een persoon zelf, maar ik bedoelde natuurlijk de pot die al in het midden op tafel ligt op het moment dat hij z'n laatste inzet doet, plus van iedere persoon uit de huidige bettingronde wat hij heeft ingezet (inclusief z'n eigen inzet natuurlijk ;)).
Ja, ik zou denk ik gewoon de betting ronde af laten lopen en ergens opslaan wat iedereen precies heeft gebet. Dan sorteer je die list (oplopend uiteraard), en elke keer dat een element afwijkt van de vorige wordt er een sidepot gemaakt. De eerste (sub)sidepot wordt bij de laatste sidepot opgeteld (of mainpot als er maar 1 is, same thing) etc.

Oh, en @ TS: gebruik in godsnaam gewoon STL containers als je toch in C++ bezig bent, anders wordt het een nachtmerrie.

[ Voor 37% gewijzigd door Zoijar op 06-05-2008 13:28 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zoijar schreef op dinsdag 06 mei 2008 @ 13:19:
Ja, ik zou denk ik gewoon de betting ronde af laten lopen en ergens opslaan wat iedereen precies heeft gebet.
Idd, ik heb precies dat toevallig ook bij mijn vorige post erbij geedit ;).

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

.oisyn schreef op dinsdag 06 mei 2008 @ 13:30:
[...]

Idd, ik heb precies dat toevallig ook bij mijn vorige post erbij geedit ;).
offtopic:
iets met great minds ;)

Verwijderd

Kijk anders gewoon even naar deze code:

http://code.google.com/p/...rce/PokerGame/Betting.cpp

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Om eens even goed te lachen bedoel je? :) Mijn god wat een lelijke code. Hoe die alles in while loopjes en increments doet ipv gewoon hele bedragen optellen en aftrekken 8)7

Ik bedoel
C++:
1
2
3
4
5
while(m_nMainPot>m_nAllInAmount)
{
    m_nMainPot--;
    m_nSidePot++;
}

For god's sake |:(

Aan de TS: kijk vooral niet naar die code :P

[ Voor 47% gewijzigd door .oisyn op 06-05-2008 14:42 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
.oisyn schreef op dinsdag 06 mei 2008 @ 14:13:
C++:
1
2
3
4
5
while(m_nMainPot>m_nAllInAmount)
{
    m_nMainPot--;
    m_nSidePot++;
}
Tja maar
C++:
1
2
3
4
5
if(m_nMainPot>m_nAllInAmount)
{
    m_nSidePot = m_nAllInAmount - m_nMainPot;
    m_nMainPot = m_nAllInAmount;
}

zou ook wel erg eenvoudig zijn ;)

Overigens ook wel apart dat de Ante's daar blijkbaar altijd 1 zijn en dat de Side pot alleen verdeeld word als de winnaar niet all-in is gegaan ;)

[ Voor 16% gewijzigd door Woy op 06-05-2008 14:50 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

En werkt bovendien ook als je een fixed point of decimal datatype zou gebruiken voor je geldbedragen, en dat moet natuurlijk voorkomen worden :P

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • vdvleon
  • Registratie: Januari 2008
  • Laatst online: 08-06-2023
Heel leuk, maar klopt mijn code nou of niet?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ja hallo wij zijn jouw persoonlijke debugservice niet.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • vdvleon
  • Registratie: Januari 2008
  • Laatst online: 08-06-2023
.oisyn schreef op dinsdag 06 mei 2008 @ 15:21:
Ja hallo wij zijn jouw persoonlijke debugservice niet.
Ik weet niet, maar ik ben deze topic begonnen, en ik heb geen antwoord gekregen op of mijn manier werkt...

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

vdvleon schreef op dinsdag 06 mei 2008 @ 15:32:
[...]

Ik weet niet, maar ik ben deze topic begonnen, en ik heb geen antwoord gekregen op of mijn manier werkt...
Dat is dan ook niet het doel van dit forum. Je wordt hier geholpen om zelf het goede antwoord te vinden, we zijn een beetje allergisch voor voorkauwen en kant-en-klare code te geven. Dus probeer zelf eens of je code klopt, zo nee analyseer waarom niet, en als je dan niet snapt waarom niet kun je hier posten wat je niet snapt en waarom.

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

vdvleon schreef op dinsdag 06 mei 2008 @ 15:32:
[...]


Ik weet niet, maar ik ben deze topic begonnen, en ik heb geen antwoord gekregen op of mijn manier werkt...
En dan ga je het proberen en dan kom je erachter of het wel of niet werkt. Ook zou je eens een omschrijving in woorden kunnen geven van je algoritme, ipv gewoon je code compleet zonder comments en duidelijke variabelnamen hier neer te plempen :). Met de reacties die in je topic zijn gegeven moet je toch wel zelf een algoritme kunnen destilleren. En als je dat niet kan, dan moet je aangeven wat je dan precies niet snapt. We verwachten hier namelijk gewoon eigen inzet. Je hoeft niet alles te kennen/kunnen/snappen, maar wij gaan ook niet alles voor jou doen.

.edit: damn you curry.

[ Voor 58% gewijzigd door .oisyn op 06-05-2008 15:50 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • vdvleon
  • Registratie: Januari 2008
  • Laatst online: 08-06-2023
Ok, ok. Jullie hebben gelijk.

maar ik vraag naar jullie mening of jullie mijn manier kloppent vinden en efficent... Maar misschien moet ik dat maar gewoon helemaal uit testen (eerst maar eens de hele poker server af maken, en dan alles gaan testen)...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik zou wel verschillende onderdelen apart gaan testen, anders kan het nog lastig worden fouten te isoleren - ze kunnen dan immers overal inzitten.

Overigens lijkt je code geen rekening te houden met split pots. Als je bijvoorbeeld 3 mensen hebt met met exact identieke handen, en een main- en een side pot, dan wordt de main pot door 3 gedeeld, en de side pot door twee. Maar als een van de spelers die ook in de side pot zit weer een slechtere hand heeft dan de andere twee, dan wordt de main pot gedeeld door twee, en gaat de sidepot volledig naar die overige speler.

Wat je in feite wilt is een lijst van alle pots en welke spelers daarin zitten. Vervolgens ga je kijken wie de beste hand heeft. Dit kunnen meerdere spelers zijn, dus verzamel alle potten van alle spelers met de winnende hand. Die potten ga je gelijk verdelen tussen de spelers die in de betreffende pot zitten. Als je daarna nog potten overhebt (wat dus gebeurt als degene met de winnende handen voortijdig all-in zijn gegaan), dan moet je naar de volgende hand kijken. Dat kunnen ook weer meerdere spelers zijn, en dan ga je weer alle potten verzamelen (die je nog niet gehad hebt, want die je al gehad hebt zijn immers al uitgedeeld), enzovoorts, tot alle potten leeg zijn.

[ Voor 70% gewijzigd door .oisyn op 06-05-2008 19:13 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • vdvleon
  • Registratie: Januari 2008
  • Laatst online: 08-06-2023
Hoezo niet?

[EDIT] (jaja)

Als het goed is word er volgorde van beste hand per persoon gekeken hoeveel hij kan winnen en dat word dan van de pot van elke speler afgetroken (tot hoe ver mogelijk). Voor de 2e plaats is er dan alleen nog geld over als de eerste all in is geweest, en zo krijgt dus speler 2 de rest van de pot (tot waar hij het mag hebben, etc.). Speler 3....

Als het goed houd dat stukje code van mij dus wel rekening met slipt pots (als ik het goed heb).

[ Voor 95% gewijzigd door vdvleon op 06-05-2008 19:14 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zoals ik al zei, dat lijkt zo. Ik zie in de code niet zo snel iets dat daar rekening mee houdt. Je moet mij niet vragen iets te bewijzen waarvan ik denk dat het er niet is, want dat kan ik niet :). Beschrijf dan maar eens waarom jij denkt dat je er wel rekening mee houdt. Houd er rekening mee dat ik niet weet wat alle variabelen betekenen als jij ze namen als "wp" en "tmp" geeft enzo.

over je edit: ik zie nergens wat er gebeurt als twee mensen dezelfde hand hebben. Want je loopt de spelers altijd in een bepaalde volgorde af, waarbij je geld uit de pot lijkt te halen. Ik zie geen verschil tussen het geval waarin een speler een betere hand heeft dan een andere speler, en twee spelers die dezelfde hand hebben. Je moet het toch op een of andere manier verdelen. Volgens mij is het bij jouw code het geval dat als twee spelers eindigen met een identieke hand, dat de eerste speler die aan de beurt is al het geld voor de neus van de andere speler wegkaapt. Want hij collect z'n inzet, dus blijft er niets meer over voor speler 2 :)

[ Voor 47% gewijzigd door .oisyn op 06-05-2008 19:23 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • vdvleon
  • Registratie: Januari 2008
  • Laatst online: 08-06-2023
Zie boven

tmp = logisch, namelijk temp => tijdelijk
wp = winnende spelers
wpi = winnende spelers index

in wp staan dus op volgorde van beste hand.

Als je nog vragen hebt...

[EDIT]

Dan moet ik nog even kijken hoe ik dat doe met split pot

[ Voor 16% gewijzigd door vdvleon op 06-05-2008 19:22 ]


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Side pots worden ook onafhankelijk gesplit, waarbij de speler met de slechtste positie de afronding krijgt als het bedrag niet in de kleinste nominatie chips te splitten is. Mochten er dus een side pot en een main pot zijn met beiden een oneven aantal chips die worden gesplit tussen 2 spelers, dan krijgt de speler met de slechtste positie 2 chips meer dan die andere.
Pagina: 1