Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Y volvemos con el pong, enga.

Iniciado por Harko, 05 de Octubre de 2006, 08:26:48 PM

« anterior - próximo »

Harko

Bueno, lo puse en el post en el que anunciaba el blog pero no ha colado asi que lo repetire donde deberia de estar :P

He estado intentando ponerle una cuenta atras para cuando comienza la partida tipo 3-2-1 de las de toda la vida y me estoy liando un poco con los contadores :?

Para empezar, tengo este codigo:
void CuentaAtras(){
 Uint32 seg=0, seg_act=0;
 int n=3;

 seg = (Uint32)ITimeSystem->GetSeconds();
 cuenta[n]->SetPosition(320,240);
 cuenta[n]->AutoRestore(0);
 while(n>0){
   cuenta[n]->Draw();
   seg_act = (Uint32)ITimeSystem->GetSeconds();
   if(seg_act == seg+1){
     n--;
   }
 }
}

Que no funciona, por supuesto. Se me queda bloqueado el programa y me hace un monton de cosas raras, a veces si me equivoco con los numeros de cuenta hasta me cambia de sitio el guion separador de puntos :lol:

Bueno, la verdad es que le he estado dando vueltas y no consigo dar con la manera de que funcione bien, y ya de paso que lo pueda poner aparte en una funcion. Por ahora estaba probando colocando el primer GetSecond fuera de la funcion y sobretodo eliminando el bucle While, pero no estoy seguro de si voy por buen camino.

Alguna idea?

Harko.
PD: Ya modifique la cabecera del blog asi dejais de quejaros de los colores. De echo he cambiado de tema asi que aun tengo que marearlo un rato para que quede como el de antes, y creo que ya se como hacerlo :twisted:
-=Harko´s Blog=-
Fui el primer civil en probar el "Lord of Creatures" y ademas usaban mis cascos. :D

-=Portfolio=-

Alguno de mis juegos:
-=Feed The Frog=-

Neroncity

vincent

no se cómo funciona esta funcion:

seg_act = (Uint32)ITimeSystem->GetSeconds();

Pero si seg vale 59 i seg_act vale 0, esto no te dará problemas? Quiero decir, que no entrará nunca en el if.

Quizá seria mejor hacer:
if ( seg_act == (seg + 1)%60 )

Saludos.
Desarrollo en .Net y metodologías http://devnettips.blogspot.com

Harko

No es exactamente correcto segun creo, la funcion GetSeconds te da los segundos que han pasado desde que se ejecuto el programa (bueno, para ser exactos, desde que se ejecuto el comando Init de turno), no te los pone directamente en formato hora.

Aunque de todas formas me estaba planteandome utilizar la funcion GetTime que te pasa el tiempo actual en ticks (a todo esto que es un tick??), lo que pasa es que no creo que sea eso.

Harko.
-=Harko´s Blog=-
Fui el primer civil en probar el "Lord of Creatures" y ademas usaban mis cascos. :D

-=Portfolio=-

Alguno de mis juegos:
-=Feed The Frog=-

Neroncity

Vicente

[OT]Un tick son 100 nanosegundos creo.[/OT]

Un saludo!

Vicente


TheAzazel

Cita de: "Vicente"[OT]Un tick son 100 nanosegundos creo.[/OT]

Un saludo!

Vicente

jeje, son unos pocos nanosegundos mas :), vamos, 1millon de ns usease 1 milisegundo. Asi es al menos en SDL, quizas el QueryPerformance este del windows de alta precision llegue a retornar microsegundos porque los nanos creo que queda lejillos aun, que todo llegara!  :P

TheAzazel

Harko, donde llamas a CuentaAtras()? antes de meterte en el bucle donde tendras el while(CRM32Pro.Update()) no?
Estas usando algun ITimeSystem->Rate()? cuales?
Estas usando CRM32Pro.SetRenderCallback()?

Ahora recuerdo que iba a contestarte al thread anterior pero algo paso que no puede postear y luego ya, se me fue la pinza jeje

Respondeme a eso de arriba y te lo miro rapido que eso es facil :P

Pogacha

O sea ese codigo es como poner:

while(1);

Harko

Cita de: "Pogacha"O sea ese codigo es como poner:

while(1);
Hombre no, se supone que deberia de mostrar un tres, un segundo despues mostrar el dos, luego el uno y desaparecer cuando comienza la partida. Tal vez lo que falte serie  volver a guardar el tiempo en seg dentro del if del bucle, no se.
CitarHarko, donde llamas a CuentaAtras()? antes de meterte en el bucle donde tendras el while(CRM32Pro.Update()) no?
Estas usando algun ITimeSystem->Rate()? cuales?
Estas usando CRM32Pro.SetRenderCallback()?

Ahora recuerdo que iba a contestarte al thread anterior pero algo paso que no puede postear y luego ya, se me fue la pinza jeje

Respondeme a eso de arriba y te lo miro rapido que eso es facil :P
Ates que nada tengo que alegar en mi defensa que es el primer programa que hago utilizando esta libreria, y nisiquiera hay un minitutorial de las funciones basicas para un programa (tiron de orejas jeje).

Veamos. Pensaba colocar un CuentaAtras antes del bucle del juego para que se ejecutara al principio de la primera partida y otro despues de que pulsaran Intro al acabar una partida y comenzar otra. Este ultimo si que estaria en el bucle principal, de echo estaria dentro del .Update(&event) en el switch para comprobar pulsaciones de tecla. Es el unico update que tengo puesto.

En cuanto al ITimeSystem tengo el Init y despuees el SetRate(0,20), venia en el codigo básico y lo deje. Y en cuanto al SetRenderCallback ese pues la verdad es que no lo tengo, no termino de enterder para que vale (ahora es cuando saca el latigo :?)

Harko.
-=Harko´s Blog=-
Fui el primer civil en probar el "Lord of Creatures" y ademas usaban mis cascos. :D

-=Portfolio=-

Alguno de mis juegos:
-=Feed The Frog=-

Neroncity

TheAzazel

En realidad, Pogacha tiene razon...el bucle es infinito :)
void CuentaAtras(){
 Uint32 seg=0, seg_act=0;
 int n=3;

 seg = (Uint32)ITimeSystem->GetSeconds();
 cuenta[n]->SetPosition(320,240);
 cuenta[n]->AutoRestore(0);
 while(n>0){
   cuenta[n]->Draw();
   seg_act = (Uint32)ITimeSystem->GetSeconds();
   if(seg_act >= seg+1)  // Si solo usas el =, como tengas mala suerte no  se cumpliria ni una sola vez
   {
    seg = seg_act; // Necesario!
     n--;
   }
  while(CRM32Pro.Update()); // Aqui refrescara todos los sistemas y volcara a video
 }
}


Prueba a ver eso porque con eso ya funcionara :)

Y bueno, tutorial basico... estan los ejemplos que son super sencillos! y la doc que poco a poco voy mejorando, por ahora lo unico que creo que necesita una mejorar urgente es lo que pregunto Sipox de los setrates, el setrendercallback y cia, pero estoy en ello haciendo esquemitas graficos y demas... sipox aguanta!! :)

Harko, a ver si te tira con eso.

Saludos


Harko

Ups, se me olvido :P

Si lo puse y va perfectamente (gaciass!!), despues de eso acabe el juego en un par de dias. Lo comente en la presentacion del grupo de desarrollo pero al final no pude anunciarlo debidamente (aunque salio en el planet :D).

Si lo quieres ver esta en mi blog junto con el codigo fuente. Una cosa, lo hice con el Dev-C++, lo digo por si te da algun problema para probar el codigo.

Muchas gracias por todo, ya te atosigare otro dia con mas dudas ;)

Harko.
-=Harko´s Blog=-
Fui el primer civil en probar el "Lord of Creatures" y ademas usaban mis cascos. :D

-=Portfolio=-

Alguno de mis juegos:
-=Feed The Frog=-

Neroncity

TheAzazel

jejeje, Ok, voy a descargar, mirar y ver, ya te contare :P

Por cierto... hay rumores de que te ofrecerias a hacer un tutorial basico :P :P :P

Saludos

Harko

Cita de: "TheAzazel"Por cierto... hay rumores de que te ofrecerias a hacer un tutorial basico :P :P :P

Saludos

XD Me estaba preguntando cuanto tiempo tardarias en decir algo asi :lol:

Quien sabe, alomejor hasta lo hago. Seria el primer tuto que escribo :D

Harko.
-=Harko´s Blog=-
Fui el primer civil en probar el "Lord of Creatures" y ademas usaban mis cascos. :D

-=Portfolio=-

Alguno de mis juegos:
-=Feed The Frog=-

Neroncity

TheAzazel

Era cuestion de tiempo :)

pues nada, te animo a hacerte famoso..a mi ya me señalan cuando voy por la calle jejeje.

Ahora en serio... si te pones a ello, sobra decir que tendras toda mi ayuda disponible :)

Animo animo!!






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.