Chess programming

Pagina: 1
Acties:
  • 1.175 views sinds 30-01-2008

Acties:
  • 0 Henk 'm!

Anoniem: 41047

Topicstarter
Gewoon even een vraagje uit nieuwsgierigheid:

Zijn er hier mensen die net als ik zo gek zijn om een
chess engine te programmeren?
Ik heb zelf een tijdje geleden een engine geschreven in C.
En deze week ben ik weer eens opgestart met het idee om mijn
engine een XBOARD interface te geven.
Ik ben wel benieuwd of er meer mensen hetzelfde doen en hoe zij dat dan aanpakken. En als mijn XBOARD interface werkt kan mijn engine ook eens een potje schaken tegen die van jou misschien?

Acties:
  • 0 Henk 'm!

  • Crysania
  • Registratie: September 2000
  • Laatst online: 09:28
ik wil dit ook nog een keer gaan doen, maar ik heb geen tijd voor dit nu :(

Acties:
  • 0 Henk 'm!

Anoniem: 41047

Topicstarter
Tja het kost wel heel veel tijd...
en als hij dan eindelijk kan schaken (dus zich aan alle regeltjes houdt) wordt het een verslaving om hem steeds beter te maken :)
Maar het is zeker de moeite waard!

Acties:
  • 0 Henk 'm!

Anoniem: 2164

Hoe pak je zoiets in hemelsnaam aan? Heb je een paar urlz met info?

Acties:
  • 0 Henk 'm!

Anoniem: 33307

Klinkt inderdaad grappig ...
Heb er alleen ook niet echt veel tijd voor ...
En de benodigde C-kennis ...
Kan het wel lezen, maar blijf toch een Delphi-programmeur ...

Acties:
  • 0 Henk 'm!

Anoniem: 41047

Topicstarter
Als je zoekt op "chess programming" kan je heel veel info vinden. Zoek ook op TSCP, dit is een heel simpel schaakprogrammaatje waarvan je de source code in mag kijken. In het begin was mijn engine hierop gebaseerd. Daarna kan je meer advanced technieken gebruiken om hem een beetje beter te maken.
Eigenlijk hoeft een schaakprogramma niet zo ingewikkeld te zijn, je doorzoekt gewoon (recursief) een boom-structuur bestaande uit afwisselend een zet van jou (de engine) gevolgt door een zet van de tegenstander. Op een gegeven diepte stop je en roep je een functie aan om de bereikte positie op het bord een score te geven. En op die manier zoek je een optimale positie die je dan probeert te bereiken met je eerstvolgende zet...
Hier zijn gewoon standaard algoritmes voor...
De kunst zit hem juist in het optimaliseren van dit zoek process.

Acties:
  • 0 Henk 'm!

Anoniem: 41047

Topicstarter
Hier kan je de source code van TSCP (hele simpele chess engine) vinden:

http://home.earthlink.net/~tckjr/

Acties:
  • 0 Henk 'm!

Anoniem: 37277

Ik heb het naar een half jaar pascal op school geprobeerd. Was geinterreseert in AI.

Kwam niet verder dan het spel zelf. Had wel alle zetregels er goed in gekregen. Maar bij het aansturen ging het mis, kon geen grafische troep erinzetten, en met ascII art lukte het me niet goed onderschijt te maken tussen speler zwart en speler wit.

Ook het aansturen met de muis kwam ik niet uit.

Acties:
  • 0 Henk 'm!

  • DennisBoom
  • Registratie: Mei 2000
  • Laatst online: 28-05 21:07
Iemand die ik ken heeft ook een schaakserver. Hij doet zelfs mee met computerschaakkampioenschappen (3 keer woordwaarde ;) ). Ik weet niet precies hoe en wat, maar misschien dat google uitkomst kan bieden.

Geen beurs, geen tempo


Acties:
  • 0 Henk 'm!

Anoniem: 39441

Lijkt me erg leuk :) Wat is momenteel de beste? Die van IBM die de wereldkampioen had verslagen?

Acties:
  • 0 Henk 'm!

Anoniem: 33423

Lijkt me erg leuk :) Wat is momenteel de beste? Die van IBM die de wereldkampioen had verslagen?
Hoe lang is dat wel niet geleden? Mwa, dan (zouden) moeten huidige programma's beter zijn, want met snellere processoren en geheugen kan dan verder in de structuur gekeken worden.

Acties:
  • 0 Henk 'm!

  • serkoon
  • Registratie: April 2000
  • Niet online

serkoon

mekker.

Probleem is een beetje dat je -erg- veel mogelijkheden hebt. Je zult ervoor moeten zorgen dat je een standaard handhaafd waarmee je kunt bepalen wanneer een ingegane tak niet genoeg oplevert, waarna je een stap terug doet. (backtracking) Dit om het proces wat te versnellen.

Daarnaast kent een goede schaakcomputer zover ik weet ook duizenden gespeelde wedstrijden uit z'n hoofd, waardoor de boel ook weer sneller wordt ..

mgoed.. ik kom d'r niet aan toe, kom vaak niet veel verder dan een idee en een paar dagen coden ;(

Acties:
  • 0 Henk 'm!

Anoniem: 924393

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.

Acties:
  • 0 Henk 'm!

  • Pierre
  • Registratie: Maart 2005
  • Laatst online: 13:17

Pierre

Van nature lui!

En jij schopt een topic van 16 jaar oud :?

In the end, we will remember not the words of our enemies, but the silence of our friends.


Acties:
  • 0 Henk 'm!

Anoniem: 924393

nice :)

Acties:
  • 0 Henk 'm!

  • Blokker_1999
  • Registratie: Februari 2003
  • Nu online

Blokker_1999

Full steam ahead

Pierre schreef op zondag 21 mei 2017 @ 12:23:
En jij schopt een topic van 16 jaar oud :?
Vooral in combinatie met zijn laatste zin _O-

No keyboard detected. Press F1 to continue.


Acties:
  • 0 Henk 'm!

Anoniem: 924393

Misschien is topic-starter al 16 jaar bezig.........

Afbeeldingslocatie: https://68.media.tumblr.com/2336764e4d8bf681bf14d68d6b570a93/tumblr_mm79did1Qa1qdi5kdo1_500.png

[ Voor 53% gewijzigd door Anoniem: 924393 op 21-05-2017 12:44 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-06 00:38

NMe

Quia Ego Sic Dico.

Ik mag hopen dat de TS er na 16 jaar wel uit is.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.