Título: Programa resolución laberinto en C Publicado por: Leafar77 en 19 Noviembre 2014, 17:17 pm Hola buenas a todos. Soy alumno de primero de carrera de ingeniería de software y me dirijo a esta comunidad (otra vez) para pedir ayuda a la voz de la experiencia con un problema en el que estoy atascado.
El ejercicio consiste en hacer un programa en C que sea capaz de resolver un laberinto simple, un camino, que se le ha de pasar al programa por la entrada de texto. El laberinto tiene que ser de 32x32 caracteres binarios, siendo los 0s los espacios vacíos. Y ha de guardarse en un array bidimend¡sional para trabajar con él. Tal que así: Código: 11111011111111111111111111111111 Y la salida del programa ha de darte los movimientos que ha seguido el programa para completar el laberinto. También he hecho que imprima las coordenadas de la posición actual en cada movimiento. El problema viene cuando al pasarle el laberinto, el programa avanza solo unas pocas posiciones o entra en un bucle. Dando salidas como estas: Posicion inicial 0x0(ni un avance) Código: Array guardado Posicion inicial 3x5 (avanza varias y luego se para) Código: Array guardado Posicion 5x22 (Idem) Código: Array guardado Posicion 5x9 (Entra en bucle) Código: Array guardado Evidentemente algo en la lógica o en el algoritmo esta mal, pero no consigo encontrar el fallo. Este es mi código: Código
Muchas gracias de antemano por cualquier ayuda y un saludo a la comunidad elhacker! Título: Re: Programa resolución laberinto en C Publicado por: _Enko en 19 Noviembre 2014, 22:39 pm Hola, no se exactamente que problemas puedes tener en el código. Pero por lo que recuerdo, uno de los algoritmos mas usados para encontrar la ruta es el algoritmo A Star.
http://en.wikipedia.org/wiki/A*_search_algorithm Si mal no recuerdo, habia hecho la implementación siguiendo esta guia: http://www.gamedev.net/page/resources/_/technical/artificial-intelligence/a-pathfinding-for-beginners-r2003 (disponible español en http://www.policyalmanac.org/games/articulo1.htm) y este tambien: http://www.raywenderlich.com/4946/introduction-to-a-pathfinding necesitas dos listas enlazadas. Por lo menos leyendo esas guias puedas darte una idea de como sacar la ruta mas eficiente. Saludos. Título: Re: Programa resolución laberinto en C Publicado por: engel lex en 19 Noviembre 2014, 22:53 pm te digo, tu código es más largo de lo que la mayoría intentarán leer también
procura usar las etiquetas GeSHi para publicad código (ya que si no es más difícil de leer) por ultimo te recomiendo usar el debugger y correr las instrucciones paso a paso para poder ver cual es el error en tu logica más facilmente Título: Re: Programa resolución laberinto en C Publicado por: Leafar77 en 19 Noviembre 2014, 23:49 pm Hola, no se exactamente que problemas puedes tener en el código. Pero por lo que recuerdo, uno de los algoritmos mas usados para encontrar la ruta es el algoritmo A Star. http://en.wikipedia.org/wiki/A*_search_algorithm Si mal no recuerdo, habia hecho la implementación siguiendo esta guia: http://www.gamedev.net/page/resources/_/technical/artificial-intelligence/a-pathfinding-for-beginners-r2003 (disponible español en http://www.policyalmanac.org/games/articulo1.htm) y este tambien: http://www.raywenderlich.com/4946/introduction-to-a-pathfinding necesitas dos listas enlazadas. Por lo menos leyendo esas guias puedas darte una idea de como sacar la ruta mas eficiente. Saludos. Me he estado mirando el algoritmo que me dices y he sacado alguna idea que puedo aplicar aqui, pero no exactamente lo que me piden en el problema, de hecho es más simple. El programa no tiene que buscar la ruta mas eficiente, basta con una de las rutas, y aunque esta sea un mero "caminito" más que un laberinto.(Como el del ejemplo) Este codigo deberia servir para lo que me piden, pero por algun lado peta. Gracias por la ayuda! te digo, tu código es más largo de lo que la mayoría intentarán leer también procura usar las etiquetas GeSHi para publicad código (ya que si no es más difícil de leer) por ultimo te recomiendo usar el debugger y correr las instrucciones paso a paso para poder ver cual es el error en tu logica más facilmente Gracias, no sabia como resaltar el texto! Voy a intentar con el debugger, a ver si consigo algo. Título: Re: Programa resolución laberinto en C Publicado por: engel lex en 19 Noviembre 2014, 23:57 pm reglas del foro, procura no hacer doble post, si necesitas decir algo adicional, usa el boton (http://foro.elhacker.net/Themes/converted/images/spanish/modify.gif)
|