Bonjour à tous,

Je découvre les bases du C depuis peu et je "joue" actuellement avec la bibliothèque SDL.

Pour l'instant j'arrive à déplacer une image de façon instantanée en cliquant avec la souris (en positionnant l'image à la position event.button en x et y).
J'arrive aussi à faire en sorte que l'image suive le mouvement de la souris (event.motion en x et y).

Je n'arrive par contre pas à combiner les deux
Je souhaiterai que l'image suive le mouvement de la souris uniquement lorsque un des boutons de cette dernière est enfoncé.

Je travaille à partir d'une structure de ce type (avec ce code l'image suis le mouvement de la souris):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
SDL_EnableKeyRepeat(10,10);
    while(continuer)
    {
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
                break;
            case SDL_KEYDOWN:
                switch(event.key.keysym.sym) /*on regarde quelle touche a appuyée */
                {
                    case SDLK_ESCAPE:
                        continuer = 0;
                        break;
                    case SDLK_UP:
                        positionImage.y = positionImage.y -1;
                        break;
                    case SDLK_DOWN:
                        positionImage.y = positionImage.y +1;
                        break;
                    case SDLK_LEFT:
                        positionImage.x = positionImage.x -1;
                        break;
                    case SDLK_RIGHT:
                        positionImage.x = positionImage.x +1;
                        break;
                    default:
                        break;
                }
                break;
            case SDL_MOUSEMOTION:               
                    positionImage.x = event.motion.x;
                    positionImage.y = event.motion.y;                
                    break;
        }
 
        /* on efface l'ecran*/
        SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,255,255,255));
 
        /*On fait les SDL_BlitSurface nécessaires*/
        SDL_BlitSurface(zozor,NULL,ecran,&positionImage);
 
        /*On met l'affichage à jour*/
        SDL_Flip(ecran);
    }
La partie au clavier fonctionne correctement; si je reste appuyé sur une touche le déplacement continue grâce au SDL_EnableKeyRepeat.

J'ai essayé, pour résoudre mon problème, d'utiliser une boucle do{ ... } while mais sans succès.

Avez-vous une piste quand à la structure à utiliser?

Merci beaucoup !