Problème de déplacement d'une surface (SDL)

Résolu/Fermé
DangerousMic Messages postés 12 Date d'inscription mercredi 28 novembre 2012 Statut Membre Dernière intervention 23 mars 2016 - 12 juin 2013 à 22:12
DangerousMic Messages postés 12 Date d'inscription mercredi 28 novembre 2012 Statut Membre Dernière intervention 23 mars 2016 - 14 juin 2013 à 14:52
Bonjour, j'ai un problème dans mon code dont je n'arrive pas à comprendre le fonctionnement :/

J'ai créé 2 fonctions : une déplace ma surface vers le bas et une autre qui déplace cette même surface vers le haut.

Cette fonction fonctionne correctement, elle déplace ma surface pixel par pixel.

void fermeturePorte(int tempsActuelle, int tempsPrecedent, int carte[][NB_BLOCS_HAUTEUR], SDL_Rect *positionPorte1, SDL_Rect *positionPorte2)
{
    if (tempsActuelle - tempsPrecedent > 5000 && positionPorte1->y != 360)
        {
            positionPorte1->y++;
            positionPorte2->y++;
        }
}


Et cette fonction qui ne fonctionne pas :
void ouverturePorte(int tempsActuelle, int tempsPrecedent, int carte[][NB_BLOCS_HAUTEUR], SDL_Rect *positionPorte1, SDL_Rect *positionPorte2)
{
        if (tempsActuelle - tempsPrecedent > 8000 && positionPorte1->y != 330)
        {
            positionPorte1->y--;
            positionPorte2->y--;
        }
}


Je souhaite au bout de 5 secondes, déplacer ma surface vers le bas et au bout de 8 secondes la replacer en haut.
Mais quand la première fonction est terminé la deuxième ne s'exécute pas comme prévu...
Elle se déplace que d'un pixel et si je modifie ma fonction comme ceci :

positionPorte1->y-=2;
positionPorte2->y-=2;


Mon bloc se déplace par blocs et fini en haut de ma fenêtre -_-

Mon programme fonctionne avec un tableau à 2 dimension.

Je vous remercie pour votre soutient.

3 réponses

DangerousMic Messages postés 12 Date d'inscription mercredi 28 novembre 2012 Statut Membre Dernière intervention 23 mars 2016
13 juin 2013 à 15:19
Personne :(
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié par [Dal] le 14/06/2013 à 10:25
Salut DangerousMic,

Si tu ne stoppes pas la fonction qui fait y++ après les 5 secondes, la fonction qui fait y-- à partir de 8 secondes va fonctionner simultanément à la précédente, et ta porte ne vas pas "bouger".

Ou alors, il y a des choses qui m'échappent, ce qui est possible vu l'information très elliptique que tu donnes :-)


Dal
0
DangerousMic Messages postés 12 Date d'inscription mercredi 28 novembre 2012 Statut Membre Dernière intervention 23 mars 2016
14 juin 2013 à 14:52
En effet je vois ce que tu veux dire... je pensais justement régler ce problème avec justement mon
&& positionPorte1->y != 360
mais il ne m'ai pas passé par la tête que quand je remonterais la porte la condition ne serait plus bonne -_-
Je vais régler ça et si c'est bien le problème je mes le sujet en résolu :)

Merci Dal.
0