• Martes 16 de Abril de 2024, 17:14

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - ..::[JiOn]::..

Páginas: [1]
1
C/C++ / Crear Un Menu Para Un Juego Con Objetos
« en: Viernes 6 de Julio de 2007, 03:47 »
Buenas!! vengo con una pequeña duda..

Estoy creando un juego en c++ (Un tetris especificamente, ya habia hecho un par de preguntas antes pero lo deje sin terminar por la facu) y no se como crear el menu. Parece tonto, pero no se me ocurre una estructura de datos limpia para almacenar en que parte del menu te encuentras (ya que tiene varias opciones) y que opciones debe mostrar. La estructura del menu seria algo asi:

Menu principal.

- Jugar
- Opciones
- Salir

Menu Opciones (al clickear en opciones)

- Resolucion de pantalla
- Configurar teclas
- ... etc

Menu Configurar teclas

- Derecha
- Izquierda
- Rotar
- Soltar pieza

Bien, ahora mi pregunta es como podria expresar de la manera mas limpia esto en objetos, Las pantallas serian todas iguales simplemente cambian las opciones y lo que hace cada una claro. Gracias  :)

EDIT:

Por si no quedo bien en claro lo que quiero, seria un menu al estilo de los juegos comerciales, por ejemplo:

Quake

Centipede

Uso SDL, pero de todas formas no quiero un codigo "armado". Simplemente unas ideas generales de como deberia organizar los datos y como ir moviendome por el menu usando objetos, en una programacion "plana" tal vez la solucion seria anidar switchs, pero se me hace que esto no es muy limpio para la POO.

2
C/C++ / Re: Librería De “graphics.h”
« en: Sábado 27 de Enero de 2007, 09:12 »
Si queres hacer un juego  podés probar la libreria SDL, que es mas sencillo que programar directamente con la API de DirectX. Vas a encontrar muchos tutoriales facilmente en internet.  Pero te recomiendo que tambien que leas tutoriales/cursos de C estandar, ya que esas librerias que nombras son del arcaico Borland, que no entiendo porque todavia muchos novatos aprenden (o les enseñan) a programar en C con ese engendro.
Un buen IDE para windows es Code::blocks,  que podes descargarlo con el compilador MINGW ya incluido en el paquete. Una vez que tengas el IDE instalado es facil agregarle y usar las librerias SDL.

Te dejo algunos links:

http://www.zator.com/Cpp/ -> Muy buen curso de C++
http://www.codeblocks.org/ -> El IDE Codeblocks.
http://www.losersjuegos.com.ar/referencia/...alar_devcpp.php -> Instalar SDL (en el tutorial explican como hacerlo en Dev-Cpp pero es igual en Code::blocks )

3
C/C++ / Re: Puerto Paralelo (xp)
« en: Domingo 14 de Enero de 2007, 08:06 »
Una pequeña duda, perdon por desvirtuar el tema central. Porque un "SO de verdad" no se puede acceder a esos puertos? Que tiene de bueno eso?. Y como hacen a funcionar las impresoras que se conectan por el puerto paralelo en XP? O lo que estan tratando de de decir es que en la gama NT se accede a estos puertos de una manera diferente que en 9x?

4
C/C++ / Re: Pasar De Matriz 2d Por Referencia
« en: Martes 17 de Octubre de 2006, 04:52 »
Si, perdon soy re despistado ^_^ , es que iba a escribir minimamente las funciones del tetris partiendo de el codigo que escribio Eternal Idol, y por fiaca :P decidi mostrar la solucion con su codigo original, y olvide cambiar ese 10x20 (tablero del tetris) por el 10x10 original. El otro error mas groso que pase por alto es que para utilizar el parametro por referencia debo hacerlo asi:

Código: Text
  1. (*parametro)[y][x] = 10 - y;
  2.  

y no de la manera que estaba escrita en mi anterior post:

Código: Text
  1. parametro[y][x] = 10 - y;
  2.  

asi que el codigo funcional seria el siguiente:

Código: Text
  1.  
  2. // El codigo de Eternal Idol modificado usando la manera que encontre
  3. #include <stdio.h>
  4.  
  5. class clase1
  6. {
  7.      public:
  8.      int tabla[10][10];
  9.  
  10.      void dump();
  11. };
  12.  
  13. class clase2
  14. {
  15.      public:
  16.      int funcion(int (*parametro)[10][10]);
  17. };
  18.  
  19. class clase3
  20. {
  21.       public:
  22.       clase1 cls1;
  23.       clase2 cls2;
  24.  
  25.       int funcion(void);
  26. };
  27.  
  28. void clase1::dump()
  29. {
  30. for (int y = 0; y < 10; y++)
  31. {
  32.   for (int x = 0; x < 10; x++)
  33.   {
  34.     printf("%d ", tabla[y][x]);
  35.   }
  36.   printf("\r\n");
  37. }
  38. }
  39.  
  40. int clase2::funcion(int (*parametro)[10][10])
  41. {
  42. for (int y = 0; y < 10; y++)
  43. {
  44.   for (int x = 0; x < 10; x++)
  45.   {
  46.     (*parametro)[y][x] = 10 - y;
  47.   }
  48. }
  49. return 1;
  50. }
  51.  
  52. int clase3::funcion(void)
  53. {
  54. cls2.funcion(&cls1.tabla);
  55. return 0;
  56. }
  57.  
  58. int main()
  59. {
  60. clase3 hola;
  61. for (int y = 0; y < 10; y++)
  62. {
  63.   for (int x = 0; x < 10; x++)
  64.   {
  65.     hola.cls1.tabla[y][x] = y;
  66.   }
  67. }
  68. hola.cls1.dump();
  69. hola.funcion();
  70. hola.cls1.dump();
  71. }
  72.  
  73.  

Esta vez probado con compilador, 100% funcional garantizado :P
Gracias por el interes y la ayuda.

5
C/C++ / Re: Mejor Ide?
« en: Lunes 16 de Octubre de 2006, 22:41 »
Podes probar Code::Blocks que es similar al Dev-C++ pero mucho mejor a mi gusto.

6
C/C++ / Re: Pasar De Matriz 2d Por Referencia
« en: Lunes 16 de Octubre de 2006, 22:27 »
Bueno, al final buscando en internet pude solucionar el problema :) Paso a comentarles como lo hice.

Lo que estoy haciendo un tetris con C++ y SDL mas que nada para agarrarle la mano a SDL y a la POO.

Las tres clases involucradas en este asunto son:

Tablero ---> Contiene un array con los datos de cada casillero del tetris, es un array de 10*20 (Tablero[10][20]) ---> clase 1
Grafica ---> Esta clase es la encargada de imprimir en pantalla el juego, contiene una funcion llamada imprimetablero que pasandole por referencia una matriz de 10*20 la imprime en pantalla como el tablero de tetris. ---> Clase 2
Engine --->  Maneja las colisiones, borra las lineas, lee el teclado mediante otra clase, etc. Es la clase que llama a la funcion imprimetablero pasandole por referencia la tabla contenida en la clase Tablero ---> Clase 3

Probando de la manera que me sugirio pabloreda, el compilador me lo tomaba bien pero en realidad no funcionaba. Iba a probar hacerlo como me sugirio Eternal Idol pero no me queria dar por vencido y queria saber la manera de pasarlo como una matriz 2D y buscando encontre esta solucion:

Código: Text
  1.  
  2. // El codigo de Eternal Idol modificado usando la manera que encontre
  3. #include <stdio.h>
  4.  
  5. class clase1
  6. {
  7.       public:
  8.       int tabla[10][10];
  9.  
  10.       void dump();
  11. };
  12.  
  13. class clase2
  14. {
  15.       public:
  16.       int funcion(int (*parametro)[10][20]);
  17. };
  18.  
  19. class clase3
  20. {
  21.        public:
  22.        clase1 cls1;
  23.        clase2 cls2;
  24.  
  25.        int funcion(void);
  26. };
  27.  
  28. void clase1::dump()
  29. {
  30.  for (int y = 0; y < 10; y++)
  31.  {
  32.    for (int x = 0; x < 10; x++)
  33.    {
  34.      printf("%d ", tabla[y][x]);
  35.    }
  36.    printf("\r\n");
  37.  }
  38. }
  39.  
  40. int clase2::funcion(int (*parametro)[10][20])
  41. {
  42.  for (int y = 0; y < 10; y++)
  43.  {
  44.    for (int x = 0; x < 10; x++)
  45.    {
  46.      parametro[x][y] = 10 - y;
  47.    }
  48.  }
  49.  return 1;
  50. }
  51.  
  52. int clase3::funcion(void)
  53. {
  54.  cls2.funcion(&cls1.tabla);
  55.  return 0;
  56. }
  57.  
  58. void main()
  59. {
  60.  clase3 hola;
  61.  for (int y = 0; y < 10; y++)
  62.  {
  63.    for (int x = 0; x < 10; x++)
  64.    {
  65.      hola.cls1.tabla[y][x] = y;
  66.    }
  67.  }
  68.  hola.cls1.dump();
  69.  hola.funcion();
  70.  hola.cls1.dump();
  71. }
  72.  

Aunque me parece que de la manera propuesta por Eternal Idol estaría consumiendo menos memoria...

7
C/C++ / Re: Pasar De Matriz 2d Por Referencia
« en: Viernes 13 de Octubre de 2006, 04:49 »
Muchas gracias! Me anda de las dos maneras, voy a ver con que metodo me quedo.  :)

8
C/C++ / Re: Pasar De Matriz 2d Por Referencia
« en: Jueves 12 de Octubre de 2006, 16:56 »
La funcion de clase2 existe en mi codigo, no lo inclui aca para no poner tanto codigo, en realidad mi codigo es bastante mas extenso, por eso no pongo el original. Supongo que estoy usando mal los punteros en algun lado, pero no se donde.

9
C/C++ / Pasar De Matriz 2d Por Referencia
« en: Jueves 12 de Octubre de 2006, 13:41 »
Bueno, voy a tratar de resumir lo mas posible mi problema, estoy haciendo un programa con objetos, y tengo un error de compilador al pasar por referencia una matriz de 2 dimensiones de un objeto hacia una funcion de otro objeto. Todo esto haciendolo desde otro objeto diferente.

En codigo:

Código: Text
  1. class clase1
  2. {
  3.         public:
  4.         int tabla[10][10];
  5. }
  6.  
  7. class clase2
  8. {
  9.         public:
  10.         int funcion(int** parametro);
  11. }
  12.  
  13. class clase3
  14. {
  15.          public:
  16.          clase1 cls1;
  17.          clase2 cls2;
  18.  
  19.          int funcion(void);
  20. }
  21.  
  22. clase3::funcion(void)
  23. {
  24.         cls2.funcion(cls1.tabla);
  25. }
  26.  
  27.  

Obviamente este es un codigo reducido, mis clases son mas extensas. el error que me tira es el siguiente, en el llamada a la funcion de cls2:

Código: Text
  1. no matching function for call to 'clase2::funcion(int[10][10])'
  2. note: candidates are: int clase2::funcion(int**)
  3.  
  4.  

Donde esta el error? :unsure:

10
C/C++ / Re: Buenas Y Consulta
« en: Miércoles 4 de Octubre de 2006, 04:24 »
Muchas gracias!! Estoy medio olvidado con el C ^_^

11
C/C++ / Re: Buenas Y Consulta
« en: Martes 3 de Octubre de 2006, 19:52 »
Si, perdon, es que no copie codigo y pegue, lo escribi en el post medio apurado. Igual a lo que voy no es a que no me anda ese codigo sino a que quisiera saber si no hay una manera mejor que esa para copiar arrays.

12
C/C++ / Buenas Y Consulta
« en: Martes 3 de Octubre de 2006, 19:15 »
Antes que nada, buenas, soy nuevo en el foro hace un tiempo que vengo leyendo y está muy bueno.

Bueno mi problema es que quiero copiar todo el contenido de un array a otro, sin tener que usar un bucle for como venia haciendolo:

Código: Text
  1.  
  2. int i, n;
  3.  
  4. for(i=0;i<10;i++)
  5. {
  6.      for(i=0;i<10;i++)
  7.      {
  8.            array1[i][n] = array2[i][n];
  9.       }
  10. }
  11.  
  12.  

una vez que copio el contenido de array2 a array1 tengo q modificar array2, asi que convertir array1 en un puntero a array2 no seria la solucion.

Páginas: [1]