Sei sulla pagina 1di 5

Dise o del juego de N en raya n

Implementaci n del 4 en raya o


Universidad Nacional de Ingeniera

Joseph Ramos Valdivia

Aldo Mallma Granados

Edith Santos Lorenzo

Resumen
Nuestro trabajo consiste en representar el juego de n en raya y considerar heursticas, que permitan a un agente ha cer el papel del competidor. Tambi n implementamos en Lisp un caso particular del e n en raya, el 4 en raya; que cuenta con un esquema un poco diferente al esquema considerado para el n en raya; a n u as nuestro agente es efectivo. En el programa la persona debe ingresar la columna donde desea jugar a diferencia del juego real.

y destreza en el modo de juego. El juego de n en raya2 y todos sus derivados como 4 en raya.

IV. Marco te rico o


IA y Lisp La inteligencia articial es un conjunto de m todos y e losofa, y por lo tanto no est atada a un lenguaje en par a ticular. Los problemas de IA requieren que los programas manipulen conocimiento en lugar de n meros. Los invesu tigadores desarrollaron nuevos lenguajes para atacar estos problemas. Lisp, de List Processing, fue creado por McCarthy (MIT) en los 60. Es un lenguaje de prop sito general, proo cedural, basado en aritm tica y manipulaci n de smbolos. e o IA y juegos Hay una gran cantidad de juegos como el ajedrez, Go; as como problemas como el de la n reynas que han sido resueltos con m todos de inteligencia articial, los que en e un inicio se basaban en algoritmos de b squeda que no u empleaban heursticas para una soluci n eciente de las o b squedas. u Juego n en raya Este juego consiste en un tablero que es un arreglo de m x m, donde participan dos jugadores, los que ponen sobre el tablero una marca determinada X u O3 respectivamente hasta formar n secuencias con sus respectivas marcas, en forma continua, en las siguientes direcciones: horizontal, vertical o diagonal. El primero que forme la secuencia seguida de n marcas (seg n el juego) ganar el juego. u a Los jugadores colocan sus marcas sobre el tablero, no permiti ndose quitarlas una vez jugadas. e

I. Introducci n o
Al entretenernos con un juego, seguimos sus reglas y nuestra habilidad de responder ante situaciones que nos llevan a adquirir, cada vez m s, experiencia y destreza en a el modo de juego. Sin embargo, podemos representar esa destreza en un programa y aprovechar los recursos que tiene, para encontrar diversas soluciones a un problema de juego o darle cierta inteligencia, para que sea capaz de competir con humanos y hacer m s interesante el juego. a

II. Objetivos
Proporcionar un esquema general para la soluci n del o juego de n en raya, considerando aspectos de dise o que n proporcionen una buena base para su posterior implementaci n. o Implementar el juego1 para el caso del 4 en raya, considerando una heurstica efectiva que permita al agente m quina un desempe o aceptable. a n

III. Problema
Al entretenernos con un juego, seguimos sus reglas y nuestra habilidad de responder ante situaciones que casi a menudo, nos llevan a adquirir cada vez m s, experiencia a
implementaci n en Lisp, no considera todo el an lisis general o a considerado en el n en raya, mas muestra un aspecto interesante de la utilizaci n de heursticas. o
1 Esta

2 Casi 3 Las

siempre el m s jugado a

marcas X u O son las m s comunes de ver en un juego de n en a raya, sin embargo no se obliga a que deban considerase en todos lo juego, pudiendo ser otras marcas que sean diferentes una a otra.

Inteligencia Articial

V. Metodologa
Para empezar deniremos el espacio en el cual se desarrollar el juego, luego las posibles jugadas para que por a ultimo se dena la posici n de la jugada. o

Para poder implementar el juego es necesario que se respeten determinadas reglas, pero a su vez es necesario tambi n denir una Heurstica adecuada mediante la cual el e jugador maquina pueda decidir donde jugar a n de que le de mayor opci n a ganar. o

Ahora deniremos a nuestro caso ejemplo representado en el cuatro en raya en dos dimensiones.

Para iniciar el juego el programa iniciara el juego para ello debe de buscar una posici n adecuada donde jugar de o acuerdo a la heurstica planteada.

Sin embargo existen dos variables muy importantes en nuestro juego, las cuales nos denir n el espacio del juego, a para hacerlo mas sencillo y que el usuario pueda jugar con tranquilidad el ingresar al programa el valor de la posia ci n, el programa coger el valor y lo trasformara a un par o a Para la evaluaci n de la posici n donde la m quina efeco o a ordenado (i , j) el cual nos indicar en que posici n esta tuar la jugada se tendr una funci n basada en el algorita o a a o jugando el usuario, para luego asignarle la marca corres- mo MINIMAX con PODA. pondiente a su juego. Bas ndonos en este algoritmo primero se eval a la funa u ci n para la m quina, cuyo algoritmo es como se describe o a a continuaci n: o

Para comenzar presentamos al estado inicial:

A continuaci n, de manera an loga, evaluamos la funo a ci n para las posibilidades de exito del adversario: o Una vez que se tiene el punto de la matriz donde se efectuar la jugada, se procede a registrarlo, asignarle el valor a correspondiente para las jugadas de la m quina (1) y a ima primir la posici n ordinal de la jugada para que sea visuao lizada por el adversario.

Inteligencia Articial

Se ubica la posici n en la matriz convirtiendo el valor o ordinal en las coordenadas cartesianas:

Se asigna el valor correspondiente en la posici n de la o matriz para las jugadas del adversario:

Nuevamente se eval a si se ha alcanzado alguno de los u estados meta: Despu s de efectuada la jugada compararemos el estado e actual con los estados meta:

Si no se ha alcanzado el estado meta se repite el bucle desde que juega la m quina: a Se eval a si el juego ha concluido: u

Caso contrario el juego habra llegado a su n:

En caso contrario se habilita al adversario para que efect e su jugada: u

Implementaci n en Lisp del juego de cuatro o en raya


Hemos realizado una implementaci n en Lisp para el o caso del cuatro en raya. La l gica vara un poco de la deso crita anteriormente, por ejemplo en la forma como se representa la celda del tablero. En este caso se considera al

Se captura la posici n (siempre ordinal) de su jugada: o

Inteligencia Articial

tablero como un arreglo de 6 x 6 (gura 1) y en vez que el jugador o agente humano ingrese la marca respectiva a una celda denida por el mismo, s lo tendr opci n a indicar o a o la columna donde desea colocar su respectiva marca (X) y ser el programa, el que la ubique en un respectivo lugar a de la columna, en el orden de abajo hacia arriba. De haber una marca del agente m quina en la columna a indicada por el jugador, su marca se colocar en la posia ci n superior siguiente a la del agente m quina, siempre y o a cuando el lugar que ocupe el agente m quina, interera el a orden dispuesto por el programa para la asignaci n de las o marcas del humano.

3. EsColumnaValida(columna) 4. AveriguarPosicion(columna) 5. MostrarTablero() 6. LimpiarTablero() 7. JuegaJugador(jugador) 8. DeshacerJugada(columna) 9. HacerJugada(columna jugador) 10. EjecutarJugada(columna jugador) 11. InmediatoMayor() 12. MayorContrincante() 13. GanaInmediato() 14. JuegaPC() 15. JuegaUsuario() 16. QuedanCasillasLibres() 17. Hay4EndiagonalAscendente (la colum jug) 18. Hay4EndiagonalDescendente (la colum jug)

Figura 1: Tablero como un arreglo de 6x6 Con la funci n mencionada a continuaci n buscamos o o que el PC intente ganar el centro e impedir la creaci n de o 4 en raya verticales. La funci n devuelve 100 si la situaci n actual del tableo o ro del juego es una victoria (independientemente del jugador ganador); devuelve 1 si es un estado de tablas denitivas; en cualquier otro caso, devuelve un valor que estar comprendido entre 2 y 99 que ser : a a ValorHeurstico = (16 * A0 * 005) + (16 * A1 * 015) +(16 * A2 * 030) +(16 * A3 *030) +(16 * A4 * 015) +(16 * A5 * 005)

19. Hay4EnDiagonal(jugador) 20. Hay4HorizontalEnLaFila (la jugador) 21. Hay4VerticalEnLaColumna (columna jug) 22. Hay4Vertical(jugador) 23. Hay4Horizontal(jugador) 24. HayVictoria() 25. EvaluarEstado() 26. MensajeFinal(jugador estado) 27. MostrarMensajeInicial()

Donde A0,...,A5 son las alturas actuales de las columnas 28. Jugar() 0, 1, 2, 3, 4 y 5. De este modo, tiene m s peso aquel tablero a La funci n jugar() es la funci n principal que llama a o o cuyas columnas sean m s altas y est n m s al centro, en a e a las dem s funciones y la que permite el juego. a vez de aquellos cuyas columnas sean m s bajas o est n a e m s en los extremos. Se busca de este modo que el PC a intente ganar el centro e impedir la creaci n de 4 en raya o verticales. A continuaci n mostramos las funciones utilizadas para o esta implementaci n4 : o 1. PedirQuienJuega() 2. PedirTirada()
4 En el c digo fuente del programa se describe m s detalladamente las o a funciones mencionadas.

Inteligencia Articial

La PC preguntar por qui n comienza primero el juego, a e entonces el jugador pondr 1 si comienza el o 0 en caso a contrario. El jugador solo puede seleccionar la columna donde desea jugar mas no la posici n exacta, la Pc lo hace o por el, de abajo hacia arriba.

Referencias
[1] Russell S y Norvig P. Inteligencia Articial un enfoque moderno Pretince may Hispanoamericana SA, seguda versi n. o [2] Ans stegui C y Many F. Una introducci n a los o a o algoritmos de satisfactibilidad Departamento de Informatica e Ingeniera Industrial Universidad de Lleida. 2003 [3] Burzyn P. Complejidad Computacional en Problemas de Modicaci n de Aristas en Grafos o Facultad de Ciencias Exactas y Naturales. Universidad de Buenos Aires.

En caso la m quina consiga los cuatro en lnea aparea cer un mensaje indicando el ganador, al igual que en el a caso si el jugador ganara. De haber empate aparecer en la a pantalla nil.

VI. Conclusi n o
El esquema de dise o del juego de n en raya resulta n m s ecaz de lograrse implementar; puesto que se basa a en b squedas de movimientos que conlleven a alcanzar un u estado m s ventajoso para el agente m quina. a a Sin embargo, dado algunos contratiempos5 de los integrantes del grupo, no se ha podido implementar en Lisp el primer dise o. n La implementaci n del cuatro en raya presentada, no o contempla un an lisis exhaustivo como el anterior, ni cona sidera un tipo de b squeda en especial estudiado en clase, u raz n por la cual resulta sencillo la posibilidad de ganarle o a la m quina; adem s que no cumple con la funcionalidad a a completa del juego. Esperamos que este humilde aporte, en la implementaci n del juego de cuatro en raya y el an lisis general para o a un juego de n en raya, contribuya al aprendizaje a los futuros alumnos que vendr n en el curso; as como en la mejoa ra y perfecci n del esquema, dise o e implementaci n de o n o este juego.

5 La raz n principal de los inconvenientes del grupo, para la impleo mentaci n del juego de 4 en raya, se debi al enfoque o an lisis consio o a derado, tambi n a la dicultad en el aprendizaje de la programaci n en e o Lisp, pues la versi n con la que trabajamos no cuenta con un corrector de o errores como en otros programas.

Potrebbero piacerti anche