Stap 6: Schaken
Chess Engine
Ik zou omvatten een heleboel dingen hier, maar het wordt beter uitgelegd in sites zoals chessprogramming.wikispaces.com. Ik zal enkel de grondbeginselen behandelen.
Beschrijving van een eenvoudig programma uitzien als kunstmatige intelligentie, het is niet eerlijk omdat alles wat zij doen is brute kracht zoeken.
Een schaakprogramma bestaat uit de volgende onderdelen:
- Zet de Generator: Gegeven een oorspronkelijke toestand van het schaakbord produceert alle geldige posities door de regels.
- Evaluatie: Geeft als resultaat een Score van een bord staat, kan zo simpel zijn als het tellen van het aantal stuks met gewichten (een pion gewichten 1 een queen 9). Hoe hoger de score het beste dit bord staat is voor de speler die de turn heeft.
- Zorg/Unmake: Een manier om aplay een verhuizing naar de Raad van bestuur variabele en tu ongedaan maken het later
- Zoek: Een algorthm al te sesch Trough de bewegingen door de generator van de beweging genereren, is de zoekfunctie. Een van de eenvoudigste soort is de MinMax seach . Vroeger was ik een beetje beter zoeken de Alpha-beta snoeien, die vermijden zoeken nutteloos takken van de zoekboom.
De zoekopdracht wordt uitgevoerd op deze manier: genereert alle beweegt omhoog naar een diepe search (een aantal bochten om vooruit te kijken), geeft een score voor elk van de bewegingen in het puntje van de boom en ga vervolgens terug de branch die staat garant voor het beste resultaat.
Het kan veel worden verbeterd door het toevoegen van een quiesent seach aan, deze functie zou Destroy een paar meer beweegt wanneer er een opname om te voorkomen dat per ongeluk evaluatin een van die posities waar een rampage gebeurt.
Chess Interface
De gebruikersinterface wordt afgehandeld door deze routines. Ding als het selecteren van een stuk en zet meer kan doen... Alleen kijken naar de code als u interesse hebt, het is allemaal gebaseerd in een statusmachine zodat de code niet-blokkerende.
Een mooi ding om op te merken is dat om te controleren of een beweging die de speler probeert te maken geldig dat ik de verhuizing generator gebruikt is om alle geldige beweegt, en dan selectievakje als de speler verplaatst is een van hen.