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):
La partie au clavier fonctionne correctement; si je reste appuyé sur une touche le déplacement continue grâce au SDL_EnableKeyRepeat.
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); }
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 !
Partager