Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: edotropic en 20 Diciembre 2013, 01:08 am



Título: Ayuda con laberinto en una matriz
Publicado por: edotropic en 20 Diciembre 2013, 01:08 am
buenas, ante todo muchas gracias por la ayuda que me daran..

les cuento debo crear una matriz de tamaño M por ejemplo 5x5 en la cual debe estar ingresada con caracteres "a" y "c" en los cuales debo moverme solo por las letras A
en otras palabras la letra c son murallas, ahora cuando estoy en una casilla debo poder moverme arriba abajo izquiera o derecha, estuve tratando de provar unas cosas pero no me funcionaron, haber si me ayudan un poco con el codigo

#include <stdio.h>
#include <stdlib.h> //incluye srand() y rand()
#include <conio.h>
#include <time.h> //incluye time()
 
char mat[4][4]; //tamaño de la matriz
char letras[]="ac";
int numdeletras=sizeof(letras)/sizeof(letras[0])-1;
 
int main()
{
   
   
    srand(time(0));//numeros Aleatorios en funcion del tiempo
    for (int i=0;i<4;i++)//para desplazarse por las columnas
    {
        for (int j=0;j<4;j++)//para desplazarse por las filas
        {
            mat[j]=letras[rand()%numdeletras];//Agrega numero aleatorio a la posicion ij de la matriz
            printf("\t%c",mat[j]);//imprime elemento de la matriz en pantalla
        }
      printf("\n\n");//para dejar espacios entre filas.
      printf("\i\j");
    }

   
   
   getche();
}

en el fondo lleno la matriz, pero no se como poder moverme a izquierda derecha etc... agradeso su ayuda


Título: Re: Ayuda con laberinto en una matriz
Publicado por: dvigon en 20 Diciembre 2013, 01:56 am
NO estoy seguro pero esto quizás te sirva...
Código:

#define JUGADOR 2
#define N 4
// donde pone N será el valor de las filas y columnas de la matriz

// Mueve el jugador en la matriz
void Mover_Jugador( char Matriz[N][N], char Tecla, int *Filas, int *Columnas ){

    int F, C, Posicion[N][N];

    for( int i = 0; i < N; i++ )
        for( int j = 0; j < N; j++ )
            Posicion[i][j] = Matriz[i][j];

    F = *Filas;
    C = *Columnas;

    switch( Tecla ){

        case 72: // Movimiento hacia arriba
            if( *Filas > 0 && Matriz[*Filas - 1][*Columnas] != 'c' ){
                ( *Filas )--;
                ( *Puntos ) ++;
                Posicion[F + 1][*Columnas];
            }
            break;

        case 80: // Movimiento hacia abajo
            if( *Filas < N - 1 && Matriz[*Filas + 1][*Columnas] != 'c' ){
                ( *Filas )++;
                ( *Puntos ) ++;
                Posicion[F - 1][*Columnas];
            }
            break;

        case 75: // Movimiento hacia la derecha
            if( *Columnas > 0 && Matriz[*Filas][*Columnas - 1] != 'c' ){
                ( *Columnas )--;
                ( *Puntos ) ++;
                Posicion[F][C + 1];
            }
            break;

        case 77: // Movimiento hacia la izquierda
            if( *Columnas < N - 1 && Matriz[*Filas][*Columnas + 1] != 'c' ){
                ( *Columnas )++;
                ( *Puntos ) ++;
                Posicion[F][C - 1];
            }
            break;

        }

        Matriz[*Filas][*Columnas] = JUGADOR; // JUGADOR se mueve de posicion

}

int main( ){

    int Matriz[N][N];  // Tu matriz
    int Tecla; // Tecla que introduces por pantalla

do{

        Tecla = getch( );

        if( Tecla == -32 || Tecla == 0 ) // Mueve el jugador
            Tecla = getch( );

        Mover_Jugador( Matriz, Tecla, &Filas, &Columnas );

    }while(  AQUÍ TU CONDICIÓN PARA EL FINAL DEL BUCLE );
}


Título: Re: Ayuda con laberinto en una matriz
Publicado por: edotropic en 20 Diciembre 2013, 02:05 am
la tecla que recibe ahi son las flechas??? .. otra consulta como podria escribir mi condicion.. por que yo diria si la posicion de la matriz es igual a la letra "a" ahi solo entra


Título: Re: Ayuda con laberinto en una matriz
Publicado por: dvigon en 20 Diciembre 2013, 02:08 am
Sí, la variable Tecla recibe el movimiento que indicas por teclado CON LOS CURSORES.

Ya esta la condición de que no pase a la casilla con valor c
mediante el if por ejemplo de:
Código:
        case 80: // Movimiento hacia abajo
            if( *Filas < N - 1 && Matriz[*Filas + 1][*Columnas] != 'c' ){
                ( *Filas )++;
                ( *Puntos ) ++;
                Posicion[F - 1][*Columnas];
            }
            break;


Título: Re: Ayuda con laberinto en una matriz
Publicado por: edotropic en 20 Diciembre 2013, 02:10 am
mm, dale. lo intentare muchas gracias


Título: Re: Ayuda con laberinto en una matriz
Publicado por: leosansan en 20 Diciembre 2013, 13:29 pm

Antes que nada cuando postees código elige las etiquetas GeSHi y toma la C++ y en medio de las etiquetas Code que aparecen "pegas" tu código. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.

Igual te puede interesar este tema  (http://foro.elhacker.net/programacion_cc/ayuda_con_programa_urgente-t404470.0.html) que trata de laberintos.


Saluditos! ..... !!!!        (http://st.forocoches.com/foro/images/smilies/aaaaa.gif)