En primer lugar, soy un novato. También soy un conserje que nunca ha hecho un código de escritura de moneda de diez centavos. Esto es solo algo que me encanta hacer. Es por diversión :) Dicho esto, escribí este juego de tres en raya que tiene suficiente para no perder todos los juegos. (Creo que ai es lo que debería llamarse). Tiene algo así como 70 if/else si las declaraciones de las computadoras giran. Utilicé 3 matrices en int como esta:If(), else if() alternative in C++ (Is this AI?)
int L[2], M[2], R[2];
0 = blanco; 1 = X; 2 = O;
El tablero entonces 'Parece' como
L [0] | M [0] | R [0]
L [1] | M [1] | R [1]
L [2] | M [2] | R [2]
Así que, básicamente, escribió todos los escenarios posibles que podía pensar algo como:
if(M[0]==1 & M[1]==1 & M[2]==0){M[2] = 2;}//here the computer prevents a win
else if(L[0] ==2&M[1]==2&R[2]==0){R[2]=2;}//here the computer wins
//and so on....68 more times!
Creo que mi pregunta (s) es (son):
¿Hay una mejor manera?
¿Hay alguna forma de lograr el mismo resultado con menos líneas de código?
¿Esto se considera inteligencia artificial?
Una implementación interesante de un algoritmo de tres en raya, posiblemente como una macro ImageJ, leería la imagen PNG en http://xkcd.com/832/ (es decir, wget http: //imgs.xkcd. com/comics/tic_tac_toe_large.png) y extraer su respuesta de ella ... ¿cualquier tomador? –
¡Sigan divirtiéndose! Claramente, en base a las respuestas, hay muchas cosas para que aprendas. La belleza de esto es que aprender una de las palabras de moda de lujo a continuación abre aún más cosas con las que jugar. Haga una búsqueda en "tic-tac-toe ai" para encontrar algunos enfoques para el problema. Y para que lo sepas, la respuesta correcta a "¿Hay alguna forma mejor de programar esto?" es "Sí. A mi manera". :) – gregg
El estudio de las computadoras que juegan juegos para ganar es parte del campo de la inteligencia artificial. De hecho, los juegos fueron los primeros estudios de casos abordados en inteligencia artificial. Dicho esto, proporcionar una respuesta enlatada para cada movimiento posible no es realmente AI. :-) Tú eres el que proporciona la inteligencia; la computadora no está "descifrándolo" por sí misma. Casi cualquier libro de texto introductorio de AI discutirá el algoritmo Minimax descrito en la respuesta de Colin a continuación. –