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

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.

Je ne comprends pas la différence, mais je te fais confiance.

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.
