2010-05-27 11 views
6

Come parte di un compito a casa, devo programmare un semplice gioco di scacchi in Java. Stavo pensando di cogliere l'opportunità di sperimentare con la ricorsione, e mi stavo chiedendo se c'è un ovvio candidato negli scacchi per il codice ricorsivo?Buon uso della ricorsione nella programmazione di scacchi?

+1

Tutto ciò che riguarda gli alberi. –

+0

Uno dei miei primi programmi Java (nel 1998) era un programma di gioco degli scacchi, usando un algoritmo minime ricorsivo che Laplace menziona sotto. È sicuramente un progetto interessante per imparare Java e la ricorsione con. – Jesper

+0

www.m-w.com dice che la ricorsività non è una parola inglese valida. Titolo modificato –

risposta

7

Il candidato più ovvio per me sarebbe una routine minimax ricorsiva per la ricerca per le mosse migliori. Anche questo entra molto nella teoria dietro gli algoritmi di ricerca e sarebbe piuttosto interessante da implementare.

Esempio:

http://www.devshed.com/c/a/Practices/Solving-Problems-with-Recursion/6/

+0

Penso anche che non ci sia alternativa al minmax ricorsivo (se l'idea è di sviluppare un KI) –

+0

Utile anche questo link che spiega alpha-beta http://www.fierz.ch/strategy1.htm –

+0

Wow, questo è un grande articolo Sembra che questo sia un metodo che sarebbe usato in modo diverso a stadi diversi. Forse ci sarebbe una versione per l'accoppiamento e una versione per qualche altro obiettivo (ad es., Catturare un pezzo), ognuna con una profondità diversa. Hmmm ... Divertimento. – JDelage

1

ricerca depth-first è un ottimo candidato per la ricorsione. quindi, se stai programmando un'intelligenza artificiale per l'assegnazione dei compiti a casa, l'algoritmo della testa di mira dell'intelligenza artificiale per cercare di capire la migliore mossa successiva sarebbe un buon candidato.

Attenzione però: è possibile esaurire la memoria rapidamente. Probabilmente vuoi limitare il numero di mosse profonde in cui l'IA può apparire.

3

Sì, c'è. Se hai qualche funzione che valuti "forza" di qualche posizione per dire giocatore bianco. Puoi spostare un pezzo e chiamarlo ricorsivamente per valutare il valore di una mossa e scegliere la mossa migliore.

Si dovrebbe chiamare la stessa funzione per il giocatore nero, scambiando i ruoli per neri e bianchi, valutando così il "pericolo" di una mossa dell'avversario.

Poi di nuovo per i bianchi, ecc

Basta essere consapevoli, non si dovrebbe andare troppo in profondità nei livelli di ricorsione o ci vorrà per sempre.

+0

Grazie. Ho solo bisogno di trovare una buona logica per il valore di ogni mossa. – JDelage

1

Mente dynamic programming, quando si dispone di molteplici combinazioni che portano alla stessa scheda, è importante ricordarsi di memorizzare nella cache le mosse al fine di evitare di ripetere i calcoli

Se si rileva una ricorsione solo vi condurrà in un luogo dove si ha stato, basta rompere quella chiamata. Questo è noto come backtracking

Problemi correlati