.json
, y si no encuentra una estrategia predefinida, aprende una nueva jugada, enriqueciéndose con cada interacción y partida. Es una introducción práctica al aprendizaje supervisado en un entorno simple.python --version
o python3 --version
.tres_en_raya/
, la cual contiene todos los elementos necesarios para su funcionamiento. Es crucial que el archivo conocimiento.json
exista desde el inicio, incluso si está vacío, ya que la IA lo utilizará para almacenar y consultar su base de conocimiento. Esta separación de archivos facilita la modularidad y el mantenimiento del código.utils/
alberga módulos auxiliares, como tablero.py
, que maneja la lógica de representación y actualización del tablero del juego. Esta organización permite que el archivo principal, main.py
, se enfoque en la orquestación del juego y la interacción con la IA.tres_en_raya/
├── main.py
├── conocimiento.json
└── utils/
└── tablero.py
conocimiento.json
debe iniciar con un contenido base de []
(un arreglo vacío) para que el programa pueda funcionar correctamente y comenzar a registrar las jugadas.conocimiento.json
, que funciona como la "memoria" de la IA. Este archivo almacena cada jugada como un objeto JSON, permitiendo a la máquina registrar patrones de juego y sus resultados asociados. Cada objeto contiene información clave sobre el estado del tablero y la decisión tomada por la IA."resultado"
, que indica si una jugada específica condujo a una derrota. Esta etiqueta es fundamental para el proceso de "aprendizaje" de la máquina, permitiéndole identificar y, con lógica adicional, evitar jugadas que la llevaron a perder en el pasado.{ "estado": ["X", "O", "X", "", "", "", "", "", ""], "jugada_sugerida": 3, "resultado": "derrota" }
"estado"
: Representa el tablero en un momento dado, usando un arreglo de 9 elementos (índices 0 a 8) para cada casilla. "X", "O" o "" (vacío)."jugada_sugerida"
: La posición (índice 0 a 8) que la máquina eligió en ese estado del tablero.conocimiento.json
), elige una casilla disponible de forma aleatoria. Sin embargo, esta elección aleatoria no se olvida; en su lugar, se registra como una nueva entrada en la base de conocimiento."resultado": "derrota"
. En futuras implementaciones, esta información podría usarse para evitar o ponderar negativamente esas jugadas.¿Deseas jugar otra vez? (s/n):
s
(sí), el juego se reiniciará para una nueva partida, pero, y esto es importante, la base de conocimiento acumulada se mantendrá intacta. Esto significa que todas las jugadas que la IA "aprendió" en partidas anteriores seguirán disponibles y serán utilizadas en las nuevas rondas. Esta continuidad permite observar cómo la IA mejora su desempeño a lo largo del tiempo.n
(no), el programa finalizará, pero la base de conocimiento en conocimiento.json
permanecerá guardada en tu disco duro, lista para ser utilizada en futuras sesiones de juego.conocimiento.json
, asegurando que el progreso no se pierda.