¿picchess (6 / 8 paso)

Paso 6: ajedrez

Aquí es la base de este proyecto el juego del ajedrez. Se divide en dos partes las rutinas de interfaz y el motor de ajedrez.

Motor de ajedrez
Podría incluir un montón de cosas aquí, pero se explica mejor en sitios como chessprogramming.wikispaces.com. Solo cubriré lo básico.
Describir un programa sencillo así como la Inteligencia Artificial no es justo ya que todos hacen es la búsqueda de fuerza bruta.

Un programa de ajedrez está compuesto de estas partes:

  • Generador de movimiento: Dado un estado inicial del tablero de ajedrez produce todas las posiciones válidas las reglas.
  • Evaluación: Devuelve una puntuación de un estado del tablero, puede ser tan simple como contar el número de piezas con pesos (un peón pesos 1 una reina 9). Cuanto mayor sea la puntuación mejor este estado del tablero es para el jugador que ha tocado el turno.
  • Hacer/Unmake: Una manera aplay un movimiento de la mesa variable y tu deshacerlo después
  • Búsqueda: Un algorthm tiene que a través de sesch todos los movimientos se generan por el generador del movimiento, es la función de búsqueda. Uno de la clase más simple es la búsqueda de MinMax . Usé un poco buscar mejor la poda alfa-beta, que evitar búsquedas inútiles ramas del árbol de búsqueda.

La búsqueda funciona de esta manera: genera todos los movimientos hacia arriba a una búsqueda profunda (un cierto número de vueltas a mirar hacia el futuro), da una puntuación para cada uno de los movimientos en la punta del árbol y volver a la rama que garantiza el mejor resultado.

Puede mejorarse mucho mediante la adición de una búsqueda de quiesent que, esta función sería serch unos movimientos más cuando hay una captura para evitar equivocadamente evaluatin una de esas posiciones donde se sucede un alboroto.

Interfaz de ajedrez
Toda la interfaz de usuario es manejada por esta rutinas. Cosas como cómo seleccionar una pieza y hacer un movimiento... Basta con ver el código si usted se interesa, ha todos basados en una máquina de estado por lo que el código es sin bloqueos.

Una cosa agradable tener en cuenta es que para comprobar si una medida que el jugador intenta hacer es válida que usa el generador de movimiento para obtener todos válidos se mueve, y luego comprobar si el jugador se mueve es uno de ellos.

Artículos Relacionados