Pregunta

Estoy tratando de desarrollar Pentago-juego en C #.

En este momento estoy teniendo el modo de 2 jugadores, que trabaja muy bien.

El problema es, que quiero Un jugador Modo (contra la computadora), pero, por desgracia, todos los implementos de Minimax / negamax son para un Lo calculado para cada "Mover "(colocación de mármol, moviendo el juego pieza).

Pentago Butin, todos los jugadores necesidad de hacer dos las cosas (lugar de mármol, y una rotación de los interiores tableros)

Yo no encontrar la manera de poner en práctica tanto parte rotar y colocar el mármol, y me gustaría que alguien me guíe con esto.

Si usted no está familiarizado con el juego, aquí hay un enlace al juego.

si alguien falta de, puedo subir mi código en algún lugar si eso es relevante.

muchas gracias de antemano

¿Fue útil?

Solución

Si un solo movimiento legal se compone de dos sub-movimientos, entonces su "movimiento" para los propósitos del algoritmo de juego es simplemente una tupla donde el primer elemento es la colocación de mármol y el segundo elemento es la rotación del tablero por ejemplo:.

var marbleMove = new MarbleMove(fromRow, fromCol, toRow, toCol);
var boardRotation = new BoardRotation(subBoard, rotationDirection);
var move = new Tuple<MarblMove, BoardRotation>(marbleMove, boardRotation);
algoritmo de juego

Normalmente, un juego requerirá que enumerar todos los movimientos posibles para una posición dada. En este caso, debe enumerar todos los pares posibles de sub-movimientos. Con esta lista en la mano se puede pasar a pie el uso de juegos de ordenador de juego se acerca.

Otros consejos

Rick sugirió tuplas anteriores, pero puede que desee tener sólo realidad cada jugador hacer dos movimientos independientes, por lo que queda a su vez, dos veces seguidas. Esto puede hacer más fácil mover el pedido, pero puede complicar su algoritmo de búsqueda, dependiendo de lo que usted está utilizando.

En un algoritmo como UCT (que es probable que superan Minimax para implementaciones simples) romper en dos movimientos puede ser más eficiente debido a que el algoritmo puede saber primero lo que se mueve son las ubicaciones, y luego averiguar lo que la rotación es mejor. (UCT googlear no da mucha El trabajo de investigación original no es muy perspicaz, pero esta página podría ser mejor:. http://senseis.xmp.net/?UCT )

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top