Poker algoritmen færdig
marts 24th, 2009 at 18:11 (Andet)
Alle lærerene på skolen er taget til USA i denne uge til noget konference halløj. Hvilke betyder at hele denne uge skal vi ikke i skole (vi får også en hel uge om 2 uger, pga påskeferien
)
Jeg har indtil videre brugt tiden på at lave en algoritme til at udregne vinderen at et omgang Poker. Jeg har flere gange forsøgt mig med at lave det, men nu føler jeg at jeg ved nok om programmering til at lave den slags og det lykkedes også at lave noget fornuftigt.
Grunden til det blev en Poker “udregner”, er at reglerne er forholdsvist komplicerede og dermed en lidt større udfordring end de simple opgaver der stilles i skolen. Samt at jeg efterhånden er expert i Poker, af al den viden jeg har indsamlet mig fra Stian gennem de seneste år.
Jeg sprang let henover design og analysefasen og sprang direkte til at kode. Det er ikke altid det mest spændende at skulle lave klassediagrammer og den slags, når man bare vil igang med at kode selve algoritmen. Det betød også at når GUIen kom på, så blev koden hurtig ret uoverskuelig.
Algoritmen er udformet så der er en metode til hver type af hænder i Poker som returnere en boolean, hvor sand hvis hånden er af den type. Hvis den er det, så gemmes værdierne af kortene i en array, i stigende orden efter hvor vigtige de er. Dette bruges hvis 2 eller flere hænder er af samme type, så vil en sammenligning af disse arrays til hver hånd kunne afgøre den bedste hånd. Fx hvis der er 2 hånder med tre ens:
Bord: d9, s9, c6, h5, d3
1: h9, h12
2: c9, h11
Så vil hånd 1 vinde da, han har højere kort ud end hånd 2.
De 2 arrays vil således se sådan ud:
1: [6, 12, 9]
2: [6, 11, 9]
Så når man gennemgår dem bagfra, så er vinderen den hvor den er højst første gang.
Det var måske en temmelig rodet forklaring, men ellers kan man selv afprøve programmet:
www.auzzie.dk/poker.jar (kræver Java 1.6)