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.
ScreenTimer est défini à 11000 (c-a-d 11 secondes).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 }
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...
Je commence à m'arracher les cheveux... :?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; }