Page 1 sur 1

Problème MouseX,MouseY

Publié : mer. 21/févr./2018 16:36
par microdevweb
Bonjour à tous,

Je découvre un problème avec la détection de la position de souris (en mode jeu 2d)

Les coordonnées sorte de l'écran il semblerais qu'elles se bloquent, testé avec un exemple de la doc

Code : Tout sélectionner

; Initialisation du monde 2D
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  ; Ouverture de la fenêtre
  OpenWindow(0,0,0,800,600,"Souris - MouseX",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  OpenWindowedScreen(WindowID(0),0,0,800,600,1,0,0)

  ; Gestion de la fenêtre et de l'écran
  Repeat
   Repeat         ; Gestion de la fenêtre
     Event  = WindowEvent() 
   Until Event = 0
  
   ExamineMouse() ; Etat de la souris
   
   ; Affichage de l'état des boutons de la souris
   StartDrawing(ScreenOutput())
   DrawText(10,10, "Appuyer sur une touche du clavier pour quitter.", RGB(255,255,0))
   DrawText(300,180, "Bougez la souris.", RGB(255,0,0),RGB(255,255,0))
   
   DrawText(MouseX(), MouseY(), "["+Chr(164)+"]", RGB(255,255,0))
   
   DrawText(250,230, "X= " + Str(MouseX()) , RGB(255,255,255))
   DrawText(450,230, "Y="  + Str(MouseY()) , RGB(255,255,255))
   
   StopDrawing()
   
   FlipBuffers()
   ClearScreen(RGB(0,0,0)) 
  
   ExamineKeyboard()
  Until KeyboardPushed(#PB_Key_All)
  End


Re: Problème MuseX,MouseY

Publié : mer. 21/févr./2018 16:40
par falsam
Que la souris se bloque sur les bords de l'ecran c'est normal. Pour le reste ça n'a aucune incidence. A toi de tester la détections des bords droits et bas.

Utilises les fonctions ScreenWidth() et ScreenHeight() pour effectuer ce test.

Re: Problème MuseX,MouseY

Publié : mer. 21/févr./2018 16:45
par microdevweb
Merci falsam,

Mais je t'avoue ne pas comprendre ton explication ?

Je bouge à peine la souris que je passe directement à 599,799

Re: Problème MuseX,MouseY

Publié : mer. 21/févr./2018 16:56
par falsam
Modification de ton code

Code : Tout sélectionner

; Initialisation du monde 2D
InitSprite()
InitKeyboard()
InitMouse()

; Ouverture de la fenêtre
OpenWindow(0,0,0,800,600,"Souris - MouseX",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,800,600,1,0,0)

; Gestion de la fenêtre et de l'écran
Repeat
  Repeat         ; Gestion de la fenêtre
    Event  = WindowEvent() 
  Until Event = 0
  
  If ExamineMouse() ; Etat de la souris
    x = MouseX()
    y = MouseY()
    
    If x > ScreenWidth()
      x = ScreenWidth()
    EndIf
    If y > ScreenHeight()
      x = ScreenHeight()
    EndIf
  EndIf
  
  
  ; Affichage de l'état des boutons de la souris
  StartDrawing(ScreenOutput())
  DrawText(10,10, "Appuyer sur une touche du clavier pour quitter.", RGB(255,255,0))
  DrawText(300,180, "Bougez la souris.", RGB(255,0,0),RGB(255,255,0))
  
  DrawText(x, y, "["+Chr(164)+"]", RGB(255,255,0))
  
  DrawText(250,230, "X= " + Str(x) , RGB(255,255,255))
  DrawText(450,230, "Y="  + Str(y) , RGB(255,255,255))
  
  StopDrawing()
  
  FlipBuffers()
  ClearScreen(RGB(0,0,0)) 
  
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_All)
End
Le curseur que tu dessines disparaît et c'est normal.

Crée un sprite pour simuler ton curseur. Pour rappel, le point X et Y d'affichage d'un sprite représente le coin haut gauche du sprite.

[Re-Edit] En fait ce test de souris et ridicule et ne répond pas à la problématique.

Re: Problème MuseX,MouseY

Publié : mer. 21/févr./2018 17:08
par SPH
Chez moi, les 2 codes fonctionnent comme prevu. Pas d'extreme sensibilité de la souris...

Re: Problème MuseX,MouseY

Publié : mer. 21/févr./2018 17:10
par microdevweb
Je viens de testé et le problème persiste je bouge la souris d'un poil et je passe directement à X =799 et Y = 599.

Paramètre OpenGl peut - être

Nb= exemple avec JMonkeyEngine je n'ai pas ce genre de problème

Re: Problème MuseX,MouseY

Publié : mer. 21/févr./2018 19:53
par Fig
Souris hyper rapide de gamer non ? cf les fils en question pour gérer ce genre de souris...

Chez moi ça marche parfaitement en l'état en tout cas.

Re: Problème MuseX,MouseY

Publié : mer. 21/févr./2018 20:28
par falsam
Fig a écrit :Ces lignes ne sont pas nécessaire, la souris reste toujours les limites de l'écran.
Elles le sont car il affiche les coordonnés de la souris. Sinon effectivement ce n'est pas le cas.

Re: Problème MuseX,MouseY

Publié : mer. 21/févr./2018 20:31
par SPH
Fig a écrit :

Code : Tout sélectionner

    If x > ScreenWidth()
      x = ScreenWidth()
    EndIf
    If y > ScreenHeight()
      x = ScreenHeight()
    EndIf
En plus, ce serait plutot ca :

Code : Tout sélectionner

    If x >= ScreenWidth()
      x = ScreenWidth()-1
    EndIf
    If y >= ScreenHeight()
      y = ScreenHeight()-1
    EndIf
mais comme le dis fig, c'est pas la peine de le coder

Re: Problème MuseX,MouseY

Publié : mer. 21/févr./2018 20:35
par falsam
Tu chipotes SPH. En plus ce n'est pas juste ce que tu dis. Je n'ai pas voulu compliqué le code mais il aurait fallu aussi tenir compte de la largeur et hauteur du sprite pour éviter qu'il sorte du screen.

Re: Problème MuseX,MouseY

Publié : mer. 21/févr./2018 20:40
par SPH
je pensais a un pointeur de souris d'un pixel. un point koi 8)
Mais meme une fleche marcherait puisqu'une fleche a sa pointe au nord ouest

Re: Problème MuseX,MouseY

Publié : mer. 21/févr./2018 20:41
par Fig
falsam a écrit :Elles le sont car il affiche les coordonnés de la souris. Sinon effectivement ce n'est pas le cas.
Ha. Image
Je ne comprends pas la différence, mais je te fais confiance. 8)

Re: Problème MuseX,MouseY

Publié : mer. 21/févr./2018 20:47
par falsam
Fig tu as raison. Ce test ne sert à rien pour l'affichage des coordonnés de la souris. J'ai répondu à cotés !!

Re: Problème MuseX,MouseY

Publié : mer. 21/févr./2018 21:02
par Fig
Ouf, parce que je ne comprenais pas et comme ce n'est pas la première fois et qu'a chaque fois tu as raison... Je commençais à déprimer. :mrgreen: