Diseño de algoritmos de IA: juego de cartas

Actualmente estoy trabajando en la implementación de un juego de cartas español llamado Briscas, o Briscola,http://en.wikipedia.org/wiki/Briscola

En pocas palabras, es un juego de cartas en el que dos equipos de 2 jugadores juegan entre sí (no pueden verse la mano del otro, ni siquiera los miembros del equipo), solo al principio se barajan las cartas, luego se entregan tres cartas a cada jugador. . En el sentido de las agujas del reloj, todos tiran una carta para intentar ganar ese turno. Quien gane ese turno se lleva los puntos. Luego, aún en el sentido de las agujas del reloj, el jugador que ganó la última ronda, toma una carta de la parte superior del mazo, y el jugador que está al lado de su izquierda, y así sucesivamente. Luego seguirás jugando rondas hasta que el mazo esté vacío. El equipo que tenga más puntos gana.

Detalles:

Tamaño de la cubierta: 40
Jugadores: 4 (2 equipos de 2)
Las cartas tienen un valor específico. (de 0 a 11)

La pregunta

Sé que el MiniMax directo sería demasiado caro. ¿Qué algoritmos se utilizan normalmente para este tipo de juegos de cartas? Además, cualquier literatura que pueda señalar también será beneficiosa.

Muchas Gracias

preguntado el 16 de mayo de 11 a las 17:05

No creo que minmax sea adecuado, porque carece de la información de los mazos de cartas del otro jugador. En mi humilde opinión, un enfoque de montecarlo se adapta mejor a este tipo de juegos.

Esta pregunta tiene algunas sugerencias: stackoverflow.com/questions/525016/… -

@drhirsch Estoy de acuerdo contigo. Estaba pensando en un Montecarlo y tal vez en algunas heurísticas. -

¿Estás intentando crear un jugador óptimo o estás intentando hacer un juego que sea divertido para los humanos? -

Supongo que estoy apuntando a un punto intermedio. -

1 Respuestas

Esto depende de cuán ambicioso quieras ser, pero para empezar necesitas un motor rápido para simular el juego.

Entonces necesitas un modelo de reproductor rápido y, por tanto, probablemente sencillo.

Este jugador modelo no tendrá tiempo de calcular hacia adelante. Solo puede reaccionar en un estado predefinido. Entonces, su primer paso es construir un estado de juego lo suficientemente bueno. El estado del juego debe incluir tu mano y algunas estadísticas del historial de qué cartas se han descartado y quizás cómo los jugadores han jugado sus manos.

A continuación, construyes un jugador modelo que actúa sobre el estado. Ya sea

A) escribe uno a mano, que juegue según unas heurísticas que tú definas. Pero recuerde: ¡todavía no hay cálculos pesados!

B) escriba un reproductor general, pero omita las constantes y los valores de corte. Utilice su motor de simulación y algoritmos genéticos con la selección de torneos para desarrollar buenos parámetros para dichos valores. Para obtener puntos de bonificación, evolucione a sus jugadores en equipos de dos, para que se complementen entre sí de forma agradable.

C) usa aún más IA y deja un sistema de programación genética (hay algunos maduros. Encuentra uno que pueda hacer torneos. Incluso puedes implementar uno tú mismo, pero no nos dejemos llevar :) escribe el jugador completo para ti, usando su estado como entrada.

El siguiente paso:

O ya tienes un gran jugador y puedes considerarte hecho, o quieres mejorarlo. Si quieres hacerlo mejor, ¡estás de suerte!

Utilice la simulación de Monte Carlo para jugar una gran cantidad de manos, con cada una de sus opciones en una situación determinada (siempre hay tres opciones si lo entiendo correctamente). Deje que su jugador modelo tome las decisiones cada vez que tenga una opción, y deje que su simulación de Monte Carlo baraje el mazo al azar entre cada vez que juegue una simulación.

¡Ahora deberías tener un gran jugador de cartas!

contestado el 17 de mayo de 11 a las 01:05

Además, Wikipedia será un buen comienzo para aprender más sobre la simulación de Monte Carlo, los algoritmos genéticos y la programación genética. - Gurgeh

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.