MiniJuego 2

Ver el tema anterior Ver el tema siguiente Ir abajo

MiniJuego 2

Mensaje por kaltorak el Sáb Jun 08, 2013 5:40 am

Hola a todos

Aquí tenéis la primera versión del MiniJuego 2.



Versión 0.1

Binario: [Tienes que estar registrado y conectado para ver este vínculo]
Código Fuente: [Tienes que estar registrado y conectado para ver este vínculo]

Versión 0.2

Mejoras:

-Mejora en el sistema de carga de imágenes para reducir el tiempo de carga.
-Eliminación de múltiples bucles para mejorar la velocidad y hacer más compacto el código.
-Incluido un sistema de niveles vasado en el tiempo.

Binario: [Tienes que estar registrado y conectado para ver este vínculo]
Código fuente: [Tienes que estar registrado y conectado para ver este vínculo]

Versión 0.3

Mejoras:

-Reducción del consumo de memoria de un 40% en los gráficos del MiniJuego.

Binario: [Tienes que estar registrado y conectado para ver este vínculo]
Código fuente: [Tienes que estar registrado y conectado para ver este vínculo]

Un saludo
Kaltorak.


Última edición por kaltorak el Lun Jun 10, 2013 12:04 am, editado 2 veces

_________________

avatar
kaltorak
Admin

Mensajes : 178
Fecha de inscripción : 30/05/2013

Ver perfil de usuario

Volver arriba Ir abajo

Re: MiniJuego 2

Mensaje por amchacon el Sáb Jun 08, 2013 9:11 am

Código:
 for(int I = 0;I < NumeroMaximoF;I++)
    {
      Flecha[I].Aspecto = SDL_LoadBMP("Flecha.bmp");
      if ( !Flecha[I].Aspecto )
      {
        printf("Imposible Cagar la imagen Flecha.bmp \n");
        return 1;
      }
      SDL_SetColorKey(Flecha[I].Aspecto,SDL_SRCCOLORKEY|SDL_RLEACCEL,SDL_MapRGBA(Flecha[I].Aspecto->format,255,0,255,0));
      //Posicionamos la Flecha en pantalla
      Flecha[I].PObjeto.w = Flecha[I].Aspecto->w;
      Flecha[I].PObjeto.h = Flecha[I].Aspecto->h;
    }

¿Te das cuenta que estás cargando una imagen por cada flecha? Una cosa esque nos demos una libertad en la memoria, pero eso me parece excesivo *_*

Código:
 if(Numero > 0)
          {
          for(int I = 0; I < Numero;I++)
            {
            //Comprobamos su direccion y las movemos en caso de sobrepasar su punto de vida la borramos.
            if (Flecha[I].Direccion == 1)
              {
                Flecha[I].PObjeto.x += 3;
                if(Flecha[I].PObjeto.x > (Tablero.PObjeto.x + Tablero.Aspecto->w + VidaDesTablero)){Numero--;}
              }
            else
              {
                Flecha[I].PObjeto.x -= 3;
                if(Flecha[I].PObjeto.x < (Tablero.PObjeto.x - VidaDesTablero)){Numero--;}
              }
            }
          }
          /*si no quedan Flechas en pantalla es momento de genrar Flechas nuevas por eso ponemos
            el valor de la variable InicioF a 1.*/
          if(Numero == 0)
          {
            InicioF = 1;
          }
          //volcamos las Flechas en la Surface MiniJuego2Pantalla
          for(int I = 0; I < Numero;I++)
          {
            SDL_BlitSurface(Flecha[I].Aspecto,NULL,MiniJuego2Pantalla,&Flecha[I].PObjeto);
          }

Tienes que intentar poner los tres bucles for en uno. Ocupará mucho menos código y tendrá mayor rendimiento.

Código:
 /*Aleatoriamente seleccionamos el Numero de flechas que saldran siempre dejando un
            hueco para que el heroe pueda escapar.*/
          Numero = rand()%4+1;

No me parece el método más adecuado porque pueden salir muchas o pocas de golpe y no hay escalada de dificultad.

Yo voto por un contador de tiempo, y que este vaya disminuyendo con el juego.
avatar
amchacon
Admin

Mensajes : 171
Fecha de inscripción : 30/05/2013

Ver perfil de usuario

Volver arriba Ir abajo

Re: MiniJuego 2

Mensaje por kaltorak el Sáb Jun 08, 2013 4:23 pm

Nueva versión del MiniJuego 2

Versión 0.2

Mejoras:

-Mejora en el sistema de carga de imágenes para reducir el tiempo de carga.
-Eliminación de múltiples bucles para mejorar la velocidad y hacer más compacto el código.
-Incluido un sistema de niveles vasado en el tiempo.

Binario: [Tienes que estar registrado y conectado para ver este vínculo]
Código fuente: [Tienes que estar registrado y conectado para ver este vínculo]

Un saludo
Kaltorak.

_________________

avatar
kaltorak
Admin

Mensajes : 178
Fecha de inscripción : 30/05/2013

Ver perfil de usuario

Volver arriba Ir abajo

Re: MiniJuego 2

Mensaje por dato000 el Sáb Jun 08, 2013 5:37 pm

No se puede correr en linux, ya de por si rotozoom viene con gfx y fue un dilema compilarlo, además de compilar los paquetes respectivos, habia que instalar las dependencias, vale bueno pensaba que se solucionaba con instalar desde aqui

Código:
http://www.ferzkopp.net/Software/SDL_rotozoom/

y hacer esto luego:

Código:
sudo aptitude install  libsdl-gfx1.2-dev libsdl1.2-dev

Pero ahora me sale esto:

Código:

ld||cannot find -lmingw32|
ld||cannot find -lSDL.dll|
ld||cannot find -luser32|
ld||cannot find -lgdi32|
ld||cannot find -lwinmm|
ld||cannot find -ldxguid|
||=== Build finished: 6 errors, 0 warnings ===|

Ahora, estos errores me indican lo mucho que es necesario windows, pues hace un uso muy abusivo de las librerias dll y de mingw32, no es posible portabilizarlo, viejo, estas usan dev-c++?? o borland, jaja se que traes un proyecto del minijuego2 en codeblocks (de hecho, note que tienes un proyecto minijuego2 dentro de otro proyecto minijuego2 en el fuente), pero simplemente no me fue posible compilarlo para linux.

Creo que para windows no es gran cosa, pero para una plataforma libre que es justamente para lo que se hizo SDL como linux o BSD simplemente no corrio, tenlo en cuenta por favor, Te recomendaria que una vez generes tus fuentes probaras tambien en una maquina virtual con linux a ver que tal corren tus juegos.

Una vez pueda correr todo el ensamblado de los 4 juegos en linux comenzare a documentar y postear por aqui unos howtos para iniciados en como debe usarse SDL y correr los juegos para linux, pero no puedo hacerlo solo, todos nos colaboramos, te pido que lo tengas en cuenta kaltorak

Quedo pendiente si publicas otra version más universal.

_________________


Así es, pura evolución
Para pasar el tiempo: [Tienes que estar registrado y conectado para ver este vínculo]
avatar
dato000
Admin

Mensajes : 161
Fecha de inscripción : 30/05/2013

Ver perfil de usuario

Volver arriba Ir abajo

Re: MiniJuego 2

Mensaje por amchacon el Sáb Jun 08, 2013 5:41 pm

Código:
 Flecha[I].Aspecto = SDL_CreateRGBSurface(SDL_SWSURFACE,Carga->w, Carga->h, PROFUNDIDADECOLOR,255,0,255,0);

No hay mucha diferencia entre cargar un bitmap de un BMP que generarlo tu mismo.

No es más fácil:

Código:
SDL_Surface* Aspecto_Flecha = SDL_LoadBMP...
SDL_Surface* Aspecto_Flecha_Reves = //... (no hay una funcion que te la dibuje ya volteada? en Allegro sí había)

Y cuando quieras hacer una flecha tiras de ahí Very Happy

Ahora, estos errores me indican lo mucho que es necesario windows, pues hace un uso muy abusivo de las librerias dll y de mingw32, no es posible portabilizarlo, viejo, estas usan dev-c++?? o borland, jaja se que traes un proyecto del minijuego2 en codeblocks (de hecho, note que tienes un proyecto minijuego2 dentro de otro proyecto minijuego2 en el fuente), pero simplemente no me fue posible compilarlo para linux.

No es necesario Windows para compilar, lo que pasa esque tienes que adaptar el proyecto a Linux.

Vete a project -> build options -> linker y elimina las librerías en las que te da error. También tienes que hacer una limpieza de la carpeta obj (o bien, darle a "Reconstruir todo").
avatar
amchacon
Admin

Mensajes : 171
Fecha de inscripción : 30/05/2013

Ver perfil de usuario

Volver arriba Ir abajo

Re: MiniJuego 2

Mensaje por dato000 el Sáb Jun 08, 2013 6:16 pm

Ese es exactamente el problema, el linker del codeblocks lo deje de esta forma:



Parece que todo marcha bien, pero cuando reconstruyo o compilo o trato de hacer algo, simplemente me solicita librerias del compilador de gcc para windows (dicese minGW) lo que provoca pues, el error:

Código:

ld||cannot find -lmingw32|
ld||cannot find -lSDL.dll|
ld||cannot find -luser32|
ld||cannot find -lgdi32|
ld||cannot find -lwinmm|
ld||cannot find -ldxguid|
||=== Build finished: 6 errors, 0 warnings ===|

_________________


Así es, pura evolución
Para pasar el tiempo: [Tienes que estar registrado y conectado para ver este vínculo]
avatar
dato000
Admin

Mensajes : 161
Fecha de inscripción : 30/05/2013

Ver perfil de usuario

Volver arriba Ir abajo

Re: MiniJuego 2

Mensaje por amchacon el Sáb Jun 08, 2013 6:20 pm

Al construir se aplican dos opciones, las del compilador y las del proyecto

Repito, vete a project -> build options -> linker settings. En compiler settings no deberías linkar librerías específicas, te volverás un lío cuando cambies de proyecto.
avatar
amchacon
Admin

Mensajes : 171
Fecha de inscripción : 30/05/2013

Ver perfil de usuario

Volver arriba Ir abajo

Re: MiniJuego 2

Mensaje por dato000 el Sáb Jun 08, 2013 6:31 pm

No, de hecho linkear las librerias universales es muy recomendable, para allegro y para SDL funcionan bien, pero el problema radica en el rotozoom, no estoy rajando, simplemente que aun no doy con la forma.

_________________


Así es, pura evolución
Para pasar el tiempo: [Tienes que estar registrado y conectado para ver este vínculo]
avatar
dato000
Admin

Mensajes : 161
Fecha de inscripción : 30/05/2013

Ver perfil de usuario

Volver arriba Ir abajo

Re: MiniJuego 2

Mensaje por amchacon el Sáb Jun 08, 2013 6:34 pm

dato000 escribió:No, de hecho linkear las librerias universales es muy recomendable, para allegro y para SDL funcionan bien, pero el problema radica en el rotozoom, no estoy rajando, simplemente que aun no doy con la forma.
No lo és porque estas linkando las librerías a todos los proyectos.

Si no quieres estar linkando librerías, para eso están las plantillas.
avatar
amchacon
Admin

Mensajes : 171
Fecha de inscripción : 30/05/2013

Ver perfil de usuario

Volver arriba Ir abajo

Re: MiniJuego 2

Mensaje por kaltorak el Sáb Jun 08, 2013 7:17 pm

No tienen por qué ser un problema las librerías SDL_gfx yo ya las he usado con anterioridad en Ubuntu, cuando llegue a casa que es donde tengo virtualizado ubuntu miro como lo hice y lo explico.

Código:
Flecha[I].Aspecto = SDL_CreateRGBSurface(SDL_SWSURFACE,Carga->w, Carga->h, PROFUNDIDADECOLOR,255,0,255,0);

No hay mucha diferencia entre cargar un bitmap de un BMP que generarlo tu mismo.

Very Happy Very Happy Very Happy no he dicho que esta nueva versión reduzca el consumo de memoria sino que:

-Mejora el sistema de carga de imágenes para reducir el tiempo de carga.

Por qué no es lo mismo leer una vez del disco que 5 Very Happy Very Happy

Lo de la memoria lo soluciono esta noche.
Pero creo que somos demasiado prudentes por 10k de memoria, teniendo en cuenta la cantidad de memoria que tienen los ordenadores hoy en día.

_________________

avatar
kaltorak
Admin

Mensajes : 178
Fecha de inscripción : 30/05/2013

Ver perfil de usuario

Volver arriba Ir abajo

Re: MiniJuego 2

Mensaje por amchacon el Sáb Jun 08, 2013 7:30 pm

kaltorak escribió:Pero creo que somos demasiado prudentes por 10k de memoria, teniendo en cuenta la cantidad de memoria que tienen los ordenadores hoy en día.
Aún me acuerdo de un snake que me llegó a consumir 50 mb de memoria (aunque esto fue porque no liberaba nunca la memoria Very Happy ).

Se puede tener libertad, pero si hay algo que puedas evitar, es mejor hacerlo bien.
avatar
amchacon
Admin

Mensajes : 171
Fecha de inscripción : 30/05/2013

Ver perfil de usuario

Volver arriba Ir abajo

Re: MiniJuego 2

Mensaje por dato000 el Sáb Jun 08, 2013 9:44 pm

amchacon escribió:
dato000 escribió:No, de hecho linkear las librerias universales es muy recomendable, para allegro y para SDL funcionan bien, pero el problema radica en el rotozoom, no estoy rajando, simplemente que aun no doy con la forma.
No lo és porque estas linkando las librerías a todos los proyectos.

Si no quieres estar linkando librerías, para eso están las plantillas.

aunque se linkeen todas las librerias, no es que se haga un uso exhaustivo de memoria tan barbaro, pues si sus funciones no son llamadas, simplemente queda su referencia, y no se gasta nada, en cambio yo las dejo listas siempre cuando voy a compilar para evitar esos inconvenientes, aunque en estos momentos estoy en windows, no tardare en dar con el fallo, aunque estoy convencido que eso se debe al compilador de minGW32 que lo cierra para windows.

_________________


Así es, pura evolución
Para pasar el tiempo: [Tienes que estar registrado y conectado para ver este vínculo]
avatar
dato000
Admin

Mensajes : 161
Fecha de inscripción : 30/05/2013

Ver perfil de usuario

Volver arriba Ir abajo

Re: MiniJuego 2

Mensaje por amchacon el Dom Jun 09, 2013 8:56 am

dato000 escribió:
amchacon escribió:
dato000 escribió:No, de hecho linkear las librerias universales es muy recomendable, para allegro y para SDL funcionan bien, pero el problema radica en el rotozoom, no estoy rajando, simplemente que aun no doy con la forma.
No lo és porque estas linkando las librerías a todos los proyectos.

Si no quieres estar linkando librerías, para eso están las plantillas.

aunque se linkeen todas las librerias, no es que se haga un uso exhaustivo de memoria tan barbaro, pues si sus funciones no son llamadas, simplemente queda su referencia, y no se gasta nada, en cambio yo las dejo listas siempre cuando voy a compilar para evitar esos inconvenientes, aunque en estos momentos estoy en windows, no tardare en dar con el fallo, aunque estoy convencido que eso se debe al compilador de minGW32 que lo cierra para windows.
Repito que no es lo más adecuado, luego pasará que una librería sea incompatible con otra (porque tenga algo con el mismo nombre) y entonces tendrás errores extraños.

El encapsulamiento es una técnica de programación muy importante para evitar errores extraños. Codeblocks fue construido con esta premisa y por eso puedes configurar tres capas de construcción:

- Las genéricas, se encuentran en las opciones de compilación.
- Las del proyecto.
- Las target build (Release,Debug o las que crees).

Cada capa de configuración se va añadiendo a la otra.

Estoy terminando con el menú, cuando termine subiré el proyecto ensamblado ya configurado para Linux y Windows (vete instalado las SDL_image Very Happy ).
avatar
amchacon
Admin

Mensajes : 171
Fecha de inscripción : 30/05/2013

Ver perfil de usuario

Volver arriba Ir abajo

Re: MiniJuego 2

Mensaje por kaltorak el Lun Jun 10, 2013 12:03 am

Nuevo día nueva versión Very Happy

Versión 0.3

Mejoras:

-Reducción del consumo de memoria de un 40% en los gráficos del MiniJuego.

Binario: [Tienes que estar registrado y conectado para ver este vínculo]
Código fuente: [Tienes que estar registrado y conectado para ver este vínculo]

Un saludo
Kaltorak.

_________________

avatar
kaltorak
Admin

Mensajes : 178
Fecha de inscripción : 30/05/2013

Ver perfil de usuario

Volver arriba Ir abajo

Re: MiniJuego 2

Mensaje por amchacon el Lun Jun 10, 2013 9:21 pm

kaltorak escribió:Nuevo día nueva versión Very Happy

Versión 0.3

Mejoras:

-Reducción del consumo de memoria de un 40% en los gráficos del MiniJuego.

Binario: [Tienes que estar registrado y conectado para ver este vínculo]
Código fuente: [Tienes que estar registrado y conectado para ver este vínculo]

Un saludo
Kaltorak.
Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy
avatar
amchacon
Admin

Mensajes : 171
Fecha de inscripción : 30/05/2013

Ver perfil de usuario

Volver arriba Ir abajo

Re: MiniJuego 2

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.