2009-01-30 7 views

Respuesta

98

De mis archivos:

+4

La Wiki de programación de ajedrez es genial. –

+0

El segundo enlace es ahora: http://archive.gamedev.net/reference/programming/features/chess1/ – Grandpa

+0

Gracias, abuelo - enlace ahora corregido. – RoadWarrior

7

Resumen de muchos algoritmos útiles en el ajedrez - http://www.frayn.net/beowulf/theory.html - debe ser un buen punto de partida para comprender la medida del problema y varias formas de simplificar el trabajo computacional.

-Adam

1

Esto es, básicamente, en el campo de Artificial Intelligence (AI).

La forma más común de hacer que un equipo "pensar" en el juego de ajedrez está utilizando el ordenador donde mini-max method "pensar" mediante el análisis de los resultados de haciendo diferentes movimientos antes del tiempo desde el estado actual.

La "bondad" de los resultados de diferentes movimientos se puede determinar a partir de muchos criterios, como la puntuación, el número de enemigos restantes, el estado ganador, por ejemplo. Por ejemplo, si mueves al jugador hacia la derecha y ganas el juego, ese es un muy buen estado. Pero si lo mueves hacia la izquierda no obtienes nada. Es razonable moverse hacia la derecha. Esta función que define "bondad" generalmente se llama Función heurística.

Este proceso se realiza de forma recursiva durante muchos giros. Mientras mayor sea el número de giros, más tiempo necesitará. Y cuanto mayor sea el número de giros, más inteligente será su software. Pensar en el futuro en un solo turno solo puede resultar en una selección codiciosa. El software inteligente de ajedrez tiene una gran función heurística y piensa en el futuro en muchos turnos.

ps. Hay algunos detalles del algoritmo mini-max que no explique aquí, pero esto debería cubrir la idea básica.

4

Siempre puede echar un vistazo al código GNU Chess. de

3

Claude Shannon 1949 paper (advertencia: PDF) en el sujeto es un buen punto de partida

2

El mejor tutorial de programación de ajedrez para principiantes está en GameDev. Es muy fácil de entender, mientras que va mucho en detalles.

26

Al crear mi motor de ajedrez, pasé meses tratando de reunir buenos recursos que describen algunos de los aspectos más difíciles de crear un juego de ajedrez. He aquí una lista de los que encontré más útil:

programación de ajedrez por François Dominic Laramée

Este artículo es la que me metió en el ordenador de ajedrez, Es una gran visión 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

ajedrez ordenador wiki, esto realmente se ha ampliado en los últimos meses. Es un excelente recurso para material de referencia.

http://chessprogramming.wikispaces.com/

de Louis Kessler Computer Chess Enlaces

vez que pasan por encima de los recursos que el resto se puede encontrar en la siguiente página de enlaces.

http://www.lkessler.com/cclinks.shtml

Por último, pero no menos importante escribo un Computer Chess Blog que te lleva a través de todos los pasos de escribir un motor de ajedrez en C# desde cero, que incluye un ordenador de ajedrez sección de enlaces y un juego de ajedrez de arranque equipo.

http://www.chessbin.com

Adam Berent

+0

¡Definitivamente tengo que apoyarte en esto! – lkessler

1

me he unido a la misma liga de Paul Mechas (arriba), también yo quiero escribir un motor de ajedrez para, única restricción mi propia del amor de aprendizaje es mi trabajo del día (que es trabajar en servicios web aburridos y esas cosas ...) pero vale la pena.

Decidí construirlo utilizando un enfoque capa por capa. Estoy casi terminado con la parte de jugadores múltiples, es decir (HUMANA vs HUMANA).

Una vez que haya terminado con esto, me gustaría incorporar la capa AI para apoyar el esquema (COMPUTER vs HUMAN) jugando.Esta es la parte que más me preocupa, he encontrado muy buenos consejos de ayuda aquí en este hilo, un gran agradecimiento a todos ustedes.

Actualmente, el idioma que conozco bien es Java, en caso de que haya un rendimiento alcanzado , entonces podría portarlo a C++.

Cuestiones relacionadas