Benötige ein wenig Hilfe - 2 verschiedene Pixel get Color dann mach das Schleifen

  • Servus,
    bin schon lange im Forum unterwegs und find es Klasse was man sich hie so an Hilfen suchen kann und wie umfangreich manche Beiträge sind.
    Nun hab ich aber auch ma ein wenig rumgespielt und komm leider nicht weiter.

    Desswegen habe ich mich angemeldet und hoffe auf Hilfe.

    So ich möchte das 2 verschiedene Pixel auf den Bildschirm kontrolliert werden. Wenn der eine Pixel Farbe xy hat soll er was machen und wenn der 2. Pixel Farbe xyz hat soll er halt auch was bestimmtes machen. Das ganze in einer Endlosschleife.
    Nun habe ich schon angefangen und schaffe es leider nicht das beide Pixel gleichzeitig überprüft werden und sozusagen syncron getestet und ausgeführt werden.

    Wäre schön wenn mir ma jmd. helfen könnte - ich hab leider Null Erfahrung.

    So hab ich es gemacht, aber da werden ja erst Pixel 1 abgefragt und dann erst Pixel 2 wenn Pixel 1 die jenige Farbe hatte.

    While 1
    If PixelGetColor(686,516) = 0xBF852F Then
    Send("{LEFT}",0)
    If PixelGetColor(584,613) = 0xC78D2E Then
    Send("{RIGHT}",0)


    Sleep(50)
    WEnd


    Danke im Voraus.

    LG Ron

  • Hi Ronner235 und Herzlich Willkommen im Forum :),

    in AutoIt ist es nicht möglich 2 Sachen genau zur gleichen Zeit zu überprüfen und auszuführen.

    [autoit]

    While 1
    If PixelGetColor(686, 516) = 0xBF852F Then _
    Send("{LEFT}", 0)
    If PixelGetColor(584, 613) = 0xC78D2E Then _
    Send("{RIGHT}", 0)
    WEnd

    [/autoit]

    Allerdings geht das Überprüfen in der While-Schleife so schnell, dass man überhaupt nicht merkt dass die 2 PixelgetColor hintereinander ausgeführt werden, deshalb verstehe ich dein Problem nicht...

    Meinst du vielleicht, dass wenn der der eine Pixel die Farbe XY hat UND der andere Pixel die Farbe XY hat, soll er was bestimmtes ausführen?
    So?

    [autoit]

    While 1
    If (PixelGetColor(686, 516) = 0xBF852F) And (PixelGetColor(584, 613) = 0xC78D2E) Then _
    Send("{LEFT}", 0)
    WEnd

    [/autoit]


    Weil ansonsten gibt dein Problem keinen Sinn :D.


    anno2008

  • Danke. danke für die nette Begrüßung...

    Na mir kommt das so vor, als ob er bei mir erst wartet das Pixelfarbe xy bei Pixel 1 kommt und dann erst den 2. Pixel mit Farbe yxz überprüft.
    Ok es geht nicht gleichzeitig, aber läuft die Schleife jetzt permanent durch oder nur wenn der erste Pixel die jeweilige Farbe hat usw...

    Zu Deiner Frage. ne es müssen nicht Beide gleichzeitig in erfüllung gehn.

    Sind Beide unabhängig voneinander.

  • Solange der Ausdruck der Schleife wahr ist, und das ist er mit 1, läuft die Schleife immer.

    Edit:
    Teste mal diesen Code, dann siehste, ob die Schleife dauernd läuft.

    [autoit]

    $count = 1

    [/autoit][autoit][/autoit][autoit]

    While 1

    ToolTip($count & ". Durchlauf der Schleife")

    $count += 1

    If PixelGetColor(686, 516) = 0xBF852F Then _
    Send("{LEFT}", 0)
    If PixelGetColor(584, 613) = 0xC78D2E Then _
    Send("{RIGHT}", 0)
    WEnd

    [/autoit]
  • Ich denke du suchst danach.

    [autoit]

    While 1
    If PixelGetColor(686,516) = 0xBF852F Then
    Send("{LEFT}",0)
    ElseIf PixelGetColor(584,613) = 0xC78D2E Then
    Send("{RIGHT}",0)
    EndIf
    WEnd

    [/autoit]

    mfg SiLenCa

  • Jop, die Schleife läuft...

    Hab es jetzt noch ein wenig anders probiert. Und zwar ist doch in den Hilfen ein Video von McPoldy zu Pixelsearch. Damit bekomm ich es so einigermaßen hin, hab aber das Problem, dass ich 2 Bereiche auf den Bildschirm "kontrollieren" möchte und net nur 1.

    Wenn ich jetzt aber bei dem Skript die ersten Koordinaten speichere und die Farbe und den selben Befehl nochmal ein baue, dann werden doch sicherlich die 1. Koords wieder überschrieben und somit nur ein Bereich "gescannt", oder?

    Und dann wollt ich noch was zu der Farbe fragen: Kann man z.B. wenn man rot gespeichert hat ind den Bereich nach ein paar Noancen beim suchen variieren, oder muss dann genau diese Farbe kommen?

    LG

  • Ich weiss nicht genau ob du das suchst, aber es gibt bei dem PixelSearch die sogenannte Shade-variation. die geht von 0-255 wenn ich mich nicht irre und damit kannst du die abweichung der farben ein wenig ändern. Kannst es dir in der hilfe unter PixelSearch anschauen wie es verwendet wird.

    mfg SiLenCa