Y seguimos con el jueguito TRON. Mi objetivo final era enfrentar dos pequeños programitas que controlarán respectivas "motos", basándose en las mismas reglas del juego programado anteriormente (TRON human vs human). Tras un rato programando he llegado a un fichero de ejemplo, en el que declaro movimientos aleatorios al jugador 1 (Player1_AI). Es bastante cutre pero me vale como ejemplo.
La idea de Player1_AI es moverse libremente, únicamente teniendo en "mente" no comerse a sí mismo o los bordes, el resultado es, una IA que perderá al encerrarse en su propia trampa, pues su código no encontrará solución al problema de haberse encerrado.
Algunas capturas de esta IA (jugador rojo):
Uno de los principales problemas es ceder el mismo tiempo de cómputo para ambos programas. Cosa que en principio creo resueltas con programación multihilo, aún estando un poco verde en el tema, he conseguido coordinar la IA de ejemplo con el ciclo de actualización de pantalla (el cual está en otro hilo, cada ~70ms se avanzan las motos). Seguramente, cuando estudie el tema más a fondo, encuentre mejores soluciones.
La IA tiene acceso a la matriz de juego, con la cual puedes saber que casillas están ocupadas, y cuales no. También tiene acceso a la posición actual de ambas motos. Y por razones de sincronización, a una variable coordinadora entre hilos. Los conocimientos de la IA son los mismos que un jugador humano. Si por casualidad alguien estuviera interesado en participar, estáis invitados.
Salu2.
No hay comentarios:
Publicar un comentario