Pregunta

Atrás manera Way (pensar en más de 20 años) me encontré con un código fuente del juego Gomoku en una revista que he escrito en mi equipo y tenía un montón de diversión con.

El juego era difícil de ganar contra, pero el algoritmo básico para el equipo de AI fue muy simple y no tuvo en cuenta una gran cantidad de código. Me pregunto si alguien sabe este algoritmo y tiene algunos enlaces a alguna fuente o teoría al respecto.

Las cosas que recuerdo fue que básicamente asigna una matriz que cubrió toda la junta. Entonces, cada vez que, o bien, coloqué una pieza, sería añadir un número de pesos a todos los lugares en el tablero que la pieza sería posiblemente impacto.

Por ejemplo (nota que los pesos son definitivamente mal que no me acuerdo de aquellos):

1   1   1
 2  2  2
  3 3 3
   444
1234X4321
  3 3 3
 2  2  2
1   1   1

A continuación, simplemente se escaneó la matriz para un lugar abierto con el mayor valor más bajo o.

cosas que estoy difusa en:

  • Tal vez tenía dos matrices, una para mí y otra para sí mismo y hubo un min / max ponderación?
  • No podría haber sido más para el algoritmo, pero en su esencia se trataba básicamente de una matriz y los números ponderados

¿Esto te suena con nadie en absoluto? Alguien tiene nada que pudiera ayudar?

¿Fue útil?

Solución

La lectura de su descripción, y pensar un poco sobre él, creo que probablemente funciona con una sola matriz, exactamente de la manera que usted describe.

Para lograr la meta de conseguir cinco en una fila que tiene que (a) evitar que el oponente tenga éxito y (b) tener éxito a sí mismo.

Para tener éxito usted mismo, usted tiene que colocar piedras cerca de otras piedras que ya tiene en el tablero, así que tiene sentido para añadir una puntuación positiva para los campos junto a sus piedras que podrían participar en una fila. O el ejemplo lineal le dio, o algo cuadrática probablemente funcionaría bien.

Para evitar que su oponente de tener éxito, usted tiene que colocar piedras junto a sus / sus piedras. Es especialmente bueno si le pega a dos pájaros con una sola piedra, por lo que las piedras del oponente debe aumentar el valor de los campos de los alrededores de la misma manera el suyo hacen - los más piedras que ya ha alineados, a mayor puntuación, y es más probable la algoritmo tratará de reducir al oponente.

Lo más importante aquí es la ponderación de los diferentes campos, y si las piedras del oponente son ponderados de manera diferente a la suya. Por desgracia no puedo ayudar con eso, sino que los valores deben ser razonablemente sencilla de averiguar a través de ensayo y error una vez que el juego en sí está escrito.

Sin embargo, este es un enfoque muy básico, y se superó mediante un algoritmo de búsqueda en árbol. La búsqueda en Google, hay una papel relacionado en la búsqueda de amenazas , que aparentemente funciona bien para gomoku. El documento está detrás de un muro de pago sin embargo: /

Otros consejos

No he leído el artículo, pero a partir de la descripción creo que ha de haber alguna forma de la Minimax algoritmo

vi este algoritmo se ha mencionado - que era bastante simple y rápido (sin vuelta atrás :-)) y jugó muy bien :-) Debo tener algún lugar de la fuente, pero es hace un bajo número de años ... Había pesos para sus cálculos en función de la cantidad de otras piedras estaban cerca, y los pesos de piedras oponente. Estos fueron más bajos por lo que el algoritmo prefiere la estrategia de atacar.

Pero esto es del algoritmo de curso muy trivial. estrategia ganadora ya se ha encontrado. Ver este documento: L. Victor Allis, H. J. van den Herik, M. P. H. Huntjens. Go-Moku y la amenaza desde el espacio de búsqueda . Me ayudó mucho cuando yo estaba writting mi propio programa. De esta manera usted será capaz de programa de escritura que es muy bueno en el ataque del oponente y la búsqueda de combinaciones ganadoras.

Es un juego antiguo - He encontrado el código en Planet Código fuente . Me jugado este juego durante la universidad y en 286 días tenía una versión básica de la misma.

Este es el programa que busca ftp://ftp.mrynet.com/USENIX/80.1/boulder/dpw /gomoku.c

Es casi 40 años

Trabajo en una versión de código abierto para el iPhone.

Me golpeó hasta si está interesado en unirse!

https://github.com/kigster/kigomoku

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