Notatie

De stukken die meedoen
afkorting naam - code naam - gewoon speler
k Black zwarte koning gebruiker
K White witte koning computer
N Knight wit paard computer
B Bishop witte loper computer

De zetten worden in het programma niet volgens de schaakbordcoördinaten weergegeven maar volgens een eigen notatie. Het vakje linksboven is 1:1 en het vakje rechtsonder 8:8.
Dit is van praktische aard om makkelijker met zetten te kunnen rekenen in het programma.
Het invoeren van de zetten gaat wel gewoon via de e2e4 notatie. (e2e4: om het stuk van e2 naar e4 te verplaatsen)


Representatie

De representatie bestaat uit een rits variabelen, van elkaar gescheiden door een zelfgemaakte operator die in chess.pl staat:

          op( 220, xfy, .. ),
        
De stukken zijn in de notatie zoals omschreven bij Notatie.
Side betekend wie er aan set is, met mogelijke waarden us (de gebruiker) en them (de computer).
Depth is de diepte waarin het minimax-algoritme zich momenteel bevind.
De stelling van het bord worden als volgt doorgegeven aan de predicaten: Side..White..Bishop..Knight..Black..Depth


Probleem decompositie

Om het loper-en-paard eindspel kan enkel tot schaakmat leiden, indien de koning van de tegenpartij in een een hoek an worden gedreven. Het veld in deze hoek moet dan dezelfde kleur hebben als die van de velden waarover de loper zich beweegt (zodat de loper de koning uiteindelijk schaakmat kan zetten).
Zo ziet de eindsituatie eruit:

De zetten die tot deze eindsituatie zijn: 1.Ne7-d5 Kb8-a8 2.Nd5-b4 Ka8-b8 3.Nb4-a6+ Kb8-a8 4.Bf5-e4#

Wanneer dit werkt kan men het programma uitbreiden door er eerst voor te zorgen dat de zwarte koning in een goede hoek wordt gedreven, daarna treed dan het hierboven beschreven proces in werking.

Tactieken

Om een schaakmat te kunnen afdwingen met een paard en een loper moet de zwarte koning naar de hoek gedwongen worden waar de loper kan komen.
Omdat wij maar een week hebben is dat niet genoeg tijd om vanuit elke stelling mat te kunnen zetten. Daarom zullen we in een situatie beginnen van waaruit mat binnen een paar zetten gehaald kan worden.

De tactieken die de toren en de koningin gebruiken zijn bekend en lijken niet op de voor die van het paard en de loper en kunnen daar ook niet voor gebruikt worden.

De tactieken die we wilden gebruiken zijn die naar de hoek drijven zodat de zwarte koning nog maar twee vakjes beweegruimte heeft. Die twee vakjes worden door de witte koning en de loper dichtgehouden en vervolgens wordt door het paard vakje a6 gekozen (zie Probleem decompositie) en door de loper mat afgedwongen op e4.

Uiteindelijk zijn we maar gekomen tot het gebruik van 1 tactiek: het laten zoeken of er een mat afgedwongen kan worden tot 3 zetten diepte. Dit is eigenlijk een beetje flauw maar het werkt wel en in de tijd die we hebben is er niet meer haalbaar.


Gebruikte hardware en software

Computers op school in P126, i686 redhat linux
Thuis bij Wouter een acer aspire 1703SCi met fedora core 2
Thuis bij Jan een Pentium 4 2.4GHz met Windows XP, Microsoft Visual Studio 6 (als editor) en SWI-Prolog versie 5.2.8 (als testomgeving)



Conclusie

We zijn niet zo ver gekomen als we maandag nog gedacht hadden. Dit kwam gedeeltelijk doordat we dinsdag pas de volledige code van Matthijs kregen en ik donderdag pas de goede prolog-bestanden ging gebruiken. (Deze waren volgens Jan gedurende de eerste week van de projectweek vervangen door nieuwere versies.

Nadat ik eindelijk de goede code tot mijn beschikking had en we in de gate hadden hoe alles werkte in de AL0-taal, dit is vanaf woensdag middag is ons project dan ook in een stroomversnelling geraakt en hebben we bijna alles herschreven. Maat nu genoeg gezeurd over tegenslagen.


De tactieken die we gebruiken zijn nog niet voldoende om vanaf elke willekeurige stelling mat te kunnen afdwingen.
Er moeten derhalve tactieken worden toegevoegd die bewerkstelligen dat de zwarte koning vanuit iedere positie in de door ons veronderstelde startpositie wordt gebracht. Van daaruit kunnen de oude methoden het dan overnemen.