• Domingo 17 de Noviembre de 2024, 18:39

Autor Tema:  Juego cruz y raya  (Leído 3534 veces)

SFRJ

  • Miembro MUY activo
  • ***
  • Mensajes: 115
    • Ver Perfil
Juego cruz y raya
« en: Domingo 25 de Enero de 2009, 20:31 »
0
Hola amigos me estado rompiendo la cabeza ya unos cuantos dias y no se que hacer.
Estoy haciendo un juego de cruz y raya pero solo he podido hacer para jugar a 2 jugadores, no consigo hacer el algoritmo para poder jugar contra el CPU. Si alguien sabe como se hace estaria muy agradecido de que me ayudase a terminar el programa.Yo diria que el programilla esta ya terminado al 80% solo me falta entender como poder hacer alguna especie de memorilla artificial(he visto algun aplet por internet pero que no es para nada inteligente, el ordenador nunca gana), y que piense un poco. Si os interesa ayudarme y dais con la solucion estaria muy agradecido.
Ahi en el adjunto os mando el codigo fuente de lo que he hecho asta ahora, de momento solo se puede jugar a 2 jugadores :)

Un saludo a todos
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

icedTea

  • Miembro activo
  • **
  • Mensajes: 29
  • Nacionalidad: mx
    • Ver Perfil
    • http://willy-n-billy.blogspot.com
Re: Juego cruz y raya
« Respuesta #1 en: Domingo 25 de Enero de 2009, 21:25 »
0
¿Porqué?

No pude correr tu programa  :blink:

Código: Text
  1. hugo@mint-linux ~/X & O/bin/graphic $ java Game
  2. Exception in thread "main" java.lang.NoClassDefFoundError: Game (wrong name: graphic/Game)
  3.     at java.lang.ClassLoader.defineClass1(Native Method)
  4.     at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
  5.     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
  6.     at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
  7.     at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
  8.     at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
  9.     at java.security.AccessController.doPrivileged(Native Method)
  10.     at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
  11.     at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
  12.     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
  13.     at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
  14.     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
  15.  
  16.  

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Juego cruz y raya
« Respuesta #2 en: Lunes 26 de Enero de 2009, 08:44 »
0
Una IA de curz y raya es sencilla:

1. Mirar si hay jugada ganadora. Si la hay, jugarla. Fin.
2. Mirar si el oponente tiene jugada ganadora. Si tiene, jugar donde él jugaría.
3. Si no se cumple ni 1 ni 2, jugar al azar.

Puedes ir mejorándola calculando jugadas por adelantado. Puedes usar árboles para ello.

¡Salud!

SFRJ

  • Miembro MUY activo
  • ***
  • Mensajes: 115
    • Ver Perfil
Re: Juego cruz y raya
« Respuesta #3 en: Lunes 26 de Enero de 2009, 19:49 »
0
No tengo nidea, como no funciona, estas seguro?
A ti te funciono moskito?

La verdad no entiendo que quieres decir, con lo de jugardas por adelantado.
por ejemplo que empieze jugando la maquina, y que al hazar elija una u otra jugada.

Tengo bastante complicacion con como hacer para que la maquina sepa que boton elegir cuando el humano a elegido, sin que se repita uno que ya esta cogido.
Bueno le echare un vistazo, pero me sigue pareciendo bastante complicadillo, con mis conocimientos :)  na seguire intentandolo, no se si saldra.

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Juego cruz y raya
« Respuesta #4 en: Lunes 26 de Enero de 2009, 20:30 »
0
utilizando una matriz


saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Juego cruz y raya
« Respuesta #5 en: Martes 27 de Enero de 2009, 09:07 »
0
Cita de: "SFRJ"
A ti te funciono moskito?
No lo he probado, pero tu pregunta no necesita que lo pruebe  ^_^

Cita de: "SFRJ"
La verdad no entiendo que quieres decir, con lo de jugardas por adelantado.
Entonces olvida esa parte y mira lo que te he dicho. Empieza implementando la IA que te he puesto y después se puede ir complicando.

Cita de: "SFRJ"
Tengo bastante complicacion con como hacer para que la maquina sepa que boton elegir cuando el humano a elegido, sin que se repita uno que ya esta cogido.
Como ha dicho el Sabio F_Tanori, con una matriz (de boolean por ejemplo).

Salud y suerte

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Juego cruz y raya
« Respuesta #6 en: Martes 27 de Enero de 2009, 17:50 »
0
Hola.

Lo que estás buscando se llama árbol de decisión. En particular, el conocido como árbol minimax.
Búscalo en google y verás bastantes ejemplos de cómo implementarlo.

Los nodos del árbol son los tableros, en la raiz está el tablero actual. Cada jugada posible es una ramificación que generará otro nodo y así sucesivamente.Hay que considerar que cada nivel del árbol es 'media jugada', o sea, que es el turno de un jugador y en el árbol hay que reflejar las jugadas de dos jugadores (es como pensar en el movimiento que hará tu contrario). A partir de ahí, se le da una puntuación a cada tablero, considerando que tú jugarás la mejor de tus opciones y el contrario la mejor de las suyas (si el no lo hace lo mejor posible, peor para él) y se elige el mejor camino con todas las jugadas que se hayan calculado.

Por ejemplo, en las 3 en raya podrías programar todo el arbol completo, por lo que tu juego nunca podría perder, mientras que en ajedrez o en go, el cálculo es muy complejo y no puede hacerse sólo con un árbol.

Hay muchos libros de IA que hablan de este algoritmo, intenta conseguir alguno.

Ya nos contarás.
Suerte.