Salut à tous (ou resalut!)
Je réalise un projet SDL et je gère différents événements de touches...
J'avais pour idée de gérer une de mes fonctions avec un clic gauche sur une case du tableau 2D...
Hors les conditions compliquées de cette fonction, j'ai l'impression que je n'arrive pas à récupérer les coordonnées de x et y via event.button.x et event.button.y (dès que je selectionne une case censée répondre aux conditions, segfault)...
J'hésitais entre passer les coordonnées en paramètre ou passer l'event, mais il me semble que ça ne change rien... Quelqu'un a une idée de la provenance de l'erreur?
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 int event(info_pecheur *pecheur, int continu){ if (pecheur==NULL) exit(EXIT_FAILURE); int x=pecheur->x; int y=pecheur->y; int tmp; SDL_Event event; SDL_WaitEvent(&event); switch(event.type){ (...) case SDL_MOUSEBUTTONUP: if (event.button.button == SDL_BUTTON_LEFT) { int coordx=event.button.x; int coordy=event.button.y; continu=peche_alternative(pecheur, coordx, coordy); } return continu; break; (...) int peche_alternative(info_pecheur *pecheur, int coordx, int coordy){ if (pecheur==NULL) return 1; switch(pecheur->orientation){ int diffx = abs(coordx-pecheur->x); int diffy = abs(coordy-pecheur->y); case 0: if(coordy<pecheur->y && diffx<=0.5*diffy && (diffx+diffy)<=RANGECANNE && pecheurtab[coordx][coordy].food==1) { //On se place dans l'angle (3pi/8,5pi/8) (schéma d'un cercle trigo!) pecheur->sac+=tab[coordx][coordy].taille; tab[coordx][coordy]=espece(0); } break; (...)
Partager