[R] Si la souris est présente dans une telle zone, alors...

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
daxxxter
Niveau 2
Niveau 2
Messages : 26
Enregistré le : lun. 13 juin 2011 23:39
Status : Hors ligne

[R] Si la souris est présente dans une telle zone, alors...

#1

Message par daxxxter »

Bonjour/Bonsoir à tous!
Voilà j'essaye de faire une sorte de jeu avec différents "niveaux".
Bref il y a un mini jeu ou j'aimerais faire une chose de ce genre:
Si la souris est présente en une zone spécifique, alors cette dernière se déplacera ailleurs.
Et faire une boucle afin qu'elle ne puisse jamais accéder a cette zone.
J'espère avoir été assez clair =$!
Je n'ai pas trouvé la solution après plusieurs recherches.
Merci à vous et bonne soirée!
Modifié en dernier par daxxxter le sam. 08 oct. 2011 12:05, modifié 1 fois.
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Si la souris est présente dans une telle zone, alor

#2

Message par TT22 »

Essaye avec MouseGetPos et MouseMove :wink:
Cordialement,
TT22
daxxxter
Niveau 2
Niveau 2
Messages : 26
Enregistré le : lun. 13 juin 2011 23:39
Status : Hors ligne

Re: [..] Si la souris est présente dans une telle zone, alor

#3

Message par daxxxter »

Merci à toi!
Mais pourrais-tu m'éclairer sur Mousegetpos? Je connais Mousemove mais pas cette fonction. Merci d'avance!
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Si la souris est présente dans une telle zone, alor

#4

Message par TT22 »

Une petite pression sur la touche F1 t’aurais permis de trouver ça : http://www.autoitscript.fr/autoit3/docs ... GetPos.htm :P
Cordialement,
TT22
daxxxter
Niveau 2
Niveau 2
Messages : 26
Enregistré le : lun. 13 juin 2011 23:39
Status : Hors ligne

Re: [..] Si la souris est présente dans une telle zone, alor

#5

Message par daxxxter »

Je ne suis pas très performant en anglais =$
daxxxter
Niveau 2
Niveau 2
Messages : 26
Enregistré le : lun. 13 juin 2011 23:39
Status : Hors ligne

Re: [..] Si la souris est présente dans une telle zone, alor

#6

Message par daxxxter »

Désolé pour le double-post =$
Voilà j'ai trouvé comment fonctionnait mousgetpos(très utile d'ailleurs) mais je cherche la fonction avec la même utilité mais en zone. Définir un rectangle de recherche un peu comme pixelsearch en fait =$
x1,y1,x2,y2.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Si la souris est présente dans une telle zone, alor

#7

Message par mikell »

Si la zone en question est dans un controle tu peux avoir ses coordonnées avec ControlGetPos

Mais si tu veux juste savoir si le curseur de la souris est sur le controle, alors il vaut mieux utiliser GUIGetCursorInfo :

Code : Tout sélectionner

$a = GUIGetCursorInfo($gui)
If $a[4] = $controle Then ...   ; si le curseur est sur $controle...
Si la zone est juste un "endroit" de la gui, tu peux tricher en créant une label transparente dessus que tu utiliseras dans le script :wink:

Code : Tout sélectionner

#include <GUIConstantsEx.au3>

$gui = GUICreate("My GUI") 
$label = GUICtrlCreateLabel("", 0, 0, 20, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUISetState()   

Do
$a = GUIGetCursorInfo($gui)
If $a[4] = $label Then Msgbox(0,"", "ok")
$msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSE
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Si la souris est présente dans une telle zone, alor

#8

Message par TT22 »

Tiens, voilà :

Code : Tout sélectionner

HotKeySet("{Escape}","Fin") ; Se rend à la fonction "Fin" si l'on appuie sur "Echap".
$xPos = 50  ; Position x du carré/rectangle.
$yPos = 50  ; Position y du carré/rectangle.
$xTai = 200 ; Taille x du carré/rectangle.
$yTai = 200 ; Taille y du carré/rectangle.
While 1 ; Démarre la boucle.
    $Pos = MouseGetPos() ; Prend la position de la souris.
    If $xPos < $Pos[0] And $Pos[0] < $xTai And $yPos < $Pos[1] And $Pos[1] < $yTai Then ; Vérifie si la souris est dans le rectangle.
        MouseMove($xPos + $xTai , $yPos + $yTai) ; Si elle y est, alors elle la bouge à l'extrémité du rectangle.
    EndIf ; Fin de condition.
WEnd ; Retourne au début de la boucle.

Func Fin() ; Début de la fonction "Fin".
MsgBox(64,"Info","Fin du script !") ; Affiche un message.
Exit ; Quitte le script.
EndFunc ; Fin de la fonction.
Cordialement,
TT22
daxxxter
Niveau 2
Niveau 2
Messages : 26
Enregistré le : lun. 13 juin 2011 23:39
Status : Hors ligne

Re: [..] Si la souris est présente dans une telle zone, alor

#9

Message par daxxxter »

Merci beaucoup!
Répondre