Estoy interesado en escribir un motor de ajedrez (principalmente como ejercicio de aprendizaje) y estaría interesado en cualquier recurso que la gente sepa que podría ser de interés o uso, cualquier cosa en realidad: artículos, libros, teoría, tutoriales, cualquier cosa que pueda ser útil.
82
Respuestas:
De mis archivos:
fuente
Al crear mi motor de ajedrez, pasé meses tratando de recopilar buenos recursos que describieran algunos de los aspectos más difíciles de crear un juego de ajedrez. Aquí hay una lista de los que encontré más útiles:
Programación de ajedrez por François Dominic Laramée
Este es el artículo que me llevó al ajedrez por computadora. Es una gran descripción general de cómo las computadoras juegan al ajedrez. Es extremadamente fácil de leer y le presentará todos los términos y palabras clave.
http://www.gamedev.net/page/resources/_/technical/artificial-intelligence/chess-programming-part-i-getting-started-r1014
Wiki de ajedrez informático , esto realmente se ha expandido en los últimos meses. Es un excelente recurso para material de referencia.
https://www.chessprogramming.org/Main_Page
Enlaces de ajedrez informático de Louis Kessler
Una vez que revise los recursos anteriores, podrá encontrar el resto en la siguiente página de enlaces.
http://www.lkessler.com/cclinks.shtml
Por último, pero no menos importante, escribo un Blog de ajedrez por computadora que lo lleva a través de todos los pasos para escribir un motor de ajedrez en C # desde cero, incluye una sección de enlaces de ajedrez para computadora y un kit de inicio de juego de ajedrez.
http://www.chessbin.com
Adam Berent
fuente
Esto es básicamente en el campo de la Inteligencia Artificial (IA).
La forma más común de hacer que una computadora "piense" en un juego de ajedrez es usando el método mini-max donde la computadora "piensa" analizando los resultados de hacer diferentes movimientos antes de tiempo desde el estado actual.
La "bondad" de los resultados de diferentes movimientos se puede determinar a partir de muchos criterios, como puntuación, número de enemigos restantes, estado ganador, por ejemplo. Por ejemplo, si mueves al jugador hacia la derecha y ganas el juego, ese es un estado muy bueno. Pero si lo mueves hacia la izquierda no obtienes nada. Es razonable moverse hacia la derecha. Esta función que define la "bondad" suele denominarse Función heurística.
Este proceso se realiza de forma recursiva durante muchos turnos. Cuanto mayor sea el número de vueltas, más tiempo necesitará. Y cuanto mayor sea el número de vueltas, más inteligente será su software. Pensar en el futuro en un solo turno solo puede resultar en una selección codiciosa. El software de ajedrez inteligente tiene una gran función heurística y piensa en el futuro en muchos turnos.
PD. Hay algunos detalles del algoritmo mini-max que no expliqué aquí, pero esto debería cubrir la idea básica.
fuente
Me he unido a la misma liga de Paul Wicks (arriba), yo también quiero escribir un motor de ajedrez por mi propio aprendizaje, la única limitación es mi trabajo diario (que es trabajar en servicios web aburridos y esas cosas ...) pero vale la pena el dolor.
Decidí construirlo usando un enfoque capa por capa. Casi he terminado con la parte multijugador, es decir (HUMAN vs HUMAN).
Una vez que termine con esto, me encantaría incorporar la capa AI para apoyar el esquema de juego (COMPUTER vs HUMAN) Esta es la parte que más me preocupa, he encontrado muy buenos consejos de ayuda aquí en este hilo, muchas gracias a todos ustedes.
Actualmente, el lenguaje con el que estoy bien versado es Java, en caso de que haya un impacto en el rendimiento, podría portarlo a C ++.
fuente