| | Controle du pointeur avec la souris | |
| | Auteur | Message |
---|
Sn00bino Invité
| Sujet: Controle du pointeur avec la souris Mer 4 Jan à 13:08 | |
| BOnjour, Je realise un petit jeu 2d, et avec la fonction update_event() j' ai mis une sorte de viseur qui se controle avec la souris comme ceci rectviseur.x=xsouris; rectviseur.y=ysouris; ... cela marche mais le pb c 'est que le viseur sarete a 10cm a droite et a 10 centimetre en haut.Et semble pouvoir continuer plus loin en haut et en bas.J' ai essayer plein de truc mais jsai pas comment faire pour pouvoir aller sur tout l' ecran avec mon viseur.
Merci d' avance, |
| | | le_duche
Nombre de messages : 60 Age : 39 Localisation : Bruxelles Date d'inscription : 07/12/2005
| Sujet: Re: Controle du pointeur avec la souris Ven 6 Jan à 6:20 | |
| C'est parceque la fonction Blit empêche d'écrire en dehors de l'écran... void Blit(SDL_Surface* source,int x1,int y1,int x2,int y2,SDL_Surface* dest,int x3,int y3) { SDL_Rect S=Rect(x1,y1,x2-x1+1,y2-y1+1); SDL_Rect D=Rect(x3,y3,0,0); SDL_Rect* pS=&S; if (x1<0) pS=NULL; SDL_BlitSurface(source,pS,dest,&D); } >>> à cause du if (x1<0) pS=NULL; Donc si tu enlève ca, je ne crois pas que ca bug. L'idéal serait alors que tu empèche la souris de sortir, comme ca le pointeur pourrait aller partout sans sortir ++ bonne prog ! | |
| | | sn00bino Invité
| Sujet: Re: Controle du pointeur avec la souris Ven 6 Jan à 9:02 | |
| Comment jdoi utiliser sa parceque j' ai essayer et sa ne marche pas. |
| | | le_duche
Nombre de messages : 60 Age : 39 Localisation : Bruxelles Date d'inscription : 07/12/2005
| Sujet: Re: Controle du pointeur avec la souris Sam 7 Jan à 12:06 | |
| Comme ca je ne peux pas te dire, en plus je ne suis pas chez moi là (pas le net chez moi...). Envoie moi ta source, je jetterai un oeil si j'ai le temps. Et si j'y pense, je posterai 2 ou 3 truc sur le fonctionnement de la souris (purement perso, je ne garantis pas l'optimalité... ) | |
| | | le_duche
Nombre de messages : 60 Age : 39 Localisation : Bruxelles Date d'inscription : 07/12/2005
| Sujet: Re: Controle du pointeur avec la souris Mer 11 Jan à 1:11 | |
| (Je refais ça, c'était vraiment pas terrible) - Code:
-
/* Je déclare une structure */ struct type_mouse { int x; //Position x du curseur int y; //Position y du curseur int rel_x; //Position relative x du curseur int rel_y; //Position relative y du curseur bool bt[5]; //Boutons de la souris SDL_Surface* source; //Image de la souris SDL_Rect zone; //zone active de l'image int centerX; //Centre significatif de la souris int centerY; SDL_Surface* dest; //Image sur laquelle on colle la souris };
/*puis dans le code, je déclare*/ type_mouse Mouse; /*qui sera utilisé par les fonction*/ inline void UpdateEvents() { /* Fonction écrite par FVIRTMAN, adaptée par Duche */ SDL_Event event; while(SDL_PollEvent(&event)) { switch (event.type) { case SDL_KEYDOWN: Clavier.key[event.key.keysym.sym] = true;break; case SDL_KEYUP: Clavier.key[event.key.keysym.sym] = false;break; case SDL_MOUSEMOTION: Mouse.x = event.motion.x; Mouse.y = event.motion.y; Mouse.rel_x = event.motion.xrel; Mouse.rel_y = event.motion.yrel;break; case SDL_MOUSEBUTTONDOWN: Mouse.bt[event.button.button-1] = true;break; case SDL_MOUSEBUTTONUP: Mouse.bt[event.button.button-1] = false;break; } } }
inline void ParamMouse(SDL_Surface* source,int x,int y,int w,int h,SDL_Surface* dest,int centerX,int centerY) { /* Fonction écrite par Duche */ Mouse.source = source; //Copie les données dans les bonnes variables Mouse.zone.x = x; Mouse.zone.y = y; Mouse.zone.w = w; Mouse.zone.h = h; Mouse.dest = dest; Mouse.centerX = centerX; Mouse.centerY = centerY; }
inline bool MouseInRect(int x,int y,int w,int h) { /* Fonction écrite par Duche */ return (Mouse.x > x)&&(Mouse.x < x+w)&&(Mouse.y > y)&&(Mouse.y < y+h); }
inline void BlitMouse(type_mouse& souris,SDL_Surface* dest) { /* Fonction écrite par Duche */ Blit(souris.source,souris.zone.x,souris.zone.y,souris.zone.w,souris.zone.h,dest,Mouse.x-Mouse.centerX,Mouse.y-Mouse.centerY); }
/*Ensuite, il suffit de paramétrer la souris avec la fonction ParamMouse, et de la blitter sur l'écran avant chaque SDL_Flip(screen); */
Je mettrai à l'occasion ma fonction pour la gestion du clavier, mais il semblerait qu'il y ait plus facile en stock | |
| | | FVIRTMAN Admin
Nombre de messages : 78 Date d'inscription : 11/11/2005
| Sujet: Re: Controle du pointeur avec la souris Mer 11 Jan à 15:25 | |
| déja, travailles tu en plein écran ou en fenetré ? Car si tu es en fenetré, et que tu bouges la souris assez vite, et sors de la fenetre, la derniere position enregistrée ne sera pas le derniere pixel de la fenetre, ce qui expliqeras "l'arret" Essaie en plein écran pour voir A priori, je ne pense pas que ce soit du au x<0 car théoriquement, la position absolue de la souris n'est jamais négative ! (seule la position relative l'est) | |
| | | Contenu sponsorisé
| Sujet: Re: Controle du pointeur avec la souris | |
| |
| | | | Controle du pointeur avec la souris | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |