elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Juego de laberinto en c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Juego de laberinto en c++  (Leído 13,606 veces)
SirLancelot53

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Juego de laberinto en c++
« en: 23 Enero 2014, 22:48 pm »

Hola, tengo que hacer el juego de un laberinto en c++ usando una matriz en un archivo de texto, hasta ahora he podido cargar la matriz y delimitarla (es con caracteres especiales en donde " ? " son las barreras, 0 el inicio, @ la llegada, < el personaje  y - el camino), aun no he podido implementar las funciones que permiten que el personaje gire o se mueva hacia adelante.
Este es el código que llevo:
Código
  1. #include<iostream>
  2. #include<fstream>
  3. using namespace std;
  4.  
  5. char nombre_archivo (char a[200])
  6. {
  7.    cout <<"Digite el nombre del archivo" << endl;
  8.    cin.getline(a,200);
  9.    return a[200];
  10. }
  11.  
  12. void ver_mundo (char** M, int f, int c)
  13. {
  14.    M[0][0]='>';
  15.    cout<<M[f][c]<<" ";
  16. }
  17.  
  18. void crear_mundo (char**M, int f, int c, istream& a, int i, int j)
  19. {
  20.    for (i=0; i<f+3 ; i++)
  21.    {
  22.      cout<<"?" << " ";
  23.    }
  24.    cout << endl;
  25.   for (i = 0; i < f; i++)
  26.   {
  27.       cout<<"?" << " ";
  28.       for (j = 0; j < c; j++)
  29.       {
  30.            a>>M[i][j];
  31.           ver_mundo(M, i, j);
  32.       }
  33.       cout << "?" << endl;
  34.   }
  35.   for (i=0; i<f+3 ; i++)
  36.    {
  37.      cout<<"?" << " ";
  38.    }
  39.   delete [] M;
  40. }
  41.  
  42. int main()
  43. {
  44.    int i,j,f,c;
  45.    char archivo[200];
  46.    nombre_archivo(archivo);
  47.    ifstream a(archivo);
  48.    a>>f;
  49.    a>>c;
  50.    char **M = new char* [f];
  51.    for (i = 0; i < f; i++)
  52.    {
  53.        M[i] = new char[c];
  54.    }
  55.    crear_mundo (M, f, c, a, i, j);
  56.    return 0;
  57. }
¿Como podria implementar las funciones mencionadas? Agradezco sus sugerencias y su ayuda.


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Juego de laberinto en c++
« Respuesta #1 en: 30 Enero 2014, 13:28 pm »

estás usando C++... no te has planteado la posibilidad de crear un ecosistema de objetos que te facilite el trabajo??

No se, quizás una clase "Laberinto" que almacene la información relativa al laberinto, una clase "Jugador" que represente al insensato que pretenda salir del laberinto...

Además estaría bien usar la clase string para manejar las cadenas de texto y cosas asi.

Otras consideraciones:

* una función de más de 4 argumentos debería ser evitada.
* una función que recibe un argumento de nombre "a" no dice, con perdón, una *****, usa nombres que identifiquen la función de la variable. Es más productivo y además gratis.
* no se si eres consciente de que la función "crear_mundo" elimina el laberinto.
* C++ permite usar contenedores que gestionan bastante bien la memoria... lo mismo te interesa usarlos para almacenar cosas como la matriz del laberinto.

Y luego, en cuanto a cómo moverte... pues no se, necesitas un sistema de coordenadas ( X,Y por ejemplo ) que localice la posición del jugador. Incrementando o decrementando dichos valores consigues que el jugador se mueva... no te olvides de chequear los movimientos para evitar que el jugador atraviese paredes!!!


En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Juego de laberinto en c++
« Respuesta #2 en: 30 Enero 2014, 13:44 pm »

Echa un ojo aqui que te puede dar unas ideas  :rolleyes:
Y prueba hacer con clases como dice eferion:

http://foro.elhacker.net/programacion_cc/ayuda_con_programa_urgente-t404470.0.html
En línea

NikNitro!


Desconectado Desconectado

Mensajes: 1.309


Galletaaa!!!


Ver Perfil WWW
Re: Juego de laberinto en c++
« Respuesta #3 en: 30 Enero 2014, 14:47 pm »

Recuerda que un juego suele ser un bucle infinito en el cual al principio checkeas si se ha pulsado algo y cuando ocurre, usas el condicional adecuado. Al menos es lo que yo haría en el main.

Como nota decirte que si quisieras algún método para averiguar una posible salida, podrías usar un algoritmo de Backtrack (Vuelta atrás) o, si quisieras todas las posibles, con ramificación y poda. Esto te puede servir para crear un programa que haga laberintos con una única salida o a dar una opción de "ayuda" en la cual vea todos los caminos posibles y vea la siguiente casilla de la que estás que tiene más correspondencias con ellos.

Salud ;)
En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Juego de laberinto en c++
« Respuesta #4 en: 30 Enero 2014, 15:10 pm »

Citar
ramificación y poda
¿¿Puedes dar un ejemplo??Muy interesante el tema.  :huh:
¿Alguna lectura recomendada?

;D
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Juego de laberinto en c++
« Respuesta #5 en: 30 Enero 2014, 15:33 pm »

¿¿Puedes dar un ejemplo??Muy interesante el tema.  :huh:
¿Alguna lectura recomendada?

;D

Deberías empezar por mirar algo de teoría de grafos... así te va a resultar más sencillo comprender e implementar este tipo de algoritmos.

En cuanto a bibliografía... busca en google, aunque ya te digo yo que los mejores portales son los de habla inglesa.
En línea

NikNitro!


Desconectado Desconectado

Mensajes: 1.309


Galletaaa!!!


Ver Perfil WWW
Re: Juego de laberinto en c++
« Respuesta #6 en: 30 Enero 2014, 23:11 pm »

A mi el libro en español que más me ha gustado ha sido "Fundamentos de Algoritmia" de Bassard. Te lo recomiendo ;)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Laberinto en Php.
PHP
n3fisto 2 4,285 Último mensaje 20 Marzo 2010, 15:26 pm
por n3fisto
Backtracking - Laberinto
Programación C/C++
hadree 3 6,661 Último mensaje 23 Noviembre 2010, 03:08 am
por do-while
Juego del laberinto C
Programación C/C++
Rpgmakero 4 10,260 Último mensaje 4 Marzo 2011, 01:50 am
por N0body
hacer un juego de laberinto
Programación C/C++
TaniaSRT 1 2,183 Último mensaje 18 Julio 2017, 01:17 am
por ivancea96
[Aporte] Mini juego laberinto estilo FPS en terminal de Linux
Programación C/C++
BloodSharp 1 2,747 Último mensaje 12 Febrero 2021, 15:33 pm
por **Aincrad**
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines