Me interesa escribir un motor de ajedrez (sobre todo como ejercicio de aprendizaje) y me interesarían los recursos que la gente conozca que puedan ser de su interés o uso, cualquier cosa realmente: documentos, libros, teoría, tutoriales, cualquier cosa que Podría ser útil.¿Cuáles son algunos buenos recursos para escribir un motor de ajedrez?
Respuesta
De mis archivos:
- Esta es una útil chess programming wiki.
- Esto es simple introduction a la programación de ajedrez.
- Este contiene varios pasos fáciles paso a paso YouTube tutorial series' que van desde el nivel principiante hasta el nivel avanzado.
- Esto es more advanced introduction.
- Esto es Adam Berent's interesting computer chess blog.
- Esto es good analysis of MTD(f), un algoritmo de búsqueda interesante.
- Esta es una buena guía para validation of move generation.
- Esto es un montón de good information on the Rebel motor de ajedrez.
- Esto es un montón de good information on the Dark Thought motor de ajedrez.
- Buena información y código fuente para Monsoon chess engine.
- Estos son more notes on chess programming.
- A razonable introduction to rotated bitboards.
- A razonable introduction to magic bitboards.
- A razonable introduction to late move reductions.
- Un vistazo a null-move pruning.
- A collection of position sets para fines de prueba.
- Aquí hay un informe anterior de 2 students who wrote a chess program.
- Un grupo de miscellaneous chess programming links.
- Finalmente, aquí está Wikipedia's take on computer chess.
La Wiki de programación de ajedrez es genial. –
El segundo enlace es ahora: http://archive.gamedev.net/reference/programming/features/chess1/ – Grandpa
Gracias, abuelo - enlace ahora corregido. – RoadWarrior
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
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.
Siempre puede echar un vistazo al código GNU Chess. de
Claude Shannon 1949 paper (advertencia: PDF) en el sujeto es un buen punto de partida
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.
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.
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.
Adam Berent
¡Definitivamente tengo que apoyarte en esto! – lkessler
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++.
- 1. ¿Cuáles son algunos buenos recursos de DirectX para un principiante?
- 2. ¿Cuáles son algunos buenos recursos informáticos para un programador ciego?
- 3. ¿Cuáles son algunos buenos recursos para comprender SNMP MIB?
- 4. ¿Cuáles son algunos buenos recursos para aprender a usar NAnt?
- 5. ¿Cuáles son algunos buenos recursos para GNU Make?
- 6. ¿Cuáles son algunos buenos recursos para aprender Grails?
- 7. ¿Cuáles son algunos buenos recursos sobre el uso de Lucene.Net?
- 8. ¿Cuáles son algunos buenos tutoriales de Wireshark?
- 9. ¿Cuáles son algunos recursos para aprender MSIL?
- 10. ¿Cuáles son algunos buenos recursos para hacer texto a voz en .NET?
- 11. ¿Cuáles son algunos buenos libros UX?
- 12. ¿Cuáles son algunos buenos perfiladores .NET?
- 13. ¿Cuáles son algunos buenos principios/tutoriales de Erlang para principiantes?
- 14. ¿Cuáles son algunos buenos recursos para el proyecto MVP de Web Forms?
- 15. ¿Cuáles son algunos buenos recursos para estudiar el código fuente de Hadoop?
- 16. ¿Cuáles son algunos buenos complementos para desarrollar Java en VIM?
- 17. ¿Cuáles son algunos buenos cebadores/tutoriales Haskell para principiantes?
- 18. ¿Cuáles son algunos buenos recursos para aprender sobre Redes Neuronales Artificiales?
- 19. ¿Cuáles son algunos buenos libros, recursos web y proyectos para aprender R?
- 20. ¿Cuáles son algunos buenos recursos para aprender la programación en red?
- 21. ¿Cuáles son algunos buenos recursos para aprender a desarrollar complementos VIM?
- 22. ¿Cuáles son algunos buenos recursos en algoritmos de flocado y enjambre?
- 23. ¿Cuáles son algunos recursos para aprender el cálculo de Lambda?
- 24. ¿Cuáles son algunos buenos ejercicios de programación de aprendizaje automático?
- 25. ¿Cuáles son algunos de los mejores recursos para aprender MSBuild?
- 26. ¿Cuáles son algunos buenos gestores de colas distribuidos en php?
- 27. ¿Cuáles son algunos buenos recursos en el diseño de motores de juegos 2D?
- 28. ¿Cuáles son algunos buenos métodos de depuración de Perl?
- 29. ¿Cuáles son algunos buenos ejemplos de uso de WPF Datagrid?
- 30. ¿Cuáles son algunos buenos ejemplos de Mixins y/o Rasgos?
http://www.frayn.net/beowulf/theory.html – SmallChess