Créer un compte à rebours en C
Posté le 25/05/2013 17:45
Bonjour à tous,
Je vous sollicite pour le problème suivant. Depuis quelques jours je m’initie au langage C (notamment sur le Site Du Zéro) et je fais quelques petits add-in simples via le logiciel SDK.
Et aujourd'hui, je voudrais créer une sorte compte à rebours, mais je n'arrive pas à maîtriser les fonctions de gestion du temps...
Le principe de mon programme est le suivant, il doit "juste" afficher le temps qui reste (en jours, heures, minutes et secondes) avant un évènement.
De sorte que la date de l'évènement en question soit directement intégrée au programme dans le code source. Ce qui implique que le principe du programme serait de calculer (et afficher) le temps qui sépare la date actuelle du système et la date de l'évènement. Mais ça je ne sais pas comment faire...
J'ai essayer de chercher des exemples de code source sur internet. Le problème est que ceux que j'ai vu, décompte un temps fixe, et ne calcul pas la différence de temps qu'il y a entre la date actuelle (de la calculatrice) et celle de l'évènement.
donc ma question est principalement: Comment récupère t-on la date et l'heure de la calculatrice ?
Faut il utiliser GetSystemTime() ou une autre fonction ?
Je vous remercie d'avance.
Citer : Posté le 25/05/2013 18:15 | #
pour savoir le nombre de ticks (1/128eme de seconde) ecoulées depuis le debut de la journée selon le processeur, utilise cette fonction (rajoute la au debut de ton code, apres les #includes
#define SCB 0x422B0009
#define SCE 0x80010070
const unsigned int sc003b[] = {SCA, SCB, SCE, 0x3B};
#define RTC_GetTicks (*(sc_iv)sc003b)
int time_getTicks()
{
return RTC_GetTicks();
}
par contre, si ta calculatrice n'es pas réglé a l'heure, elle te donnera une valeur qui n'est pas l'heure réelle, mais pour faire un compte a rebours, ce n'est pas genant
et comme je suis gentil, voila un petit code pour tout afficher
void PrintV(int X,int Y , int variable)//affiche une variable
{
int i, length=0;
char str[12] = "0";
if(variable)
{
if(variable<0)
{
length++;
str[0] = '-';
variable = -variable;
}
for(i=variable ; i ; i/=10) length++;
str[length] = 0;
for( ; variable ; variable/=10) str[--length] = variable%10+'0';
}
PrintMini(X,Y,str);
}
//rajoute tout ca dans ton main
int time;
int temps_final = time_getTicks+[le temps avant l'evenement en 1/128eme de seconde];
while(time != temps_restant)//on fait ca jusqu'a la fin du compte a rebours
{
time = time_getTicks();
PrintV(1,0,(temps_final -time)/(128*60*60));//heures
PrintV(1,10,(temps_final -time)/((128*60))%60);//minutes
PrintV(1,20,(temps_final -time)/((128))%60);//secondes
Bdisp_PutDisp_DD();
Bdisp_AllClr_VRAM();
}
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 25/05/2013 18:26 | #
Merci beaucoup pour la rapidité de ta réponse et les codes. Je pense que j'ai compris comment poursuivre mon programme.
Merci.
Citer : Posté le 25/05/2013 18:31 | #
de rien
par contre, fait attention, si tu fait un copier-coller de mon code, le site transforme le ! = en !=, qui n'est pas reconnu par le SDK
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !