RSS

Gato, Tres en raya, Tic tac toe en Java.

Lun, Ago 28, 2006

General, Java

JavaEsta vez he decidido publicar unos de los programas que me dejaron como proyecto en la Universidad, en palabras comunes el programa lo que permite es jugar al Tic tac toe, tres en raya o el gato como lo conocemos por acá.., puedes jugar contra otra persona o contra la máquina, tiene una interfaz de usuario simple y sonidos para hacer más llamativo todo el juego en sí. =)

En tecnisismos, lo que nos pidieron para realizar este programa fue primeramente en la parte visual o de interfaz de usuario:

  • Utilizar eventos para los componentes.
  • Menús, botones, gráficos, etc.

En lo que respecta a la parte programática:

  • Implementar el algoritmo Min-Max para simular la inteligencia artificial de la máquina.
  • Lograrlo mediante el uso de árboles y recursión.

El algoritmo del MiniMax como lo llamabamos es el que nos permite ponerle la inteligencia a la máquina al momento de mover las piezas, entre más grande hagamos el árbol de posibles movimientos, más inteligente será la maquina. En mi caso utilicé el árbol completo entonces es imposible vencer a la máquina en este programa.. :P si no me crees intenta ganarle. xD

Captura de Pantalla:

Gato..

Descarga el programa y el código fuente dando click aquí.

El programa está hecho usando el IDE Netbeans, pero dentro de la carpeta “dist” puedes encontrar el “ejecutable jar”(gato.jar) para correr el programa sin necesidad de tener Netbeans. =)

Espero que a alguien le llegue a servir de algo, cualquier duda o comentario es bien recibido. =)

Este post fue escrito por:

Francisco I. Leyva - quien ha escrito 594 posts en Panchosoft.com Blog!.


Contactar al autor

71 comentarios para este post

  1. catalina dice:

    como puedo aplicar esta tecnica del minimax con el triqui en java, pues he tratado de bajar tu programa y no puedo. te agradeceria y me ayudes enviando el programa a mi correo.

  2. Francisco I. Leyva dice:

    Hola, no es necesario que te envie a tu correo el programa, lo bajas directamente de la siguiente dirección:

    http://www.panchosoft.com/archivos/gato.zip

    Para abrirlo sólo tienes que descomprimir este archivo a cualquier carpeta, vas a esa carpeta y buscas dentro de ella la carpeta de nombre “dist” y entras ahí, verás un archivo con nombre “Gato.jar” y solamente tienes que dar doble click en él para ejecutarlo.

    Para ver el código fuente y el uso del minimax puedes buscar en las carpetas “src” y “build” los archivos con extensión “.java”, pero te recomiendo que descargues el IDE Netbeans(www.netbeans.org) y abras el proyecto con él, ya que ahí fue creado.

    Saludos. ;)

  3. William dice:

    gracias por la aplicacion que genial esta

  4. cristian p dice:

    esta buenismo,con que lo isite jbuilder?

    me gustaria saber como aplicastes los arboles,
    resp porfa a polanquito-1@hotmail.com

    suerte xauu

  5. LILIANA dice:

    Hola. me gustaria que me enviaras el diagrama de flujo y el algoritmo. si no es mucho pedir, ya que no se nada de esto y es para un trabajo final. gracias.

  6. Francisco I. Leyva dice:

    Hola, bueno diagrama de flujo no tengo, pero el algoritmo lo puedes encontrar fácilmente en Google, sólo poniendo como clave de búsqueda “Algoritmo Minimax”.

    Encontrarás muchas explicaciones, ya que el algoritmo es el mismo en todos los programas que lo implementen.

    En este programa se usa un árbol completo para hacer imposible que la computadora pierda.

    Saludos. =)

  7. Antonio dice:

    Está muy bien todo eso que hablan, pero yo programé en un par de horas un tres en raya en el que la máquina era invencible sin tanta historia. Lo que quiero decir es que para que sirve realmente el algoritmo min max.

  8. Pedro dice:

    Oye me podria ayudar a hacer un gato para jugar en red con gui
    ya tengo todo solo me falta la plantilla del juego como el tuyo para poder marcar los ganadores solo tengo la conexion y la vista, siquieres te mando el codigo a tu correo.Por favor

  9. mari dice:

    hola. conoces algun otro algoritmo para la simular la inteligencia artificial de la maquina?? alguno en el que no tenga q usar arboles!

  10. mari dice:

    esta bueno tu blog. espero tu respuesta. GRACIAS!!!

  11. luis dice:

    hola, podrias orientarme acerca de el juego de numeros de acomodarlos en orden cuando tienes solo un espacio, del 1 al 5, es para IA. gracias

  12. Alberthoven dice:

    Hola. En respuesta a quien programo un 3 en raya invencible en solo 2 horas, ¡enhorabuena, crack!, pero lo salgoritmos de busqueda (”tanta historia”, como tu dices) no solo son utiles sino IMPRESCINDIBLES a ciertos niveles. Piensa en esto: trata de implementar el Go-Moku (algo parecido al 5 en raya, pero en un tablero de 19 x 19) sin emplear un algoritmo de este tipo a ver cuantos años tardas… antes de cansarte y dejarlo.
    Por favor, un respeto a la algoritmica que es lo que posibilita implementar problemas que de otra manera searia impensable.

  13. carlos dice:

    hola soy carlos y estoy buscando por la red algun programa de tres en raya para visual basic o similar. Para posteriormente realizar mediante un protocolo ethernet una conexion a un s7-300 (314 ifm)y hacer un tres en raya neumatico.
    me gustaria si me pudieses dar mas imformación sobre el programa….gracias
    un saludo!!!

  14. Hector dice:

    Hola oye quisiera saber en que parte del codigo haces el calculo de la funcion estatica y donde le das la profundidad del arbol porfavor te agradeceria que me contestaras a mi correo… blessed_skate@hotmail.com

  15. Volaverunt dice:

    Alguien ha programado un ajedrez con minimax ?? Bueno, es que en nuestro proyecto final, nos enfermamos queriendo hacer un ajedrez, pero aun no podemos implementar este metodo, alguien podria enviarme alguna sugerencia por favor ?

  16. Francisco I. Leyva dice:

    Hola, lamento no haber respondido antes. =)

    El juego del gato también podría programarse utilizando condiciones y no inteligencia artificial, el beneficio de la IA no es poder hacer a la máquina invencible en el Gato es resolver otro tipo de problemas y situaciones mucho más complejas ,como bien menciona Alberthoven. En la universidad me pidieron que usara ese algoritmo y por eso lo hice así. =)

    Información sobre el algoritmo la pueden encontrar fácilmente en Google pero de preferencia en inglés. =)

    El código del Gato está hecho para generar el árbol de posibilidades completo, por esa razón no se le puede asignar profundidad. De hecho hice al principio un con profundidad de 2 pero por esa misma razón no era perfecto y podías vencer a la máquina.

    Un ajedrez sería super difícil de implementar con este algoritmo, imagina como sería el árbol de las posibilidades de movimiento. Y aunque puedas utilizar técnicas como la poda alfa beta (Google) para no hacer mejores elecciones creo que es algo muy difícil de hacer. x_x

    Mira, encontré esta página donde explican bien como hacerlo, aunque a estas fechas seguramente ya la miraste: :P
    http://www.dcc.uchile.cl/~jegger/memoria/node36.html

    Saludos. =)

  17. pedro dice:

    hola porfa necesito el codigo en java del tres en raya applet

  18. william dice:

    hola amigos quisiera que me hiciera llegar algoritmos para hacer juegos en netbeans ya que estoy aprendiendo se lo agraDECERIA INDEPENDENCIA620@HOTMAIL.COM

  19. monika dice:

    hola!!! poes el programa esta muuuy bien hecho … gracias!!!

    me sirvio mucho !!!!

  20. Javier dice:

    Hola, te cuento que tu implementación falla, de manera que si la maquina tiene posibilidad de ganar no lo hace, esto le sucede cuando se le presenta una oprtunidad de ganar en una diagonal.

    ej: sigue esta jugada y te daras cuenta.

    siendo el tableo asi:

    012
    345
    678

    juega estas posiciones. (no importa donde juega la maquina)
    (*) son las posiciones a jugar

    000
    00*
    000

    000
    *00
    000

    000
    000
    00*

    aqui despues de la tercer jugada a la maquina se le presenta la oportunidad de ganar y no lo hace!!!!!

    saludos!!!
    Javier

  21. Marco dice:

    como implementar el juego de tres en raya o el gato con el metodo poda alfa-beta

  22. mauro dice:

    hola todos el programa de verdad esta muy bueno pero tengo una pregunta, donde se genera el arbol, es que me mandaron hacer el ejercicio y no se como generar el arbol.
    pues el ejercicio q me mandaron hacer no es tan complicado puesto que no tiene q ser con graficos ni nada solo necesito los metodos para poder hacerlo en java.
    te agradezco tu colaboracion y si puedes mandamelo a este mail.
    vegamaur@gmail.com

  23. mauro dice:

    y si pudes lo mas pronto posible ya que es para el jueves en la noche
    gracias y disculpa la molestia pero es que esto no lo entiendo muy bien

  24. LGRodriguez dice:

    hola todos el programa de verdad esta muy bueno pero tengo una pregunta, como podria hacer el juego del tres en raya pero en codigo de java eclipse…..pues el ejercicio q me mandaron hacer..no tiene q ser con graficos ni nada solo necesito los metodos para poder hacerlo en java eclipse.
    Te agradezco de antemano tu colaboracion…gracias

  25. josil dice:

    hola necesitamos de tu ayuda requerimos el codigo fuente del juego del gato en java que no sea grafico osea que fubciones desde simbolo del sistema lo mas sencilo pero que funciones no se si puedas ayudar,

  26. Francisco I. Leyva dice:

    Que tal todos =) , el código lo pueden tomar directamente del programa. Las clases importantes están separadas de lo visual, sólo hay que estudiar un poco el código.

  27. Esteban dice:

    hola realmente este codigo esta demasiado chiva… buenisimo… mi consulta es que si no tienes uno un poco mas basico… aunque este es 100% comprendible.. creo que me seria de gran ayuda Gracias

  28. daisy dice:

    la implementacion esta interesante, me va ayudar mucho para crear un programa diferente, y felicitaciones por tu programa

  29. lor dice:

    holaa me gusto tu programa solo q yo necesito hacere un gato con graficos mas sencillos , y que solo aparezca una x y una o, como podria hacerlo?

  30. «™Antonio ¤ Z.M.®» dice:

    hola kisiera saber como se implementa el juego del gato en JGrasp pero sin utilzar applet y sin utilizar el arbol solo una matriz y ke lea un archivo .txt donde al estar en blanco se vera asi:
    - - -
    - - -
    - - -

    necesito ke lea el archivo ke tire luego se cierra el archivo y se abre otro y hace la sig. tirada y asi suscesivamente hay un programa ke ve kien gana pero ese no me interesa jajaja por fa ayudaaaa!!

  31. JEsus.. dice:

    Alguien por favor me podria ayudar a hacer el juego de tetris en java netbeans..?….. si tiene el codigo fuente mucho mejor .. gracias..

  32. Enrique dice:

    Buenas , estoy haciendo un gato tridimensional , y bueno la clase ComputadoraIA me ha ayudado bastante , yo no quiero codigo ni mucho menos.

    Solo si me podrias ayudar a empaquetar un .jar para hacer distribucion de mi proyecto , estoy manejando netbeans 5.5.1 y creo es muy parecido al 5.5 , he intentado en una maquina con arquitectura amd64 y lo creo , pero solo lo ejecuta en esa maquina , he leido que la JVM no es la misma para maquinas x86 y amd64, sabes algo de casualidad ?

  33. Francisco I. Leyva dice:

    No me ha tocado compilar en máquinas de 64 bits pero la lógica de Java es que el bytecode (nuestro programa) corre en cualquier máquina virtual sea en Windows/Linux/Mac 32/64 Bits.

    Da más detalles del error =)

  34. marcos dice:

    una pregunta, me ayudsa a hacer el ta te ti pero con el visual basic, tenes idea de como se hace?

  35. Enrique dice:

    En realidad no me marca ningun error , solo que al hacer click en el .JAR no pasa nada.

    Me podrias decir como empaqueste tu ?.

    No escribi gracias en mi primer post asi que lo hago ahora .

    GRACIAS !!

  36. mario dice:

    pasenme un juevo en java o eclipse y yo les pasare cono jakear tarejetas de celulares
    lo necesito pronto para presentar como mi projet

  37. mario dice:

    tego de todo y para todos porfa mandemen el juego en java o esclipse co en codigo a mi correo
    chau se cuidan

  38. Puri dice:

    Buenas:
    Yo, estoy intentando hacer un tres en raya donde se pueda ganar al ordenador, pero no siempre.
    Estoy haciendo los arboles, y utilizando las simetrias, es decir, la primera ficha solo tiene 3 posiciones y asi…
    La cosa es que me parece mucho trabajo, y tal vez halla una forma más fácil de hacerlo.
    Mi arbol tiene una profundidad de 6, para llegar a colocar todas las fichas.
    Con lo cual de colocar esa primera ficha, salen un montón de ociones.
    Si me pudieras decir si voy por el buena camino, te lo agradeceria.
    Muchas gracias.

  39. Puri dice:

    Buenas, otra vez.
    He estado mirando tu codigo, y bien, me he aclarado mucho.
    Como yo queria hacer que no siempre gane ,estaba haciendo las opciones para decidir, pero veo que eso es mucho trabajo. y lo haré aleatoriamente o algo.
    Muchas gracias. Me ha servido de mucho tu blog

  40. Jose Luis dice:

    Saludos: me gustaria saber como hiciste la funcion de evaluacion ,gracias

  41. lino dice:

    felicidades por tu juego me parece muy interesante globalmente pero me gustaria pedirte el favor de explicarme como crear el .jar
    te agradezco que me respondas al correo
    de nuevo felicidades

  42. Edito dice:

    Saludos, me hace falta con caracter urgente el codigo de este famoso programa(tic tac toe), si pudieran que sea en java, aunque en cualquier leguaje me gustaria, muchas gracias de antemano.

  43. Carolina dice:

    Como puedo ver el codigo del juego

  44. Carolina dice:

    hola me gustaria que el cogigo me lo dieras en c++

  45. Francisco I. Leyva dice:

    El código fuente está en el archivo .zip.

    No dispongo del código en C++.

  46. michael dice:

    hola..
    tienes disponible un modelo de clases para el juego??

  47. Chavi dice:

    Mil gracias, caballero.
    A algunos nos has salvado la vida, y a otros estas a punto de salvársela.
    Saludos desde España.

  48. Francisco I. Leyva dice:

    Hombre, es un orgullo saber que tanta gente ha descargado mi gato. =)

    Ya me han tocado ver otros juegos que traen como base este juego y es muy muy satisfactorio sinceramente.

    Saludos y gracias.

  49. ZapataX dice:

    buenas saludos al autor a todos los demas

    me gustaria que me ayudaran a implementar este juego pero para usarlo en red

  50. -Adriana dice:

    Hola, esta bueno el juego, pero me gustaría saber como puedo hacer para aplicarlo para J2ME. Estoy haciendo mi tesis en J2ME, y es un juego en red para celulares.

  51. Edwin dice:

    Hola, te felicito por tu programa, es exactamente lo que necesito en este momento para mi proyecto, pero necesito ejecutarlo en JCreator, no en NetBeans (cosas de maestros) y compile todos los archivos .java de la carpeta src y algunos tiran errores y el main no encuntra la clase Gato. me puedes ayudar con este problema?

  52. estela dice:

    ummm……lamentablemente no he podido descargar tu super juego…ni por una ni por otra dirección… si puedes arreglarlo te lo agradecería…

  53. joel dice:

    Xvr haces bien amigo ahora solo tengo que estudiar los pasos que has hecho .
    gracias brother

  54. Hector Flores dice:

    Está genial el prg, te felicito solo tiene la falla que te comentaron en unos comens atras, en el cual la maquina no gana.

  55. carlex dice:

    hola francisco megustaria saber como puedo implementar tu codigo de gato en jess para q sea un super sistema experto en el juego d tres en raya

  56. María Magdalena dice:

    Hola que tal. Alguien podría ayudarme a conseguir el codigo en java con interfaces graficas El juego del Gato?

  57. Alexander dice:

    Hola:
    Le escribo desde Cuba. Estoy haciendo mi tesis sobre el algoritmo minimax, (como aplicarlo a diferentes juegos que se desarrollan en mi universidad) me gustaría que me ayudaran con cualquier bibliografía sobre el tema, si alguien tiene el juego en c++ y me lo pudiera facilitar le estaría muy agradecido.

  58. Alexander dice:

    Hola Carolina:

    Si pudiste conseguir el codigo en c++, me lo podrias facilitar.
    Si no es mucha molestia, me lo podrias a mandar a esta direccion:
    asardina@estudiantes.uci.cu

  59. JESUS dice:

    xevere, causa muchas gracias por los cods

  60. david dice:

    hola francisco y todos los lectores
    como bien dices en tu comentario sobre el programa, lo realizaste con el arbol completo…
    yo tambien estoy haciendo un trabajo sobre algoritmos MiniMax pero necesito trabajar en una funcion de evaluacion que me permita no recorrer el arbol en toda su profundidad, saben algo de esto?
    especialmente para el juego de los gatos y el raton.

  61. Raidel dice:

    Yo también estoy trabajando en ese problema, pero ya el arbol de jugadas se hace “un poco” mas grande, pues el tablero es de 8 x 8 y se hace un tanto dificil buscar por todo el arbol de juegos, tal y como dice david, si pudieran darnos alguna idea de la función heuristica que pudieramos usar . . . .

  62. joel dice:

    oy ya baje todo lo q tienes pero no lo puedo ejecutar o mas bien no se como hacerle. porfa ayudenme

  63. david dice:

    hola estoy programando un “Gatos y Raton” con minimax y Alfa - Beta too pero estoy atascado con la misma funcion heuristica, para evaluar las posiciones del juego.
    SInceramente en la web no viene mucha informacion sobre esto, todo muy teorico y baba, pero mas nada,
    agradeceria en el alma a quien me pueda ayudar,
    David

  64. Raidel dice:

    weno hasta ahora yo lo ke me hice una funcion ke simplemente me contaba la cantidad de filas por las ke estaban repartidos los gatos, y la separacion de dichas filas, y mientras menos me de dicha función mas fuerte es la posicion en ese tablero, teniendo como resultado asi, ke la mejor posicion posible para los gatos es akella en la ke todos esten en una misma fila, haciendo imposible el paso del raton, pero esto es algo muy chapuzero, así que si se les ocurreo otra idea posteenla

  65. Jaime david cruz sandoval dice:

    oye quiero saber como se puede hacer en java un programa que reconozca un texto y lo haga en matriz y me diga cuantas filas y cuantas columans tiene el texto porfa es urgente gracias

  66. Jose dice:

    me puedes dar el codigo de funcione con el compilador JCreator Pro

  67. michael dice:

    copia las clases que estan en el src y pegalas en una nueva clase del IDE que estés usando.

  68. Viviana dice:

    Necesito ayuda, nos dejaron en la universidad hacer un juego parecido al gato, pero mas dificil, entonces para ver si me podria ayudar, gracias

  69. Pedro dice:

    Hola, me gustaria que me ayudases. Me baje el juego del gato que implementastes, y me gusta mucho, pero lo que quiero es el juego pero solo para dos jugadores. Quiero quitar la parte de jugar con la computadora, pero al hacerlo me salen muchos fallos.

    Me puedes ayudar?
    Es urgente.

    Gracias

  70. Pedro dice:

    mi correo es pedrocity@hotmail.com

  71. Eli dice:

    gracias

Escribe tu comentario: