Kunstmatige intelligentie
Programmeeropgave 1 van 2008 — Bridge

De eerste programmeeropgave (in het voorjaar van 2008) behorende bij het vak Kunstmatige intelligentie gaat over het kaartspel simpelBridge dat een klein beetje lijkt op Bridge. Het is de bedoeling een eenvoudige programma dat dit spel speelt te schrijven en met behulp van een simulatie dit programma enigszins te onderzoeken.
Er mag vrijelijk gebruik gemaakt worden van een stuk voorbeeld-code.

Er zijn 4 spelers: Noord, Oost, Zuid en West, afgekort N, O, Z en W. N en Z spelen als paar samen, evenals O en W. Er wordt gespeeld met 52 kaarten: van ieder van de vier kleuren (Klaveren, Ruiten, Harten, Schoppen) een aas, heer, vrouw, boer, 10, 9, 8, 7, 6, 5, 4, 3 en 2, in deze volgorde (de aas is de hoogste).
De spelers krijgen bij een potje simpelBridge ieder 13 willekeurige kaarten. De 52 kaarten worden dus opgedeeld. Vervolgens zegt of het paar Noord-Zuid of het paar Oost-West de troefkleur en het aantal slagen dat ze samen denken te maken. Dit noemen we het bieden; het bod noemen we ook wel het contract. Let op: dit is per potje maar één bod; wijs random een paar aan, en laat die samen één bod uitbrengen. We doen overigens niet aan "sans-atout", er is altijd een troefkleur.
Een van de spelers (random gekozen) mag beginnen. Hij/zij gooit een kaart naar keuze op, waarna de andere spelers, met de klok mee, een kaart bijgooien; als ze een of meer kaarten van de oorspronkelijke kleur hebben, moeten ze zo'n kaart spelen ("kleur bekennen"); zo niet, dan moeten ze een kaart van een andere kleur bijspelen. Troeven mag. De hoogste kaart van de oorspronkelijke kleur bepaalt wie de slag heeft gewonnen; als er troeven bij zijn, bepaalt de hoogste troefkaart de winnaar van de slag. Deze persoon moet in de volgende beurt als eerste een kaart opgooien ("uitkomen"). Dit gedeelte noemen we het afspelen.
Aan het eind van het potje horen we welk paar hoeveel slagen gemaakt heeft. Een paar is succesvol als het precies het beloofde aantal slagen heeft gemaakt (het contract halen, dat levert bijvoorbeeld 20 punten), en krijgt strafpunten als het teveel (bijvoorbeeld 10 strafpunten per slag te veel) of te weinig (bijvoorbeeld 20 strafpunten per slag te weinig) slagen heeft gemaakt.

Gebruik nu een viertal AI-componenten:

Laat deze spelers/paren in verschillende combinaties tegen elkaar spelen, en rapporteer de bevindingen. Kortom: maak diverse simulaties.
Er wordt niet gevraagd om een programma dat aan alle software engineering standaards voldoet! Houd het programma dus eenvoudig!

Toegevoegd 6.2.2008: Het bieden en afspelen staan los van elkaar. Bij het afspelen hoef je alleen kennis van de eigen kaarten en eventueel van voorgaande gespeelde slagen te gebruiken.

Deadline: dinsdag 26 februari 2008.
In te leveren: een geprint exemplaar van het verslag tijdens het college, en de C++-code van het programma naar onderstaand adres. Het verslag moet aan verschillende eisen voldoen.


Vragen en/of opmerkingen kunnen worden gestuurd naar: kosters@liacs.nl.

6 februari 2008 — http://www.liacs.nl/home/kosters/AI/bridge.html