Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Una Chorrada...

Iniciado por AlexHdez, 17 de Junio de 2004, 12:32:14 PM

« anterior - próximo »

AlexHdez

 Bueno, pues como la gente quería que se expusiera lo que se estaba haciendo yo pongo mi juego chorras pal "projecte de recerca" de bachiller, casi me da verguenza enseñarlo porque solo llevo de momento la nave que se mueve a distintas velocidades y poco mas, pero bueno, si alguien se aburre que lo baje. Esta programado en c++ y sdl, tb uso SDL_image, incluyo las fuentes del proyecto. Las teclas son las flechas para el movimiento, la "A" para aumentar velocidad y la "S" para reducirla. Si os pasais con la velocidad se os saldrá de pantalla...

http://www.mundosgm.com/juego/0.01.rar

Bueno espero criticas sobre el codigo, jeje

Un saludo

Astat

 Cosas muy basicas

speed = speed + 1;

speed++;

minavex = minavex + speed;

minavex += speed;

y todas esas variables globales, las haria locales y pasadas por parametro.

rrc2soft

 Detallito:
Si la nave esta cerca de la velocidad maxima, puedo hacer que se salte los bordes y que desaparezca de la pantalla  :)  .
Esta mu vacio, ya puedes ir haciendo las balas y el resto de naves  ;)

AlexHdez

 Gracias Astat, nunca me acuerdo de esas combinaciones, jeje

rrc2soft, ya tenia en cuenta que se saldría de los limites, pero no creo que use el aumento y disminucion de velocidad en el juego, era por probar.

Gracias por vuestros comentarios

shephiroth

 Buenas.

Para evitar que salga de la pantalla, puedes modificar la funcion de display y poner


rectangulo.x = 0;
rectangulo.y = 0;
rectangulo.w = 640;
rectangulo.h = 480;

if (minavex>rectangulo.w-minavewidth) minavex=rectangulo.w-minavewidth;
if (minavey>rectangulo.h-minaveheight) minavey=rectangulo.h-minaveheight;

if (minavex<0) minavex=0;
if (minavey<0) minavey=0;

SDL_FillRect(screen, &rectangulo, SDL_MapRGB(screen->format,0,0,0));

smiavion.SetX(minavex);
smiavion.SetY(minavey);
smiavion.Draw(screen);

SDL_Flip(screen);


Lo unico tendrías que incluir las variables minavewidth y minaveheight (cuyo valor tendría que ser establecido al momento de establecer el tipo de nave) o usar unos valores estáticos (no recomendado).

Un saludo ^^

Zaelsius

 Dale un poco de aceleración o inercia al movimiento de la nave  :rolleyes:  

vicho

 y fuerza de propulsion y de rose con el aire xD

Repoker

 Y gravedad !! (aunque sea leve) parece una tontería pero es la suma de estas chorraditas las dan vidilla a los juegos :)

AlexHdez

 Hola de nuevo!

Me estoy planteando lo de la aceleracion e inercia que se dijo anteriormente, lo que me lleva a recordar las clases de fisica(solo de primer año, seguro que me equivoco) y obtengo las siguientes formulas:

F movimiento = m * a
F rozamiento aire = mu * N = mu * m * g
F total = F movimiento - F rozamiento aire

Lo que me lleva a:

m * a' = m * a - mu * m * g

Las m se van, doy un valor determinado a la fuerza de movimiento y obtengo la aceleracion con la que se mueve la nave. Ahora llega el momento de obtener la velocidad:

V = Vº + a * t

Como calculo yo ese tiempo? No se cuantos frames va a haber por segundo por lo que no se cuanto tiempo tarda cada frame, :S

Alguien me ayuda? Thx

tamat

 hay funciones que te devuelven cuantos milisegundos llega el PC encendido, por lo que si guardas ese valor en un momento de la ejecución del programa y más adelante vuelves a pillarlo y lo restas al anterior tienes el tiempo que ha transcurrido entre los dos momentos. Normalmente se hace la petición en cada frame.

En SDL es SDL_GetTicks()
Por un stratos menos tenso

vicho

 haces lo siguiente tienes una dt(delta T) entonces con SDL_GetTicks haces

tiempo1=SDL_GetTicks();
...
cosas;
...
tiempo2=SDL_GetTicks();
dt=tiempo2-tiempo1;

eso te daria una diferencia de tiempo

recuerda que con eso tienes la velocidad de tu tiempo y que despues deves volver a obtenerla y asi xD

AlexHdez

 Muchas gracias a los dos, :)

Intentare estos dias hacer aceleracion incercia enemigos disparos y un largo etc, es decir, terminar el juego antes de septiembre, :S

Por cierto, he creado un weblog para ir comentando el progreso del juego de cara al profesor que tutela mi trabajo de investigacion, si le quereis echar una ojeada esta en: http://stratdes.webcindario.com/

Un saludo

PD: Disculpad el mal diseño del weblog, esta diseñado y programado en poco mas de media hora...






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.