1

Bonjour, je voudrais savoir qu'elle est l'utilité de mettre dans un programme ça:
n_tick = GpTickCountGet();
while ( ( GpTickCountGet() - n_tick ) < 100);
Je sais que c'est pour faire des temps de pause, mais je ne vois pas la différence lorsque je ne le met pas.
Parfois j'ai la même chose si je remplace < par > ou ==. normalement dans un cas je devrai rester bloqué dans la boucle while or ce n'est pas le cas.

2

-

3

Ben, moi je m'en sert partout, même pour les menus.
En fait la boucle que tu as présentée te pause pendant 1/10 de seconde. Mai l'intérêt n'est pas là.
Imagine que tu puisse avoir un nombre variable d'objet à dessiner sur ton écran, comme des fourmis (voir Animings wink). La GP n'aura pas le même travail à faire s'il y a 1 objet que s'il y en a 50.
Pour être sûr que ta boucle principale durera toujours le même nombre de millisecondes, il te faudra utiliser GpTickCountGet().

Ex:

while (TRUE)
{
nTick = GpTickCountGet();

//
// code pour calculer et dessiner tout se qu'il faut
//

while ((GpTickCountGet() - nTick) < 100);
}

Là t'est sûr, que ta boucle tardera toujours et invariablement 100 millisecondes à se compléter.
Mais, attention, il faut que tu soir sûr que tout ce que tu veux faire puisse être fait en 100 millisecondes, sinon va falloir augmenter le délai.

Autre chose à prendre en compte, c’est pas exactement des millisecondes, mais presque, et surtout que c’est pas la même valeur pour toutes les fréquences d’horloge, mais pour la fréquence par défaut, c’est presque ça.

4

Grace au explication, j'ai remarqué que j'ai un probléme avec GpTickCountGet():
quand je met ">", ça évite la boucle, ce qui est normal par contre quand je met "<", ce qu'il faut mettre, je ne sort pas de la boucle. J'ai remarqué qu'à "nTick = GpTickCountGet()", nTick=1, mais au GpTickCountGet() de la boucle while, à chaque passage, la fonction renvoie aussi 1, d'où la boucle infini.

5

T'as peut-être les libs de ton kit de développement boguées.
Tu devrais peut-être les réinstaller. Qu'est ce que tu utilises?
Peut être aussi que c'est ton code.
Poste la partie du code qui foire, on va voire.

6

ca devrait etre plutot ca :

while(nTick + 100 < GpTickCountGet());
avatar
pourquoi la mort ? parce qu'elle nous est si douce, au contraire de la vie :)

7

FagEmul, c'est pas plutôt ça que tu voulais écrire?

while (nTick + 100 > GpTickCountGet());

Sinon, si ton traitement ne dépasse pas les 100 millisecondes, ta boucle ne va pas servir à grand chose parce que ce sera toujours vrai. Et dans le cas contraire, t'es foutu parce que la boucle va boucler indéfiniment!!

8

J'ai trouvé la solution sur un autre forum, mais je ne l'ai pas encore testé. Le probléme vient de la lib gpstdlib.a " version" release pour ads qui serait bugé. Il faut utiliser la " version" debug (du coups elle porte bien son nom). Et normalement c'est bon.

9

lol et tu as pas finit d avoir des suprise avec les lib ads