Hoe moeilijk kan het zijn? Dacht ik ooit...........
Torens gaan horizontaal, verticaal. Lopers diagonaal, Dame kan alletwee, koning ook, maar 1 vakje per keer.
Paarden doen een paardensprong, maar dan begint het ge-emmer......
Zwaar onderschat hoe moeilijk dit is........
Witte pionnen en zwarte pionnen doen niet hetzelfde. De een gaat "omhoog", de ander "omlaag".
Pionnen zetten en slaan anders dan de andere stukken.
Dames, torens en lopers mogen meerdere vakjes "sliden".
Pionnen aan de overkant? kan een dame worden, maar ook een paard, loper of toren.
Pionnen aan de overkant? kunnen ook een ander stuk slaan en die 4 verschillende stukken worden.
En passant slaan?, HELL I tell you, verschrikkelijk om te implementeren.
https://chessprogramming.wikispaces.com/Perft+Results
Rokade?, HELL, I tell you.
Wat is een onaangeraakte toren? gewoon een heel ander stuk dan een al bewogen toren, ook al hebben ze dezelfde richtingen. (dit is een tip)
Wat is schaak? wat is schaakmat? wat is een remise, 2 koningen op het bord, of pat, of theoretisch bewezen remise eindspelen.
50 zetten regel, de grote zwakheid van computers omdat ze bijna nooit 50 zetten vooruit kunnen kijken, maar na 49 zetten wel de minst slechte zet gaan spelen, die dus verliezend zou kunnen zijn.
Je kunt pas van echte schaakcomputer spreken als alle goede zogenaamde PERFT getallen er uit rollen.
Je kunt en-passant en rokade even laten zitten, en pionnen alleen naar dames laten promoveren, maar dan zal je je programmatje nooit kunnen testen tegen andere programma's die dit wel kunnen.
Maak geen 2D-array van 8x8, you are entering a world of pain Donny.
Begin niet meteen met het 64-bits-bitboard idee, ook al is dit het snelst, you are entering a world of pain.
Begin met een zogenaamd 0x88 bord, je kunt dan in 1 if-statement vragen of een stuk "van het bord valt".
Niet zo snel als een bitboard, maar wel makkelijker om mee te werken.
Geef je stukken de waarden -7 tot +7
-7, zwarte dame
-6, zwarte toren
-5, zwarte loper
-4, zwarte toren op startplaats
-3, zwarte koning
-2, zwart paard
-1, zwarte pion
1, witte pion
2, wit paard
3, witte koning
4, witte toren op startplaats
5, witte loper
6, witte toren
7 witte dame
Go from there..........
Al snel kom je er achter dat je favoriete programmeertaal niet snel genoeg (nooit snel genoeg) is om dit probleem "even snel" op te lossen. Je moet gaan kettingzagen in de boom van alle mogelijke schaakstellingen.
Minimax wordt alpha-beta. Alpha-beta met nullmoves? PVS? Razoring?
Zelf je eigen transposition hashtabel bouwen met XOR's?
Allemaal zeer leerzaam, maar moeilijk te debuggen als je programmatje ineens zwakke zetten gaat spelen.
Of keihard vastloopt of in een loop blijft hangen.
Endgame table-bases? Je eigen openingszetten-boek bouwen?
Het idee een computer fatsoenlijk laten schaken is al zo oud als de computer zelf.
Veel wielen zijn al voor je uitgevonden maar het blijft een hobby voor echt contact-gestoorde nerds.
Gewoon niet onderschatten. You will not finish in a few weeks.........
En je ligt 40 jaar achter op de rest.