[R] Arrèter une action pour en faire une autre

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
ChMuX
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 23 janv. 2008 19:05
Status : Hors ligne

[R] Arrèter une action pour en faire une autre

#1

Message par ChMuX »

bonjour,
voila je m'explique: si par exemple l'écran est constitué d'un damier rouge et que la souris clique sur chaque case et que d'un coup une case bleu apparaisse, comment faire pour que la souris arrete de cliquer sur les case rouge et qu'elle clique sur la bleu???
codename44
Niveau 4
Niveau 4
Messages : 65
Enregistré le : sam. 22 déc. 2007 15:46
Status : Hors ligne

Re: arreter une action pour en faire une autre

#2

Message par codename44 »

salut

je suppose que tu as une boucle qui va cliquer sur chaque case rouge.

à chaque fois que ta boucle va cliquer sur une case rouge, tu rajoutes un If vérifiant si il n'y a pas une case bleue qui est apparue, avec PixelSearch() par exemple
si la case bleue est apparue, tu cliques dessus

si tu ne vois pas comment faire, postes ton code, je pourrais être plus précis :wink:
ChMuX
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 23 janv. 2008 19:05
Status : Hors ligne

Re: arreter une action pour en faire une autre

#3

Message par ChMuX »

Oui soit plus précis stp ^^

Code : Tout sélectionner

HotKeySet("{Esc}", "Quitter")

For $i=0 to 250 step 1 
    $coord = PixelSearch( 50, 50, 960, 575, 0x59564D, 0)
    MouseClick( "left", $coord[0], $coord[1], 1, 30)
    if @error=1 Then Exit 1
    MouseClick( "left", $coord[0]+30, $coord[1]+30, 1, 30)
    Sleep(4000)
Next

Func Quitter()
    Exit 0
EndFunc
codename44
Niveau 4
Niveau 4
Messages : 65
Enregistré le : sam. 22 déc. 2007 15:46
Status : Hors ligne

Re: arreter une action pour en faire une autre

#4

Message par codename44 »

voilà ce à quoi je pensais
adapte en fonction de ce que tu veux exactement :wink:

Code : Tout sélectionner

For $i=0 to 250 step 1

    $bleue = PixelSearch( 50, 50, 960, 575, bleu, 0)
    If Not @error Then;si il a trouvé la couleur bleue :
        MouseClick( "left", $bleue[0], $bleue[1],1,10) ;il clique dessus
        ExitLoop ;il sort de la boucle (je ne sais pas si c'est ce que tu veux)
    EndIf
    
    $coord = PixelSearch( 50, 50, 960, 575, 0x59564D, 0)
    MouseClick( "left", $coord[0], $coord[1], 1, 30)
    if @error=1 Then Exit 1
    MouseClick( "left", $coord[0]+30, $coord[1]+30, 1, 30)
    Sleep(4000)
    
Next

;ici la suite du script, une fois qu'il a trouvé la couleur bleue et que la boucle for est quittée
ChMuX
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 23 janv. 2008 19:05
Status : Hors ligne

Re: arreter une action pour en faire une autre

#5

Message par ChMuX »

mici c'est cool je vais faire quelques modif car ce n'est pas aussi simple ;) je reviendrait me plaindre si sa ne marche pas x).
ChMuX
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 23 janv. 2008 19:05
Status : Hors ligne

Re: [..] Arreter une action pour en faire une autre

#6

Message par ChMuX »

mici j'ais bien avansé reste 2 problemes :s alors le 1er c'est que je reprend l'exemple imaginons la case bleue ce déblace donc la sours clique sur lendroit ou elle se trouvait avant de se déplacer et il possible de régler ce probleme ?
le 2eme et que j'aimerai que la souris recherche la couleur rouge dans un périmetre éloigné de disons plus de 3 cm du du cllique précédent voila=)
ChMuX
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 23 janv. 2008 19:05
Status : Hors ligne

Re: [..] Arreter une action pour en faire une autre

#7

Message par ChMuX »

A et j'ais oublié un truc ^^ comment faire pour kune fois avoir cliqué sur la case bleue la souris se remette a cliquer sur les case rouge?
codename44
Niveau 4
Niveau 4
Messages : 65
Enregistré le : sam. 22 déc. 2007 15:46
Status : Hors ligne

Re: [..] Arreter une action pour en faire une autre

#8

Message par codename44 »

salut
A et j'ais oublié un truc ^^ comment faire pour kune fois avoir cliqué sur la case bleue la souris se remette a cliquer sur les case rouge?
Ll suffit de ne pas mettre ExitLoop, comme ça la boucle ne se quitte pas et donc il continue à faire les clics sur les cases rouges après.

pour le mouvement de la case bleue, essaye d'ajouter quelques pixels au clic,

Code : Tout sélectionner

MouseClick( "left", $bleue[0]+15, $bleue[1]+15,1,10) ;il clique dessus
essaye plusieurs valeurs, mais sinon je sais pas

pour le périmètre, tu vas devoir faire deux variables contenant la coordonnée x et l'autre la coordonnée y, que tu mettras à jour à chaque tour de la boucle,et que tu utiliseras dans le PixelSearch de la boucle d'après
ChMuX
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 23 janv. 2008 19:05
Status : Hors ligne

Re: [..] Arreter une action pour en faire une autre

#9

Message par ChMuX »

mici pour toutes ces info ;) le seul probleme est pour le truc du périmetre : je ne veux pas que la souris clique 3cm plus loin mais qu'elle clique nimporte ou mais aprés ces 3 cm tu comprend?
ChMuX
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 23 janv. 2008 19:05
Status : Hors ligne

Re: [..] Arreter une action pour en faire une autre

#10

Message par ChMuX »

a m.... non céest bon dsl^^ je reouvrerait un new topic plus tard mici bien c'est cool ;)
Répondre