If qui passe pas ! Incompréhensible !
Bonjour.
J'ai un bout de code sur lequel je me prends la tête depuis 2 jours déjà!:cry:
J'utilise SDL, mais c'est juste anecdotique ici.
Code:
1 2 3 4 5 6 7 8 9 10 11
| int dt = timer->get_ticks();
if (input->MouseButtonPressed[0] || input->AnyKeyIsPressed){
ScreenTimer = 0;
}
if (ScreenTimer > 0){
ScreenTimer -= 1 * dt;
}
else{
SDL_Quit();//On ferme juste historie de mettre un bien voyant pour qu'on voit que ça marche
} |
ScreenTimer est défini à 11000 (c-a-d 11 secondes).
http://i.imgur.com/EMUe0YU.jpg
La première ligne représente dt (qui varie entre 9 et 12).
La seconde ligne représente ScreenTimer qui commence à 11000 puis qui descend encore et encore jusqu'à arrivé à 0... Puis part en négatif... Et rien ne se passe !
http://i.imgur.com/TYFLUpt.jpg
Le pire c'est que si j'enleve le dt et que je laisse juste ScreenTimer -= 1; quand ScreenTimer arrivera à 0 le if fonctionnera bel et bien. Après quelques test il faut que ScreenTimer arrive pile poil sur 0 pour faire trigger le if...
Quand je presse une touche ou que je fais click gauche (premier if) ScreenTimer est bien défini sur 0 et le programme lance bien le SDL_Quit();
Totalement incompréhensible...
La classe du timer est bateau...
Code:
1 2 3 4 5 6 7 8 9 10 11
| void Timer::start(){
startTicks = SDL_GetTicks();
}
void Timer::tick(){//appelé à chaque itération de la main loop
startTicks = SDL_GetTicks();
}
int Timer::get_ticks(){
return SDL_GetTicks() - startTicks;
} |
Je commence à m'arracher les cheveux... :?