Problème MouseX,MouseY

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Problème MouseX,MouseY

Message 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

Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Problème MuseX,MouseY

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Problème MuseX,MouseY

Message par microdevweb »

Merci falsam,

Mais je t'avoue ne pas comprendre ton explication ?

Je bouge à peine la souris que je passe directement à 599,799
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Problème MuseX,MouseY

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Problème MuseX,MouseY

Message par SPH »

Chez moi, les 2 codes fonctionnent comme prevu. Pas d'extreme sensibilité de la souris...

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Problème MuseX,MouseY

Message 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
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Problème MuseX,MouseY

Message 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.
Dernière modification par Fig le mer. 21/févr./2018 21:00, modifié 1 fois.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Problème MuseX,MouseY

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Problème MuseX,MouseY

Message 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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Problème MuseX,MouseY

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Problème MuseX,MouseY

Message 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
Dernière modification par SPH le mer. 21/févr./2018 20:43, modifié 1 fois.

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Problème MuseX,MouseY

Message 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)
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Problème MuseX,MouseY

Message 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 !!
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Problème MuseX,MouseY

Message 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:
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Répondre