Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Emily en 19 Marzo 2017, 14:44 pm



Título: programa que resuelva el siguiente laberinto en C#
Publicado por: Emily en 19 Marzo 2017, 14:44 pm
Tengo mucho tiempo trabajando en un programa y no me queda alguien podría de favor ayudarme
Se los agradeceria mucho


Escribir un programa que resuelva el siguiente laberinto. La entrada es la

coordenada (0,1) y la salida es la coordenada (0,5), los unos representan los

obstáculos y los espacios libres se podrían representar por ceros. El usuario

introduce “A” para avanzar arriba, “B” para avanzar abajo, “D” para avanzar a la

derecha e “I” para avanzar a la izquierda.

Nota: mostrar cada movimiento.

Entrada:

Caracteres: A, B, D o I.

Salida:

Al llegar a la salida del laberinto el programa mostraría lo siguiente

(suponiendo que el valor 2 es el usuario):

1 0 1 1 0 2

1 0 1 1 0 1

1 0 1 1 0 1

1 0 0 0 0 1

1 1 0 1 1 1

Haz llegado a la salida, bien hecho.


· Los títulos deben ser descriptivos (modificado)
· Los temas de C# van en el foro de .NET no de C/C++ (movido)
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex


Título: Re: programa que resuelva el siguiente laberinto en C#
Publicado por: engel lex en 19 Marzo 2017, 16:28 pm
no se hacen tareas, se resuelven dudas, muestra lo que llevas, explica en que te tranca y si tienes errores de compilador copia y pega


Título: Re: programa que resuelva el siguiente laberinto en C#
Publicado por: Serapis en 20 Marzo 2017, 23:47 pm
Básicamente lo que tienes que hacer es esperar a recibir pulsaciones de teclas, de ellas sólo interceptas (examinas) las mencionadas de movimiento.
es decir si se pulsó una de ellas, lo que debes hacer es ver si puede avanzarse en la dirección que la tecla tiene asignada, para saber si puede avanzar, hay que ver si en esa dirección la casilla (bit), a la que se apunta es un 0, si lo es se avanza (desplazas la ficha-peón a dicha casilla y la borras de la casilla previa), en caso contrario no se mueve y adviertes al usuario con algo, por ejemplo un sonido sordo.

Finalmente, cada vez que una ficha se ha movido, tienes que verificar si esa casilla es la de salida (0,5), es decir el bit 1 (empezando por la derecha y contando el 0), del primer 'byte' (ya son bytes quienes guardan el mapa).
Si es la casilla de salida, pones un banderín a true, y si el siguiente movimiento es 'ascender' salió del laberinto entonces muestras el mensaje que te piden, si teniendo el banderín a TRUE, se mueve en otra posición distinta (y digo se mueve, porque si no se mueve, no es una posición va´lida a la que moverse), desactivas el banderín (lo pones a FALSE)...

Una vez que lo entiendas bien, lo puedes simplificar mucho...


Título: Re: programa que resuelva el siguiente laberinto en C#
Publicado por: Meta en 21 Marzo 2017, 15:51 pm
Hola:

¿Lo que quieres es esto?
(http://www.subeimagenes.com/img/sdfsd-1718941.png)

Este tipo de cosas recuerdo hacr un ejemplo de la serpiente, un juego ya viejo, que tienes que usar matrices.

Tutorial matrices.
https://msdn.microsoft.com/es-es/library/aa288453%28v=vs.71%29.aspx?f=255&MSPPError=-2147217396

En tu caso son muchas matrices. Solo tienes que indicar la coordenada para moverte dentro de la matriz y cambiar sus valores automáticamente con el teclado.

Saludos.


Título: Re: programa que resuelva el siguiente laberinto en C#
Publicado por: Serapis en 21 Marzo 2017, 17:30 pm
No necesita gran cosa sobre matrices, tan solo necesita una... que contiene el mapa... y alcaso, solo necesita aceder a un índice, sea para leer o cambiar el dato, para eso no hace falta un manual, se supone que eso es lo mínimo que le habrán enseñado sobre matrices... declararlas, acceder a un índice y cambiarlo.
Además, ya aclara que la salida del laberinto es el 2 (bajo
él habría un 0 en el mapa inicialmente), la entrada es el 0 más a la izquierda en la misma línea.

El trabajo básicamente es operar con bits y realizar comprobaciones.

Tampoco es preciso que cada línea sea un byte, cada posición en el mapa podría ser un entero (un byte, por ejemplo), en tal caso tendrías una matriz de dos dimensiones, y por lo mismo, no precisas trabajar a nivel de bits, si no de bytes. Si el mapa puede llegar a ser mucho más grande, es preferible así (de hecho parece sugerirse, que deba ser así, al parecer un '2' por ahí... (si no lo pusiste tú))

El ejecrcicio pone a prueba tu lógica, o bien te enseña a usar la lógica, si no la tienes elevada.