mercoledì 28 febbraio 2007

Consigli (e non solo) per chi vuole scrivere un motore scacchistico

Scrivere un programma che gioca a scacchi potrebbe sembrare a seconda dei punti di vista, un’impresa titanica o un qualcosa di banale; ciò dipende dalle proprie conoscenze di programmazione, dal linguaggio utilizzato, e anche dalla conoscenza del gioco. Se qualcuno di voi decidesse di imbarcarsi in un’impresa del genere, potrebbe fare buon uso di alcuni siti e testi che andrò ad elencare brevemente in quest’articolo.

Per prima cosa si potrebbe partire dall’analizzare un motore di gioco già esistente, come Chess della FSF, che è possibile trovare on line, scaricando il codice e consultando anche le rec.games.chess.computer FAQ. Questo prodotto è disponibile solo per *NIX, ma per i casi di studio può andare più che bene.

Una volta che si ha un’idea di come funziona un software professionale, è possibile consultare alcuni tutorial disponibili in Rete, un buon “contenitore” potrebbe essere la sezione documenti di Mizar Chess Engine che ha molti riferimenti, link e software per il programmatore di motori scacchistici. Uno in particolare è interessante, Some Aspects of Chess Programming, non proprio elementare, ma ricchissimo di spunti e approfondimenti. Per chi invece conosce il famoso motore DarkThought, il documento "How DarkThought Plays Chess" potrebbe risultare fondamentale nella comprensione delle dinamiche di gioco.

Ovviamente, a meno che non intendiamo sviluppare anche un’interfaccia grafica particolare, il nostro motore potrebbe usarne una delle tante esistenti in rete, anche gratuitamente, purché venga rispettato lo standard UCI (Universal Chess Interface), le cui specifiche tecniche sono disponibili anche sul sito di ChessBase. Chissà che forse un domani il vostro motore non venga presentato nella Golden League! Per ora il primo engine classificato è Rybka, che ha battuto ampiamente Deep Fritz, il quale però rimane comunque campione del mondo dei software e sul quale prometto un articolo entro breve.

fonte: Programmazione.it

Nessun commento: