Implementé una IA de Tic-Tac-Toe con UmmLang.
UmmLang es un lenguaje de programación esotérico que solo ofrece variables, entrada/salida, condicionales y saltos de línea,
[ eo-eo-eom-eo-eo-eo,,,,,,,, sik-eo-eo-eo-k dongtan-eo?jun. ] y tiene una apariencia como esta.
Casi no tiene estructuras de control comunes como bucles o funciones. Como incluso los enteros deben representarse únicamente con puntos (.), comas (,) y espacios, es un entorno bastante incómodo para implementar algoritmos convencionales.
Primero implementé Tic-Tac-Toe de 2×1 para validar la representación del tablero y la forma de implementar la IA.
Hice que cada casilla correspondiera a una variable, representé casilla vacía, X y O como 0, 1 y 2 respectivamente, y luego enumeré todos los estados posibles con sentencias dongtan (IF) para que la IA decidiera dónde colocar su ficha.
En este proceso también construí la interfaz de salida del tablero y la estructura para procesar la entrada del usuario.
Después lo extendí a Tic-Tac-Toe de 3×3.
El problema era que había alrededor de 4,520 estados de juego legales, así que escribir todos los casos a mano era prácticamente imposible.
Por eso escribí un generador de código aparte en Python.
El generador excluye todos los estados de juego donde la cantidad de O es mayor que la de X o donde la partida ya terminó, y luego calcula la mejor jugada para cada estado usando una IA de Tic-Tac-Toe basada en minimax.
Los resultados calculados se convierten automáticamente al formato de condicionales dongtan de UmmLang para generar el archivo case.umm.
Finalmente inserté en el código principal los miles de ramas dongtan generadas para completar la lógica de la IA.
Cuando las coordenadas ingresadas por el jugador se reflejan en las variables del tablero, los condicionales generados buscan el caso que coincide con el estado actual de la partida y ejecutan la jugada de la IA.
Luego se vuelve a mostrar el tablero y, con la sintaxis jun, se salta a la parte de entrada del usuario para formar el bucle del juego.
Es decir, en tiempo de ejecución no se realiza búsqueda ni cálculo; solo se ejecutan los condicionales generados de antemano, así que aunque no está optimizado, sí fue posible implementar una IA de Tic-Tac-Toe.
También dejé en GitHub la forma de jugarlo directamente en el sitio de Ryugat.
Aún no hay comentarios.