Programmeerproject: rapportering fase II

Vergelijkbare documenten
Spelmateriaal. Doel van het spel. 4 Score-stenen. 4 Huizen 1 Einde spel -kaart. 62 Geveltegels (dubbelzijdig) elk 10 x blauw, geel, rood, groen

Onderdelen Spelonderdelen:

Een inleiding in de Unified Modeling Language 67

2) De karakterkaarten Elk van de 8 karakterkaarten heeft een bijzondere eigenschap, die verderop uitgelegd wordt.

Een keizerlijk kaartspel over strijdende Japanse dynastieën. Spelmateriaal. Doel van het spel. Een spel van Michael Schacht. 110 karakterkaarten

Spelregels. Een rummy-achtig kaartspel voor jong en oud. Spannend tot de laatste ronde!

Oefeningen Jaarproject I

1347 Europa. De Zwarte Dood teistert Europa. waarin verschillende gebouwen te vinden zijn. Elk

DiceRun. Doel. Inhoud. Voorbereiding

6 Nimmt! Geen kaartspel voor stommelingen! Uitgever : Amigo, 1995 Auteur : KRAMER Wolfgang Spelers : spelers vanaf 10 jaar Duurtijd : ± 45

BOHNANZA: AL CABOHNE FORUM FEDERATIE BOHNANZA: AL CABOHNE - 1 / 6 -

Die sieben Siegel Amigo, 2003 DORRA Stefan 3-5 spelers vanaf 10 jaar ± 45 minuten

Het handboek van Luitenant Skat

Klaverjassen Spel Bediening

Spelidee en doel van het spel. Spelmateriaal. Op jacht naar waardevolle schatten, doorzoeken groepen avonturiers de legendarische Tempel van Luxor.

Een spel voor 2 tot 4 spelers Vanaf 13 jaar Ongeveer 40 Minuten

Jijbent.nl: spelregels Stacko. Bram Schoonhoven Copyright 2019 Jijbent.nl

Caesar & Cleopatra. Auteur: Wolfgang Lüdtke Uitgegeven door Kosmos, spelers vanaf 10 jaar.

Inhoud 1 spelregelboekje 180 speelkaarten het spel bevat 2 verschillende soorten kaarten: 90 ingrediëntkaarten: 15 van elk:

Inhoud: 70 kaarten (getallen 1 70) 15 speciale kaarten (3 bijzondere acties) 1 pijlkaart 1 markeerkaart

Odins Raven (De raven van Odin) Spannende wedvlucht voor twee gewiekste raven KOSMOS GIMMLER Thorsten 2 spelers vanaf 10 jaar ± 45 minuten

EEN RAADSELACHTIG SPEL OVER MAFFE CULINAIRE CONFLICTEN.

Cartagena Die Goldinsel Winning Moves, 2008 Rüdiger DORN 2-4 spelers vanaf 10 jaar ± 60 minuten

Het kaartspel "Wippen"

8 ½ Amigo, 2005 Haim SHAFIR 2-5 spelers vanaf 8 jaar ± 30 minuten

Beim Jupiter Kosmos, 2008 Michael FELDKÖTTER 3-5 spelers vanaf 12 jaar ± 60 minuten

Functioneel programmeren

Reglement Diksmuidse zevenkamp caféspelen

van Uwe Rosenberg Voor- en achterkant Kleurkaarten limietkaarten

Kort speloverzicht. Inhoud: Voorbereiding

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Sole Mio! Abacusspiele, 2004 Uwe ROSENBERG 2-5 spelers vanaf 10 jaar ± 30 minuten

Saboteur Amigo, 2004 MOYERSOEN Frederic 3-10 spelers vanaf 8 jaar ± 30 minuten

SPELMATERIAAL. 1 speelbord en deze spelregels

Oh, Pharao! Kosmos, 2004 HUTZLER Thilo 3-4 spelers vanaf 10 jaar ± 45 minuten

Jijbent.nl: spelregels En garde. Bram Schoonhoven Copyright 2019 Jijbent.nl

Welkom in de magische stad Glastonbury. In High Street vind je alle ingrediënten die je nodig hebt om krachtige toverdrankjes te maken.

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni 2011

Via Romana Goldsieber, 2008 Christian FIORE & Knut HAPPEL 2-4 spelers vanaf 8 jaar ± 90 minuten

Zirkus Flohcati Vlooien, dieren, attracties Amigo, 1998 KNIZIA Reiner 3-5 spelers vanaf 7 jaar ± 30 minuten

Algoritmen en Datastructuren 1. Functies

SPELIDEE VOORBEREIDING VERLOOP VAN HET SPEL RUDI HOFFMANN

TACTIC THE GREAT TOUR. Categorie F/G

Elfer raus! Het geliefde kaartspel voor de ganse familie. Ravensburger, spelers vanaf 7 jaar ± 30 minuten

Biljart Competitie. Versie 7.1. Gebruiksaanwijzing

Meer speelbord! Meer spanning! Meer Phase 10! voor 2-6 spelers vanaf 10 jaar

SPELIDEE. van Zoltán Aczél

20 witte Doelvakjes. Raster voor solovariant Strafpunten Eindscore

en vorm hiermee een gedekte trekstapel; neem de bovenste drie kaarten van de trekstapel en leg deze open op tafel;

Nederlandse vertaling: Olav Fakkeldij Spelregels van Samsara Betaversie 03/04/18 Al je opmerkingen zijn welkom, waardevol en goede karma!

Löwenherz, de koning keert terug.

Bieden (kaartspel) Inhoud. Spelregels. Delen. Bieden. Spelverloop

Funkenschlag Een business-spel voor 2 tot 6 spelers

Klunker Lookout Games, 2005 Uwe ROSENBERG 3-6 spelers vanaf 10 jaar ± 45 minuten

voor 2 6 spelers vanaf 8 jaar ± 30 minuten

Phil Orbanes. De snelle NIEUWE spelvariant. Spelregels

Handleiding bij de Booktest Generator

Handleiding De Biedwedstrijd

Auf Achse, das Kartenspiel (Met de vlam in de pijp!) FX Schmid, 1995 KRAMER Wolfgang 2-5 spelers vanaf 8 jaar ± 45 minuten

Het spel in het kort. Spelonderdelen. Voorbereiding. Kristian r. a. Østby

Een diepgravend legspel van Ron van Dalen. Voor 2 tot 4 spelers vanaf 8 jaar. Speelduur: 30 tot 45 minuten.

Examen Datastructuren en Algoritmen II

Rage Rage Spelidee. Spelmateriaal. Voorbereiding van het spel. Spelverloop. 1) Uitdelen van de kaarten.

Gloria Picktoria Zoch, 2007 Alan R. MOON, Mick ADO 2-5 spelers vanaf 10 jaar ± 60 minuten

Het spel wordt met drie of vier spelers gespeeld. Een taktische variante voor twee spelers komt op het einde van de spelregels voor.

Just 4 Fun Korte spelregels, lang speelplezier! Kosmos, 2006 Jürgen P. K. GRUNAU 2-4 spelers vanaf 10 jaar ± 30 minuten

Succes! Theo DʼHondt 13 juni 2010

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:

Kardinal & König Goldsieber, 2000 SCHACHT Michael 3-5 spelers vanaf 12 jaar ± 90 minuten

OEFENINGEN PYTHON REEKS 6

centauren (geel) feeën (groen) De telkens sterkste kaart van een kleur is de '15', de zwakste kaart is de '1'.

Zoemzinnen. Algemene info. Functies met een variabel aantal argumenten

Credits. Productieleider: Carlos Pileño. Spelregels: Javier Barral Xabier Huici. Uitgever: Txarli Factory. Illustraties: Patri de Blas

Die Hängenden Gärten Hans im Glück, 2008 Din LI 2-4 spelers vanaf 8 jaar ± 75 minuten

Score pad. Score pad monument. Geschiedenisschrijverspad

HOE TEKEN IK EEN OMGEVINGSMODEL

STRUCTUUR VAN COMPUTERPROGRAMMA S I

Kubb-tornooi Geluwe. Datum: 10 mei Tijd: 9u00 tot 17u00. Waar: Sint-Jorisschool geluwe. Mail:

Foutcontrole met Javascript

Eiszeit ALEA, 2003 MOON Alan R. & WEISSBLUM Aaron 3-5 spelers vanaf 10 jaar ± 120 minuten

Tanz der Hornochsen! Amigo, 2004 KRAMER Wolfgang 2-8 spelers vanaf 8 jaar ± 45 minuten

Reglement Wereldkampioenschap WIEZEN 2016.

SPELREGELS KLAVERJASSEN CVVB

In de schaduw van de zonnekoning

Breukenpizza! Ga je mee om de wonderlijke wereld van de breuken te ontdekken? Bedacht en ontwikkeld door Linda van de Weerd.

Bij het opstarten van het programma zie je

e koninkrijkkaarten Uitkijkpost Buitenpost Bazaar Beurzensnijder Boodschapper Embargo Ontdekker

Klaverjassen, het spel...

Desperados Pfifficus Spiele, 2004 Anselm & Helge OSTERTAG 3-5 spelers vanaf 12 jaar ± 90 minuten

Software Test Plan. Yannick Verschueren

Mijn project noemt Het Wari-spel. De doelgroep van mijn programma is iedereen die houdt van strategische spelen.

Je kunt de kansen met wiskunde technieken berekenen (bijvoorbeeld boomdiagramman), maar je kunt ook deze door simulaties achterhalen.

OVERZICHT ONDERDELEN

GEBRUIKERSHANDLEIDING T8530

Spelregels voor 4 personen KAART EN SPELAVOND Initiatie Manillen. Jenthe Soenens. Club 250 Ouderraad Sint-Lodewijkscollege Spoorwegstraat 1

Let op dat de scoping regels gerespecteerd blijven; het volgende voorbeeld mag geen fout melden.

Relikt Amigo, 2006 Rüdiger DORN 3-5 spelers vanaf 10 jaar ± 45 minuten

Dog Schmidt (2008) WICHMANN 2-6 spelers vanaf 8 jaar ± 60 minuten

BEGINNER JAVA Inhoudsopgave

Dumm gelaufen! Inhoud : Voorbereiding

Transcriptie:

Programmeerproject: rapportering fase II Laure Philips Rolnr: 87225 Eerste bachelor computerwetenschappen lphilips@vub.ac.be March 9, 2008 1 Inleiding Dit rapport is een evaluatie bij de implementatie van het tweede deel van het programmeerproject eerste bachelor in de computerwetenschappen. Dit project kadert in het toepassen van de vaardigheden en kennis die werden aangeleerd in de lessen Structuur van Computerprogrammas en Algoritmen en Datastructuren. Het doel van dit project is de implementatie van twee kaartspelen in Dr. Scheme waarbij zoveel mogelijk abstracties moeten gebruikt worden, met het doel dat makkelijk andere kaartspelen met deze implementatie kunnen gemaakt worden. In dit verslag zal eerst het spel pesten behandeld worden, gevold door het spel jokeren. Achtereenvolgens wordt het gevolgde tijdsschema besproken en het afhankelijkheidsdiagram getoond. Twee appendices zijn toegevoegd: een eerste bevat een overzicht van de scheme bestanden en een tweede appendix toont een weergave van de output van het spel jokeren. 2 Het spel pesten 2.1 Start van het spel Wanneer een speler het spel pesten opstart, moet hij eerst zijn voorkeuren aan het spel kunnen weergeven: met hoeveel spelers hij wil spelen, hoeveel echtemensen aan het spel meedoen en hoeveel computerspelers. Verder kan er ook gevraagd worden of de speler eerst de spelregels van het spel wil bekijken alvorens te spelen. In het ADT tafel wordt via deze informatie het spel gestart : spelers worden aan de spelerslijst toegevoegd, er worden een aftrekstapel aangemaakt die wordt geschud, elke speler krijgt zeven kaarten van deze stapel en de eerste niet uitgedeelde kaart wordt aan een nieuwe stapel toegevoegd, dat de aflegstapel zal worden, en er wordt ook een aflegplaats aangemaakt. Daarna start een loop, wat eigenlijk het spel voorstelt, tot een speler geen enkele kaart meer overheeft. Het controleren van de voorkeuren van de gebruiker gebeurt door een hogere orde procedure check-input. Deze functie blijft de gebruiker om input vragen, tot er een geldig antwoord gegeven wordt. De parameters van deze procedure zijn : displayer ( de displayer die de gebruiker gekozen heeft), bericht (het bericht dat wordt weergegeven, bvb Met hoeveel menselijke spelers wilt u spelen?), verwacht (een lambda die kijkt of de speler bvb een integer ingeeft) en error ( bericht dat wordt weergegeven indien de gebruiker iets fout heeft ingegeven). De speler mag ook als naam van een menselijke speler geen nummer ingeven, omdat dit voorbehouden is voor de computerspelers. Dit wordt ook gecontroleerd door de procedure check-input. Computerspelers zijn in deze implementatie dus anonieme spelers. 2.2 Computerspeler De computerspeler is een nieuw adt dat net zoals de gewone spelers dezelfde commandos verstaat, alleen kent hij ook het commando speel. Deze speelprocedure gebruikt de drie volgende hulpprocedures: zoek-pestkaart, zoek-kaartenzelfde-rang en zoek-kaarten-zelfde-kleur. Indien blijkt dat hij niets van deze bezit, trekt de speler een kaart van de trekstapel. Dan wordt gekeken of de speler een pestkaart heeft én of deze ook zijn laatste kaart is. In dat geval mag hij deze niet gebruiken. Indien dit niet de laatste kaart is, gooit hij een pestkaart. Als deze pestkaart een boer is, 1

kiest hij de nieuwe kleur van de boer random. Indien er dus geen pestkaart is, gooit de computerspeler een kaart van dezelfde kleur of van dezelfde rang. De functie zoek-pestkaart gebruikt een pestenlijst, dit is een lijst met de rangen van de pestkaarten. Deze lijst zit vervat in de pesten-hashtabel (zie 2.3). De pesten-hashtabel is een ADT waarin alle regels van het spel vervat zitten. Wanneer je het spel dus iets anders wil spelen en besluit dat een aas geen pestkaart meer is, moet je dit eenvoudigweg aanpassen in dat ADT. 2.3 De spelregels Zoals al kort vermeld in 2.2 is er een pesten-hashtabel waarin alle regels van het spel vervat zitten. Aanpassen van de spelregels is dus gewoon aanpassen van de tabel. Dit ADT kent vijf boodschappen: pestkaart?, voer-pestkaart-uit, pestenlijst, aantal-pestkaarten. Pestkaart? verwacht als invoer een rang (een getal dus) en kijkt of dit een pestkaart is. Voer-pestkaart-uit verwacht een ADT kaart als parameter en kijkt eerst of de gegeven kaart wel een pestkaart is. Indien dit het geval is, wordt de value (lambda) van de key (rang) opgezocht. Deze parameterloze lambda wordt dan uitgevoerd. Bvb. voor een aas (= rang 1) ziet de lambda er als volgt uit: (lambda () (tafel veranderrichting)). Pestenlijst is de lijst die al werd besproken in 2.2; dit is een lijst met de rangen van de pestkaarten. Aantal-pestkaarten verwacht als parameter een rang (een getal dus). Indien deze rang gelijk is aan 2, wordt 2 teruggegeven, bij rang 14 wordt 5 teruggeven en anders 0. Dit staat dus voor het aantal kaarten dat de volgende speler moet trekken. 2.4 De menselijke speler In de code van het eigenlijke spel pesten staat een procedure pest-menselijkespeler. Deze procedure werkt in volgende stappen : 1. Wil de speler een pestkaart spelen? 2. Kan de speler een kaart spelen? (anders geeft hij 0 in als input) 3. Is de opgegeven kaart een geldige en heeft de speler die kaart? 4. Heeft de speler nog kaarten over? (een pestkaart mag niet als laatste kaart gespeeld worden) 5. Indien de kaart een boer is, wat wordt de nieuwe kleur? 6. Heeft de speler nog kaarten over? 7. De optelregel: als 2 pestkaarten na mekaar gespeeld worden geldt de optelregel. Wanneer een menselijke speler aan de beurt is, wordt eerst gevraagd of hij zijn al zijn pestkaarten wil zien. Deze optie vergemakkelijkt het spel voor de menselijke speler: hij moet eerst niet zelf gaan zoeken in zijn handkaart naar de pestkaarten. Ook hier geldt dat de input gecontroleerd wordt. De speler is dus verplicht hier ja (1) of neen (0) op te antwoorden. Wanneer de speler zijn pestkaarten niet wil zien of hij heeft geen pestkaarten, wordt de functie speel-gewone-kaart opgeroepen. Wanneer hij echter wel een pestkaart heeft, wordt hem gevraagd of hij een pestkaart wil spelen. Indien hij besluit toch geen pestkaart te spelen, wordt eveneens de functie speel-gewone-kaart opgeroepen. Indien de speler een kaart speelt, wordt deze ook gecontroleerd door een procedure check-kaart. Deze blijft de gebruiker om input te vragen tot hij een geldige kaart ingeeft of 0 (indien hij geen kaart wil werpen). Dit functioneert gelijkaardig als de check-input functie en verwacht de vogende parameterst : displayer: de displayer die de speler gekozen heeft (bijvoorbeeld tekstueel / grafisch) bericht: vraagt de speler om een kaart of 0 in te geven verwacht: kijkt na of er een lijst ingegeven is van lengte 2 (indien kaart) ofwel het getal 0 (indien geen kaart kan afgelegd worden) test: kijkt na of dit een geldige kaart is en of de speler deze kaart wel heeft error1 : boodschap die wordt weergegeven indien er geen kaart of 0 ingegeven werd 2

error2 : boodschap die wordt weergegeven indien er geen geldige kaart wel ingegeven (bv. harten 1 ipv (harten 1) ) of als de speler die kaart niet heeft kaarten: ofwel false indien er geen handkaarten afgebeeld moeten worden, anders handkaarten object dat afgeprint wordt rood: lijst die de soorten bevat waarvan de kleur rood is zwart: lijst die de soorten bevat waarvan de kleur zwart is pest-test: indien de speler een pestkaart speelt, test deze hogere orde procedure of de ingegeven kaart wel degelijk een pestkaart is, in het geval van een gewone kaart geldt het tegenovergestelde error3 : bericht dat wordt weergegeven indien er een verkeerde kaart werd ingegeven (bv. geen pestkaart) Indien de gebruiker een pestkaart invoert, wordt deze uitgevoerd door de de hashtabel de pestkaart te laten uitvoeren. Indien de kaart een boer is, wordt ook aan de gebruiker gevraagd voor welke kleur de boer moet gelden. Indien de speler een gewone kaart wil spelen, wordt de functie speel-gewone-kaart opgeroepen. Ook hier wordt de input gecontroleerd (de speler speelt dus een geldige kaart én bezit de kaart ook). In deze functie wordt ook gekeken of de speler niet gewonnen heeft. Dit moet enkel in deze procedure gebeuren, omdat de laatste kaart die de speler speelt geen pestkaart mag zijn. 2.5 Het spel Het eigenlijke spel pesten is dus een eenvoudige wisselwerking tussen het spelen van een computerspeler en/of een menselijke speler. Om te kijken of de actieve speler een computer speler is of niet, wordt er gekeken of de naam van de actieve speler een nummer is of niet. Het einde van het spel is wanneer een speler ofwel geen kaarten meer heeft, of de trekstapel leeg is. De winnaar is dan diegene met de minste kaarten. Omdat de trekstapel dus leeg kan geraken, wordt elke keer voordat er een of meerdere Kaarten van de stapel worden getrokken, gekeken of de stapel al dan niet leeg is. Indien dit het geval is, wordt een procedure opgeroepen die de speler met het minst aantal kaarten teruggeeft. 3 Het spel jokeren 3.1 Start van het spel De start van het spel jokeren verloopt bijna volledig analoog aan de start van het spel pesten: het aantal spelers en het aantal computerspelers en of de speler eventueel de spelregels wilt bekijken. Net zoals bij pesten wordt de input van de gebruiker gecontroleerd door de procedure check-input. Hier wordt dus ook een tafel-object aangemaakt, de spelers worden toegevoegd aan de spelerslijst, er wordt een trekstapel aangemaakt met 104 kaarten en 4 jokers die geschud wordt en er wordt ook een aflegplaats aangemaakt (dit zit vervat in het tafel-object). Elke speler krijgt dan dertien kaarten en de eerstvolgende niet uitgedeelde kaart wordt zichtbaar op tafel gelegd. Daarna start het spel: de volgende speler kan deze kaart eventueel kopen en zijn set of rij open op tafel leggen, een set of rij aanvullen, een joker omwisselen voor een kaart die de speler in zijn bezit heeft en uiteindelijk een kaart wegwerpen. 3.2 Computerspeler Het belangrijkste algoritme bij een computerspeler is een algoritme dat kijkt of er in de handkaart van de computerspeler reeds een set of rij aanwezig is en of er eventueel één kan gevormd worden door een kaart te kopen of een joker te gebruiken. De computerspeler heeft daarom enkele functies die hiernaar zoeken: zoek-rij, zoek-set, zoek-geldige-set en zoek-geldige-rij. Zoek-rij en zoek-set geven beide een geneste lijst terug met alle rijen en sets in geneste lijsten. Bij zoek-set wordt een variabele n meegegeven; dit is de minimum lengte van de set. De maximumlengte is vastgelegd op 4, omdat een set nooit dan 4 kaarten mag bevatten. Doordat je aan de fundtie zoek-set een variabele kan meegeven, kan je ook makkelijk een set van 2 zoeken en deze aanvullen met een joker indien de speler een joker bezit. Zoek-geldige-set en zoek-geldige-rij zoeken naar een set en respectievelijk een rij die voldoende kaarten bevat en minstens 40 punten telt. 3

Deze functies worden gebruikt in de speel-procedure van de computerspeler. Deze procedure bestaat uit verschillende stappen: indien de computerspeler kan uitkomen met de gekochte kaart van het aflegstapeltje, doet hij dit ook. Indien niet, verwijdert hij de gekochte kaart en neemt hij een kaart van de trekstapel. De gekochte kaart werkt dus als een sentinel : we voegen ze eerst toe, kijken naar het resultaat, en indien nodig verwijderen we ze daarna terug. Het kan ook gebeuren dat de speler de kaart van het aflegstapeltje koopt én kan spelen, maar niet met de gekochte kaart. In dat geval verwijderen we de gekochte kaart, neemt hij een kaart van de trekstapel en probeert hij daarmee te spelen. De denkwijze van de computerspeler gaat als volgt: de functie probeert een rij, set, aangevulde rij en/of set af te leggen. Een aangevulde set of rij is een set of rij van minstens 2 lang (en maximum 4 lang voor een set) die aangevuld is met een joker. Voor welke kaart de joker moet gelden, wordt door een procedure berekend: in een set van [harten boer] [ruiten boer], mag de joker immers niet staan voor een kaart met soort ruiten of harten. De joker wordt dan toegevoegd aan de set of rij en in de eigenschap van de joker, wordt opgeslagen voor welke kaart de joker geldt. De andere spelers zien dus bvb [joker zwart (schoppen boer)]. De speelprocedure krijgt ook een parameter boolean mee, deze is true wanneer de speler speelt met een kaart van de trekstapel en false wanneer hij met een gekochte kaart probeert te spelen. Wanneer de computerspeler een geldige rij of set heeft gevonden, probeert hij deze toe te voegen aan de aflegplaats. Indien hij echter hierdoor al zijn kaarten wegspeelt, proberen we verder te gaan met de cudder van die set of rij; hierdoor houdt de computerspeler nog een kaart over en door de cudder te nemen, is er een garantie dat de kans groot is dat de set of rij nog geldig is. Bvb als we een rij hebben van rang 2 tot en met 13, dan is de rij van rang 3 tot 13 nog steeds geldig. Als laatste kaart kan de computerspeler dan de kaart met rang 2 weggooien, waarna hij gewonnen heeft. 3.3 Spelregels De kaarten worden ook bijgehouden in jokeren-hashtabel. Omdat kaarten hier geen actie uitlokken, zoals bijvoorbeeld de spelrichting omdraaien, komen zij niet overeen met een lambda, maar wel met het aantal punten waarvoor zij staan. Om te kijken of een rij of set wel meer dan 40 punten telt, kunnen we dus via eenvoudige operaties deze informatie uit de hashtabel halen. 3.4 De menselijke speler Het algoritme voor een menselijke speler heeft veel weg van de denkwijze van een computerspeler, alleen zorgt de speler hier voor de input. Om deze input te controleren, wordt er net zoals in pesten gebruikt gemaakt van een functie die de input controleert. Om een kaart te controleren bij pesten, werd een procedure check-kaart opgeroepen. Bij jokeren moet de speler echter meerdere kaarten na elkaar kunnen afleggen, een set of rij dus. Bij jokeren is er dus een procedure die werkt op meerdere kaarten. Wanneer de speler een set van 3 lang wil afleggen, moet hij het aantal kaarten eerst ingeven. Dan wordt de procedure check-kaart (analoog aan deze bij pesten) 3 maal opgeroepen. Wanneer de speler dus al 2 kaarten heeft ingegeven en als derde kaart een foute kaart intypt, moet hij enkel de laatste kaart hertypen. Eerst wordt de menselijke speler gevraagd of hij de kaart op het aflegstapeltje wil kopen. Indien hij dit doet, moet hij deze ook gebruiken. Als dat niet het geval is, wordt de gekochte kaart automatisch verwijderd op het einde van zijn beurt in de plaats van een door de speler zelf gekozen kaart. Indien hij er voor opteert die kaart niet te kopen, wordt een kaart van de trekstapel toegevoegd. Daarna wordt hem eerst gevraagd of hij een rij of set kan ingeven. Wanneer hij dit kan, wordt ook gecontroleerd of de speler niet al zijn kaarten wegspeelt door deze rij of set te werpen, anders kan hij geen kaart meer op de aflegstapel gooien! Indien dit niet het geval is in de allereerste beurt van de speler, is de speler niet uitgekomen en mag hij dus ook geen set of rij aanvullen of een joker omwisselen. In dat geval wordt de speler gevraagd welke kaart hij wil weggooien (indien hij dus geen kaart kocht of indien hij er wel een kocht, deze effectief gebruikte). Waarna de volgende speler aan de beurt is. 4

Indien de speler wel al uitgekomen is, wordt hem gevraagd of hij eventueel een set of rij kan aanvullen die reeds op de aflegplaats liggen. De speler geeft dan de referentie van de set of rij en of hij de set of rij vooraan of achteraan wil aanvullen. Hier wordt ook gecontroleerd of de set of rij na het aanvullen nog steeds geldig is. Indien niet mag de speler opnieuw proberen. Daarna wordt gevraagd of hij een joker uit de aflegplaats kan omwisselen voor de oorspronkelijke kaart. Als dit het geval is geeft de speler eenvoudigweg de referentie van de set of rij in waar hij de joker kan omwisselen. De procedure zoek-joker kijkt dan of de speler de oorspronkelijke kaart wel bezit en wisselt deze dan om. 3.5 Het spel Net als bij pesten is het spel zelf een wisselwerking tussen de procedures voor een menselijke speler en/of computerspeler oproepen. Het spel eindigt wanneer een van de spelers zijn laatste kaart op het aflegstapeltje gooit of wanneer de trekstapel leeg is. Wanneer de trekstapel leeg is, worden de punten geteld van de spelers, het scorebord afgeprint en diegene met het kleinste aantal punten is dan de winnaar. 4 Eigenlijke tijdsschema In week 21 is de computerspeler van pesten, de hashtabel en input-controle-functies geïmplenteerd. Het eigenlijke spel is dan afgewerkt in week 22 en in die week ook getest en gedebugd. In week 23 werd de computerspeler van jokeren en de hashtabel gemaakt. Dit duurde langer dan op het oorspronkelijk tijdsschema, waardoor jokeren pas afgewerkt en gedebugd werd in week 24 en het verslag op het einde van week 24 werd geschreven. In het oorspronkelijk tijdsschema was dus te weinig tijd gerekend voor het spel jokeren. De beide spelen werden incrementeel geïmplementeerd en alle hulpfuncties werden eerst voldoende getest alvorens deze in een groter geheel te gebruiken. Op deze manier werd het debuggen van de code vergemakkelijkt. 5

5 Afhankelijkheidsdiagram Figure 1: Afhankelijkheidsdiagram 6

6 Appendix I: Overview van de sheme bestanden Scheme file Uitleg Fase adt bericht.scm implementatie van ADT bericht 2 adt handkaart.scm implementatie van ADT handkaart 1 adt kaart.scm implementatie van ADT kaart 1 adt score.scm implementatie van ADT score 1 adt scorebord.scm implementatie van ADT scorebord 1 adt soort.scm implementatie van ADT soort 1 adt speler.scm implementatie van ADT speler en ADT circulaire lijst 1 adt spelers.scm implementatie van ADT spelers 1 adt stack.scm implementatie van ADT stack en ADT stapel 1 adt tafel.scm bevat onder andere de aflegplaats 1 en 2 display-pesten.scm ADT, verzorgt de weergave voor pesten 1 en 2 display-jokeren.scm ADT, verzorgt de weergave voor jokeren 1 en 2 jokeren-berichten.scm bevat de berichten die weergegeven worden bij jokeren 2 jokeren-computerspeler.scm ADT computerspeler voor jokeren 2 jokeren-hashtabel.scm ADT, bevat de puntentelling die gehanteerd wordt bij het spel jokeren 2 pesten-berichten.scm bevat alle berichten die gebruikt worden voor pesten 2 pestencomputerspeler.scm ADT computerspeler voor pesten 2 pestenhashtabel.scm ADT, bevat de pestregels en de specifieke eigenschappen van pestkaarten 2 Pesten.scm bevat de functie speel die het spelverloop van pesten voorstelt 2 spel-pesten.scm bevat functies die de input van de speler checken (voor pesten) 2 spel-jokeren.scm bevat functies die de input van de speler checken (voor het spel jokeren) 2 Jokeren.scm bevat de functie speel die het eigenlijke spelverloop van jokeren volgt 2 7

7 Appendix II: Jokeren Figure 2: Output van het spel jokeren 8