Labboek Goudzoeken in Prolog

Het labboek van Zora Jurriens en Tiko Schep


de code


Dag 5:
30-juni-2006
vrijdag


Vandaag leggen we de laatste hand aan ons programma. De schoonheidfoutjes hebben we er uit weten
te werken en ons programma doet het helemaal. Helaas zijn we er niet meer aan toe gekomen om
goudzoeken over te zetten naar java, zodat we het op de robot kunnen laten werken. Wel hebben we
er over nagedacht om het heel simplistisch dan wel in het schaakprogramma te zetten, maar na
verdere overweging lijkt dit niet mogelijk zonder dat onze dwerg dan opeens wordt geslagen door
een schaakstuk van de tegenstander.


Dag 4:
29-juni-2006
donderdag


We hebben vandaag gesproken met Arnoud en deze stelde voor om het bord als een lijst te
representeren en elke mogelijke move uit te schrijven. Dit betekent voor ons dat we vandaag
heel erg lang bezig zijn geweest met het uitschrijven van de nieuwe code. Na verscheidene uren,
konedn we eindelijk Goudzoeker gaan testen. En hij deed niet. Na eindeloos moves schrijven
bleek dat we een stomme fout gemaakt hadden, door anonymous variables te gebruiken in de moves
in plaats van gedefinieerde variabele. Dit leidde tot een bord waar het goud naar de dwerg werd
toegbracht om meteen te succeeden. Om dit op te lossen moeten we al onze moves omschrijven.
We zijn van plan om dit vanavond thuis te doen.
Het is diep in de avond en ons programma werkt eindelijk op een paar schoonheidsfoutjes na.


Dag 3:
28-juni-2006
woensdag


Vandaag is alles mis gegaan, we hebben ondervonden dat door onze representatie van het speelbord
als string met operatoren, niet mogelijk om de state met de moves te matchen. Het grootste
probleem wat wij hieraan ondervinden is dat Prolog niet een anonymous variabele kan matchen aan
een string op de manier zoals wij dat hadden gedacht. We weten nu nog niet hoe we verder moeten
en willen morgen met de projectbegeleider overleggen, over hoe we dit probleem kunnen aanpakken.
wel hebben vandaag een klein succes gehad met het maken van de prettyprint, dit predikaat schrijft
recursief elk speelbord van het pad wat de dwerg moet gaan lopen op.


Dag 2:
27-juni-2006
dinsdag


Vandaag staat op de planning om het Goudzoeken te implemnteren. Om te beginnen zijn
afgestapt van het idee om A* als zoekalgoritme te gebruiken. De reden hiervoor is dat
dit onnodig veel moeite kost, omdat in Goudzoeken niet echt een zoekalgoritme met een
een heuristiek vereist is. We hebben besloten om het simpelere algoritme Breadthfirst
te gebruiken. We hebben vandaag alle moves en goals geschreven en het zoekalgoritme proberen aan te passen
op het programma. Helaas is het ons vandaag nog niet gelukt om het programma werkende te krijgen.
Het programma is nog niet in staat om de states te matchen aan de moves. we hebben het gevoel dat
we dit morgen wel kunnen oplossen, door het zoekalgoritme aan te passen.


Dag 1:
26-juni-2006
maandag


Het originele idee waar we vandaag mee zijn begonnen, was het spel drie op een rij.
We begonnen met dit spel uit elkaar te halen, en te bedenken hoe dit het beste
in Prolog geprogrammeerd zou kunnen worden. Na enige tijd zijn we de inspiratie
voor drie op een rij verloren en hebben we besloten om een voor een ander spel te gaan.
Aan de hand van het spel Sokoban hebben we ons eigen spel Goudzoeken bedacht.

Het spel Goudzoeken bestaat uit verschillende componenten, zo is er het
goud wat gevonden kan worden, de dwerg die het goud wil vinden en de
stenen die een obstructie vormen voor de doorgang naar het goud.

De bedoeling van het spel is dat de dwerg de stenen zo weet te duwen dat
er een doortocht naar het goud onstaat.

Het spel wordt gespeeld op een vierkant speelbord van vier vakjes bij
vier vakjes. Een steen beslaat een enkel vakje en kan door de dwerg naar
voren worden geduwd. De dwerg zijn bewegingsvrijheid bestaat uit de
mogelijkheid een vakje naar voren of naar links, naar rechts of naar
achteren te lopen.

Nu we wat vertraging hebben opgelopen met ons idee, is het resultaat van vandaag,
minimaal. Gelukkig zijn we tevreden over ons nieuwe idee en hebben we een opzet van
de code van het spel kunnen maken.
De opzet die we gemaakt hebben geeft ons een goed idee, over hoe we de implementatie van
het programma in Prolog kunnen gaan aanpakken.

De planning voor morgen is om het A* zoekalgoritme te gebruiken, bij het zoeken naar het
snelste pad. De mogelijke moves van de dwerg willen we gaan representeren als een string
van variabelen, die gescheiden worden door een '/' operator.