Bonjour.
J´ai commencer le dévelloppement d´un petit jeu de plate forme pour tester les capacités de la SDL et m´entrainer un peu à l´image de zelda 2, le dévelloppement s´est déroulé sans problème juqu´au moment où il fallu écrire un algorithme permettant au personnage de sauter j´ai décidé pour cela d´utiliser la getion du temps que la SDL propose mais apparement ça pause un problème : en effet , à l´appuie de la touche censer lance l´animation du saut, le personnage reste immobile pendant quelques secondes au lieu d´efectuer le saut. voici la partie du code :
if (test == 10) /* c´est à dire if touche saut enfoncé */
{
testSaut = 0;
tempsPrecedent = SDL_GetTicks();
while (testSaut < 40 )
/* Revient faire monter le skin jusqu´a 40 pixel ( voir ci dessous ) */
{
tempsActuel = SDL_GetTicks();
if(tempsActuel - tempsPrecedent > 15)
/* Si 15 milisecondes se sont écoulés */
{
/* toutes les positions ci dessous sont celle des différentes faces du personnage */
positionGaucheEpeeLever.y--;
positionDroitEpeeLever.y--;
positionDroitArreter.y--;
positionGaucheArreter.y--;
positionDroitMarche.y--;
positionGaucheMarche.y--;
testSaut++
SDL_BlitSurface(DroitMarche, NULL, ecran, &positionDroitMarche);
tempsPrecedent = tempsActuel;
}
else
{
SDL_BlitSurface(DroitMarche, NULL, ecran, &positionDroitMarche);
/* sinon coller la surface au meme endroit pour que le personnage ne disparaisse pas mystérieusement entre les incrementation de position */
}
}
testSaut = 0;
tempsPrecedent = SDL_GetTicks();
while (testSaut < 40)
{
tempsActuel = SDL_GetTicks();
if(tempsActuel - tempsPrecedent > 15)
{
positionGaucheEpeeLever.y++;
positionDroitEpeeLever.y++;
positionDroitArreter.y++;
positionGaucheArreter.y++;
positionDroitMarche.y++;
positionGaucheMarche.y++;
testSaut++;
SDL_BlitSurface(DroitMarche, NULL, ecran, &positionDroitMarche);
tempsPrecedent = tempsActuel;
}
else
{
SDL_BlitSurface(DroitMarche, NULL, ecran, &positionDroitMarche);
}
}
}
Ps : j´utilise la fonction au début du code SDL_EnableKeyRepeat(10, 10);
Voilà, je n´ai pas mis le code entie car évidemment il aurait été bien trop grand, mais je ne pense pas de toute façon que l´ereur puisse venir d´un autre endroit du code.
Et merci beaucoup à ceux qui auront eu le courage de lire un code aussi chaotique x).