AI Chess
Een Python-gebaseerde schaakspel met een AI tegenstander met Minimax en Alpha-Beta pruning.
AI Chess was gemaakt tijdens mijn eerste jaar van mijn huidige studie als onderdeel van een schoolproject. De opdracht was flexibel qua onderwerp, met als enige eis dat het programma een implementatie had van een AI. Ik had gekozen voor een schaakmachine omdat ik vroeger schaakte en de uitdaging mij intresseerde. Door dit project kon ik mijn intresse in het spel combineren met mijn nieuwsgierigheid in algoritmisch denken.
De eerste stap in dit project was een schaakspel maken. Ik had als alternatief een schaakapplicatie van iemand anders gebruiken, maar mijn eigen schaakspel maken vanaf nul was effectiever in het lange termijn. Hierdoor kon ik in zowel het algoritme als het spel logica aanpassen zonder problemen. Ook werd het verbinden van het spel met het algoritme makkelijker. Één van de uitdagende aspecten was regels zoals rokeren implementeren, omdat als iemand rokeert er twee stukken in één beurt bewegen. Hierdoor moesten er extra validaties gemaakt worden om alle spelregels te implementeren.
Het volgende en belangrijkste deel van dit project was de schaakmachine ontwikkelen. Ik heb hiervoor een Minimax algoritme met Alpha-Beta pruning gemaakt om de AI de huidige stelling te laten evalueren en vervolgens de beste zet te laten maken door toekomstige stellingen te simuleren. Door het Alpha-Beta pruning werd de prestatie van het programma veel sneller, door mogelijke takken van het spel af te kappen. De evaluatie functie gebruikt aspecten zoals controle over het midden van het bord, materiële balans en mobiliteit van stukken.
Dit project was ontwikkelt met Python en de Pygame module. Ik koos voor Python omdat ik hier al veel ervaring mee had opgedaan in eerdere projecten. Ik heb objectgeoriënteerde principes toegepast, zoals overerving, om een basisklasse te creëren die de mogelijke zetten in een bepaalde stelling vindt. Vanaf die basisklasse heb ik de functionaliteit uitgebreid tot een compleet schaakspel met een grafische interface. Door Pygame te gebruiken kon ik een mooie interactieve 2D interface maken. Ik had Pygame eerder nog niet gebruikt, maar het was relatief simpel om te gebruiken.
Bekijk Project