Foros del Web » Programación para mayores de 30 ;) » Java »

Problemilla Ajedrez

Estas en el tema de Problemilla Ajedrez en el foro de Java en Foros del Web. Buenas a todos.. Primero digo que soy nuevo en la programacion asi que si pueden prestarme la mayor ayuda posible lo agradezo. Bueno mi problema ...
  #1 (permalink)  
Antiguo 10/04/2010, 13:32
 
Fecha de Ingreso: septiembre-2006
Mensajes: 20
Antigüedad: 17 años, 7 meses
Puntos: 0
Problemilla Ajedrez

Buenas a todos..
Primero digo que soy nuevo en la programacion asi que si pueden prestarme la mayor ayuda posible lo agradezo.
Bueno mi problema es que tengo todos los movimientos de las fichas realizadas, es decir, sus algoritmos, peor a la hora de comprobar si pueden llegar a la posicion que le marco no se como hacerlo.
Haber me explico, si mando una torre de lado a lado del tablero me interesa que no se permita si por el camino se encuentra otra ficha sea del colo que sea y claro ahí surge mi problema.
Realmente no tengo ni idea de que hacer, cualquier ayuda me vendría bien.
  #2 (permalink)  
Antiguo 11/04/2010, 17:18
 
Fecha de Ingreso: abril-2010
Mensajes: 4
Antigüedad: 14 años
Puntos: 0
Respuesta: Problemilla Ajedrez

Hola, este mi primer mensaje en el foro, y me decidí a responderte porque hace tiempo realice un proyecto parecido al tuyo y me rompí mucho la cabeza resolviendo problemas como ese, yo lo realice en c++ fueron como 5000 lineas de código (pero 0 optimización) y el proyecto trataba de jugar contra la compu, fue hace muchos años cuando estaba en primero de la u y no recuerdo muy bien, además que te adelanto que la solución posiblemente no fue la mas práctica, yo internamente manejaba todo con matrices con valores numéricos, 0=casilla vacía, 1=casilla ocupada pieza blanca, 2=casilla ocupada pieza negra; Al principio llenaba todo de ceros, luego a medida que se ubicaban las piezas en su lugar iban tomando el valor de 1 o 2, Luego cada vez que se realizaba un movimiento la casilla que dejaba la pieza tomaba el valor de 0 y el la casilla donde terminaba tomaba el valor que le corresponda, con eso sabemos exactamente si la casilla esta ocupada o no, y si lo esta de que bando es. Ahora creo que hubiese sido mas sencillo para facilitar después lo movimientos asignar un valor numérico a cada pieza y por color, por ejemplo:
casilla vacía = 0
peón blanco = 1
caballo blanco = 2
alfil blanco = 3
torre blanca = 4
dama blanca = 5
rey blanco = 6

peón negro = 7
caballo negro = 8
alfil negro = 9
torre negro = 10
dama negro = 11
rey negro = 12

Con eso sabríamos el color y el tipo de pieza que hay en cada casilla del tablero, además sabemos cuales están vacías, esto también sirve mucho para controlar las jugadas ilegales.
  #3 (permalink)  
Antiguo 11/04/2010, 17:26
 
Fecha de Ingreso: abril-2010
Mensajes: 4
Antigüedad: 14 años
Puntos: 0
Respuesta: Problemilla Ajedrez

Ah y me olvidaba, para resolver tu problema solo faltaría una función que compruebe siempre antes de realizar el movimiento (o sea antes de permitirlo) si cumple todas las reglas de ajedrez basándose que en que pieza hay en cada cada casilla o si esta vacía, si la pieza que se va a mover cumple el movimiento, si no hay un jaque que atender, si el jaque es o no un jaque mate, y así una larguisisimo etc.
  #4 (permalink)  
Antiguo 12/04/2010, 04:29
 
Fecha de Ingreso: septiembre-2006
Mensajes: 20
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Problemilla Ajedrez

Es la idea que tenia pero voi a tener que realizar un metodo para cada ficha..? porque ten en cuenta que mi tablero es una matriz que realize con un bucle de filas y columnas pero claro, y el caso del recorrido de la torre no es el mismo del alfil entonces....
Ademas mi idea es hacer un bucle que compruebe cada casilla si esta vacia hasta llegar al destino y que devuelva true or false... se puede mejorar o esta bien asi?

Por cierto gracias por la ayuda.
  #5 (permalink)  
Antiguo 12/04/2010, 08:23
 
Fecha de Ingreso: abril-2010
Mensajes: 4
Antigüedad: 14 años
Puntos: 0
Respuesta: Problemilla Ajedrez

Primero cuentame el tipo de programa que quieres hacer exactamente, o sea Humano vs Computadora, Humano vs Humano, Computadora vs Computadora. El mas fácil es el segundo entre humanos.
  #6 (permalink)  
Antiguo 13/04/2010, 13:38
 
Fecha de Ingreso: septiembre-2006
Mensajes: 20
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Problemilla Ajedrez

Sino te importa te enviare un privado y te comento ya que solo me ayudaste tu.. Si quieres contesta, pero de toas maneras.
  #7 (permalink)  
Antiguo 13/04/2010, 18:26
 
Fecha de Ingreso: abril-2010
Mensajes: 4
Antigüedad: 14 años
Puntos: 0
Respuesta: Problemilla Ajedrez

Hola nuevamente, mira tengo toda la intención de ayudarte pero como te dije yo lo hice en c++, soy nuevo en Java y por eso estoy frecuentando este subforo para aprender. Por eso solo te puedo ayudar con la lógica pero no puedo con la sintaxis pues no la conozco casi nada.

Me vas a decir que c++ y java se parecen bastante, y tienes razón pero en ese entonces yo no sabia nada de POO y lo hice como pude, por eso es que en ese aspecto no te puedo ayudar con Java. Si aun deseas avisame y con gusto te ayudo con la lógica y con lo que pueda.

Otra cosa, el programa es para un proyecto de la u o solo para practicar el lenguaje?

Y sinceramente te recomiendo que solo intentes Humano vs Humano, si te sale luego le agregas el otro. Tratar de simular IA para que juegue la computadora sola es en extremo difícil, hay que tener en cuenta mil cosas en cambio realizar el movimiento de un humano es mas sencillo, solo hay que controlar las jugadas ilegales y el resto sale solo.
  #8 (permalink)  
Antiguo 14/04/2010, 14:57
 
Fecha de Ingreso: septiembre-2006
Mensajes: 20
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Problemilla Ajedrez

Realmente tengo hecho el humano vs humano. Tratare de modificarlo para que quede mejor.
Por cierto mi idea de hacer la IA es un estilo de MiniMax, es decir, que eliga la mejor opcion basado en la cercania hacia el rey y su posibilidad de comer una ficha o ser comido....
Pero me parece que me tirara un largo tiempo y he intentado buscar algun tutorial que me ayude puesto que realmente es parecido al MiniMax pero a mi manera....pero nada no encuentro ningun tutorial si sabes algo, aunque sea en c++ ya que tienen mucho parecido.
Realmente no me interesa el codigo en c++ sino algun sitio que comente sobre la mejor manera de realizar la IA (No me importa el codigo solo tener ideas).
Gracias por la ayuda
  #9 (permalink)  
Antiguo 18/04/2010, 04:44
 
Fecha de Ingreso: septiembre-2006
Mensajes: 20
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Problemilla Ajedrez

Alguien sabria como hacer el codigo del jaque y ademas que compruebe si es jaque mate siendo el tablero una matriz de casillas...

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:30.