Cuando entré a tu enlace me pidió que me conectara con una cuenta y luego me pone una especie de contrato. ¿Es necesario todo eso para entender tu problema? ¿no deberías postear el código mejor?
Se supone que el modo se debería activar o desactivar con un botón. Cambiaría el valor de una variable: IA = "On". Y el código tendría medio al inicio de la parte repetitiva:
Si IA == "On"
// Código IA aquí.
sino
// Código para random o lo que sea aquí.
Eso no debería ser difícil ni dar problema. ¿Quieres un código para una IA? No sé cómo has nombrado los casilleros pero supongamos que así:
123
456
789
Entonces... así no:
Si c1 == "M" //casillero 1 ocupado por máquina
Si c2 == "M"
Si c3 == "" // Vacío
// Marcar c3.
etc
...porque requiere escribir varias cosas repetidas, casos en que c1 es irrelevante. A menos que crees funciones pero se supone que hay algo mejor...
Este modo tiene el defecto de repetir varias veces los mismos chequeos:
Si c1 == "M" && c2 == "M" && c3 == ""
// Marcar c3.
sino si c1 == "M" && c2 == "" && c3 == "M"
// Marcar c2.
// etc
Algo interesante sería sumar los contenidos de los casilleros y si la extensión resulta > 1 entonces contar cantidad de Ms, si eso es < 2 entonces Js... Pero es medio complicado.
Otra cosa es crear funciones pero son muchas. Requiere usar "V" en vez de "".
Función MMVXXXXXX
C3 = M
Función MVMXXXXXX
C2 = M
Función VMMXXXXXX
C1 = M
etc
Llamas a una función distinta según la situación. X significa que es irrelevante. J sería la marca del jugador.
Algo interesante sería que el programa aprenda. Eso yo lo hacía mediante que "jugara sólo" (aunque no era tateti, era nomás ubicarse en un casillero de 1d) y con archivos externos, pero a ver... Cuando la IA pierde o gana tiene que crear una función o decirte que crees una. Ejemplo: La situación es JJV... y pones en 3. Te dice:
Función MMV...
c = 3
Falta = 0
Nota que ha cambiado las Js por Ms y viceversa. Eso cuando eres tú quien gane. La función incluye el casillero que se marcó y una variable que indica cuánto falta para ganar.
Cuando alguien marca un casillero tienes que intentar cargar una función. Si existe tienes que crear otra, la de la situación anterior, pero le tienes que sumar 1 a la variable Falta.
De este modo las funciones se escribirían sólas o al menos se harían sólas (tú sólo tendrías que copiarlas y pegarlas), aunque tendrías que jugar bastante o hacer que la máquina haga una simulación de todas las posibles jugadas. En fin ando muy oxidado en el tema de aprendizaje y lo que te dije no es exactamente lo que yo hacía pero quizá te sirva.
A ver si otro forero se anima a dar otra respuesta!