[R] Faire une boucle un peu compliquée

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
flash
Niveau 1
Niveau 1
Messages : 2
Enregistré le : lun. 06 avr. 2009 17:41
Status : Hors ligne

[R] Faire une boucle un peu compliquée

#1

Message par flash »

Bonjour a tous,
J'aimerais faire un script qui attende qu'un pixel prenne une couleur bien précise, puis réalise une certaine action, seulement je ne sait pas quand le pixel va prendre la couleur voulue, ni même s'il la prendra un jour. Donc ca donnerait ca:

Code : Tout sélectionner

While (PixelGetColor ( 1160, 643 ) <> 0xFF6600) ; attends que le pixel prenne la couleur voulue
    Sleep(1) ; délai d'attente avant revérification
WEnd
MouseClick("left", 1168, 606, 1, 200) ; action a effectuer très rapidement après que le pixel ait pris la couleur FF6600
Le problème c'est que le pixel pourrait ne jamais prendre la couleur voulue, et donc la boucle ne s'arreterait jamais. J'ai penser a faire un If au lieu d'une boucle mais j'ai besoin que le script soit très réactif, c'est a dire qu'au moment ou le pixel change de couleur, il faut que l'action d'après soit effectuée dans la seconde.

Voila ca a peut-etre l'air un peu compliqué mais la je sèche vraiment, si vous avez des idées a me proposer n'hésitez pas, merci.
Modifié en dernier par Tlem le lun. 06 avr. 2009 22:28, modifié 2 fois.
Raison : Ajout balise titre et code
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: Besoin d'aide pour faire une boucle un peu compliquée

#2

Message par GaRydelaMer »

Bonsoir

tu as plusieurs solutions pour sortir de la boucle

1 un timer
2 un raccourci clavier

Code : Tout sélectionner

#include <Timers.au3>
_Main(5 * 1000) ; 5 secondes

Func _Main($time)
    HotKeySet("{ESC}", "_Quit")

    Local $starttime = _Timer_Init()
    While 1
        ; attends que le pixel prenne la couleur voulue
        ; action a effectuer très rapidement après que le pixel ait pris 
        If PixelGetColor( 1160, 643 ) = 0xFF6600 Then MouseClick("left", 1168, 606, 1, 200)
        If _Timer_Diff($starttime) > $time Then _Quit()
        Sleep(1) ; délai d'attente avant revérification
    WEnd
EndFunc   ;==>_Main

Func _Quit()
    Exit
EndFunc   ;==>_Quit
 
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Faire une boucle un peu compliquée

#3

Message par Tlem »

Merci de prendre le temps de lire les règles de présentation d'un message.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
flash
Niveau 1
Niveau 1
Messages : 2
Enregistré le : lun. 06 avr. 2009 17:41
Status : Hors ligne

Re: [..] Faire une boucle un peu compliquée

#4

Message par flash »

Merci GaRydelaMer, c'est exactement ce qu'il me fallait.
Répondre