¿Hay alguna API de juego de ajedrez, puramente escrita en JavaScript? ¡No flash! ¿Alguien conoce el algoritmo (en general) usado en los juegos de ajedrez?Juego de ajedrez en JavaScript
Respuesta
¿Cómo funciona un algoritmo de ajedrez de trabajo ?:
lo que un ordenador de ajedrez intenta hacer es generar el árbol tablero de posiciones cinco o 10 o 20 se mueve en el futuro. Suponiendo que hay alrededor de 20 posibles movimientos para cualquier posición de la placa, un árbol de cinco niveles contiene 3,200,000 posiciones de la placa. Un árbol de 10 niveles contiene aproximadamente 10,000,000,000,000 (10 billones) de puestos. La profundidad del árbol que una computadora puede calcular es controlada por la velocidad de la computadora que juega el juego. Las computadoras de ajedrez más rápidas pueden generar y evaluar millones de posiciones de la placa por segundo.
Una vez que genera el árbol, entonces la computadora necesita "evaluar las posiciones de la placa ". Es decir, la computadora tiene para mirar las piezas en el tablero y decidir si la disposición de las piezas es "buena" o "mala". La forma en que hace esto es mediante el uso de una función de evaluación . La función más simple posible podría simplemente contar el número de las piezas que tiene cada lado. Si el ordenador está jugando blanco y una cierta posición tablero tiene 11 blancos piezas y nueve piezas negras, la función de evaluación más simple podría ser:
11 - 9 = 2
Obviamente, para el ajedrez que la fórmula es demasiado simple, porque algunas piezas son más valiosas que otras. Por lo tanto, la fórmula podría aplicar un peso a cada tipo de pieza . A medida que el programador piensa en ello, él o ella hace la función evaluación más y más complicada por la adición de cosas como posición en el tablero, el control del centro, vulnerabilidad del rey para comprobar, vulnerabilidad de la reina del oponente, y toneladas de otros parámetros. No importa cuán complicada sea la función , sin embargo, se condensa hasta un único número que representa el "bondad" de esa posición de la placa.
Para la construcción de su propia 'motor' javascript que es capaz de jugar al ajedrez a un control de nivel básico Step by Step Javascript Chess with CPU oppo
Si se desplaza hacia abajo que contiene el código fuente de esta, hay que decir muy limitado, motor de ajedrez puramente basado en Javascript . También tiene una versión funcional del juego para probar y todos los recursos necesarios para construir el tuyo.
Algunos recursos útiles:
- First implementation of a chess engine in Javascript
- The Anatomy of Chess Programs, por Tony Marsland, es una buena introducción acerca de cómo funcionan actual programas de ajedrez.
- Chess Space
- Paul Verhelst - Preguntas y Respuestas
- Bibliography on Minimax Algorithms (newer version).
- Crafty es un potente programa cuyo código fuente está disponible gratuitamente y, para un programa de ajedrez, muy legible.
- Unfinished Work and Challenges to Chess Programmers
- Is there a perfect algorithm for Chess? La discusión aquí en lo que
- How Computers Play Chess El mejor libro que he encontrado que describe la teoría detrás de ajedrez AI algoritmos
El Computer Chess Blog documenta la creación de un motor de ajedrez C#. No es JavaScript, pero la sintaxis es lo suficientemente similar como para que pueda obtener una buena comprensión de los diferentes componentes del motor de ajedrez.
Además, si desea que su motor de ajedrez esté habilitado para la Web, es posible que desee considerar el uso de C# con una GUI de Silverlight. Obtendrá un mejor rendimiento de .NET que con JavaScript. Como aprenderá, esto se traducirá en un programa de ajedrez más fuerte (búsqueda más profunda). Un buen ejemplo de Silverlight Chess se puede encontrar en GeeksWithChess.com
Para la discusión algorítmica, pruebe Chess Programming Wiki.
Las técnicas adecuadas para los motores de ajedrez serios no son necesariamente adecuadas para los juegos basados en la web. Los verdaderos motores de ajedrez ejecutan órdenes de magnitud más rápido, usan libros de apertura de varios megabytes y gastan minutos u horas en cada turno. Un verdadero motor de ajedrez buscará más de 12 capas, mientras que javascript no pasará de 6 capas en un tiempo web razonable. Por lo tanto, algo como un piece-square oracle, que tiene rendimientos decrecientes y posiblemente negativos a medida que se profundiza la búsqueda y, por lo tanto, está muy pasado de moda en los círculos de programación de ajedrez, es posiblemente adecuado para un motor de JavaScript. Si haces lo que la gente hace en los 80, terminarás con un motor ágil y manejable que superará a la mayoría de los visitantes.
Y, por supuesto, realmente no desea buscar lo que otras personas están haciendo. Solo asegúrese de tener alguna variación de alpha-beta search, luego modifique su función de evaluación y todo lo demás como mejor le parezca.
En 2002 y 2012 escribí y reescribí p4wn, un pequeño motor de JavaScript de dominio público. Utiliza alfa-beta y un oráculo de pieza cuadrada. Probablemente sea más débil que Garbochess-JS, pero luego Garbochess tiene un libro de apertura que es más grande que todo el motor p4wn.
- 1. Tablero de ajedrez JavaScript gratuito
- 2. Diseñando objetos para un juego de ajedrez en Java
- 3. Diseño orientado a objetos para un juego de ajedrez
- 4. Ajedrez optimizaciones
- 5. Prevenir trampas en Javascript Juego
- 6. MSTest + ajedrez en VS 2010
- 7. ¿Buen uso de recursión en la programación de ajedrez?
- 8. Programando un ajedrez AI
- 9. Creación de GUI de ajedrez en WPF
- 10. ¿Cómo hacer un juego seguro en javascript?
- 11. ¿Cómo codificar la regla de punto muerto de ajedrez?
- 12. Biblioteca de validación de movimientos de ajedrez
- 13. ¿Cómo puedo modelar un tablero de ajedrez cuando programo una computadora para jugar al ajedrez?
- 14. ¿La mejor forma de juego simple en Javascript?
- 15. javascript lista de palabras en inglés para un juego
- 16. ¿Cómo hacer un tablero de ajedrez en numpy?
- 17. Marco de Javascript para la interfaz de usuario del juego
- 18. ¿Existe algo así como AJEDREZ para Java?
- 19. Arquitectura de juego multijugador
- 20. Creando un sitio de juego mutliplayer
- 21. HTML5 + Javascript: creación de redes para un juego
- 22. Juego de Javascript; ralentizando y congelando! ¿Cómo resolverlo?
- 23. paredit juego de llaves a juego en swank-clojure repl
- 24. Cómo hacer un tablero de ajedrez de JButtons
- 25. Juego cliente-servidor en Java con applets
- 26. Detectando movimientos de ajedrez de diferencias de imagen sucesivas usando herramientas de OpenCV
- 27. ¿Cuál es la forma más liviana de hacer una gran cuadrícula de ajedrez?
- 28. a juego con los caracteres acentuados Javascript expresiones regulares
- 29. Sonidos para mi juego javascript con js puros?
- 30. Determinar si dos posiciones de ajedrez son iguales
podría ser una buena pregunta Código de golf (por un corto aplicación) –
http://javascript.internet.com/games/javascript-chess-with-cpu-oppo.html –
Un increíblemente pequeña aplicación (1 kb): http://js1k.com/2010-first/demo/435 – Christophe