Virtual FMAN forum
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Virtual FMAN forum

Virtual FMAN forum
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-64%
Le deal à ne pas rater :
-64% sur le Lot de 2 Enceintes bibliothèques Jamo S17F (gris ou bleu)
199 € 549 €
Voir le deal

 

 Controle du pointeur avec la souris

Aller en bas 
2 participants
AuteurMessage
Sn00bino
Invité




Controle du pointeur avec la souris Empty
MessageSujet: Controle du pointeur avec la souris   Controle du pointeur avec la souris EmptyMer 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,
Revenir en haut Aller en bas
le_duche

le_duche


Nombre de messages : 60
Age : 39
Localisation : Bruxelles
Date d'inscription : 07/12/2005

Controle du pointeur avec la souris Empty
MessageSujet: Re: Controle du pointeur avec la souris   Controle du pointeur avec la souris EmptyVen 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 cheers

++ bonne prog !
Revenir en haut Aller en bas
sn00bino
Invité




Controle du pointeur avec la souris Empty
MessageSujet: Re: Controle du pointeur avec la souris   Controle du pointeur avec la souris EmptyVen 6 Jan à 9:02

Comment jdoi utiliser sa parceque j' ai essayer et sa ne marche pas.
Revenir en haut Aller en bas
le_duche

le_duche


Nombre de messages : 60
Age : 39
Localisation : Bruxelles
Date d'inscription : 07/12/2005

Controle du pointeur avec la souris Empty
MessageSujet: Re: Controle du pointeur avec la souris   Controle du pointeur avec la souris EmptySam 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é... Wink )
Revenir en haut Aller en bas
le_duche

le_duche


Nombre de messages : 60
Age : 39
Localisation : Bruxelles
Date d'inscription : 07/12/2005

Controle du pointeur avec la souris Empty
MessageSujet: Re: Controle du pointeur avec la souris   Controle du pointeur avec la souris EmptyMer 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 Sad
Revenir en haut Aller en bas
FVIRTMAN
Admin
FVIRTMAN


Nombre de messages : 78
Date d'inscription : 11/11/2005

Controle du pointeur avec la souris Empty
MessageSujet: Re: Controle du pointeur avec la souris   Controle du pointeur avec la souris EmptyMer 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 Smile

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)
Revenir en haut Aller en bas
http://perso.numericable.fr/fvirtman
Contenu sponsorisé





Controle du pointeur avec la souris Empty
MessageSujet: Re: Controle du pointeur avec la souris   Controle du pointeur avec la souris Empty

Revenir en haut Aller en bas
 
Controle du pointeur avec la souris
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» un ptit souci de pointeur, sous visual c++
» Gestion souris/clavier en thread
» composition d'une map avec la SDL
» Afficher une variable avec printSDL

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Virtual FMAN forum :: Tutorial C++ :: SDL-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser