Pixel mit Abständen vergleichen, Wenn Wahr, dann einen weiteren Pixel überprüfen

  • Hallo Leute!
    Ich bin neu hier im Forum und beschäftige mich schon seit ein paar Tagen mit AutoIT

    Mein Problem:

    L0-L0-L0-L0
    X1-X2-L0-L0
    L0-L0-X3-L0
    L0-L0-L0-L0

    X = Roter Pixel
    L0 = Grüner Pixel
    Pixelabstände=60


    1. Es soll einen Pixel (X1) mit der Farbe Rot gesucht und vergleichen werden u.s.w.
    2. Wenn der Rote Pixel(X1) gefunden wurde, Dann gucke 60 Pixel weiter nach rechts!
    3. Wenn dort auch ein Roter Pixel(X2) vorhanden ist, Dann prüfe ob 60 Pixel nach rechts und 60 Pixel runter auch rein Roter Pixel(X3) vorhanden ist!
    4. Wenn 1=2=3 (also alle Pixel Rot sind) dann verschiebe Pixel (X3) um 60 Pixel nach oben!

    Wer ist so nett und kann mir hierzu die Wenn-Dann-Schleife aufzeigen?

  • PixelSearch ( left, top, right, bottom, color [, shade-variation [, step [, hwnd]]] )
    PixelGetColor ( x , y [, hwnd] ) bei dir wäre es dann PixelGetColor ( x +60, y [, hwnd] )
    und die Bedingungen kannst du einfach mit 2 If verschachtlungen machen

  • Danke für die schnelle Antwort, wäre toll wenn du mir noch sagen kannst was 2 lf verschachtelungen sind?
    Bitte gucke mal ob mein Code (unten) soweit umzusetzen wäre oder wo hier fehler sind

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

    Opt("WinWaitDelay",100)
    Opt("WinTitleMatchMode",4)
    Opt("WinDetectHiddenText",1)
    Opt("MouseCoordMode",1)

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

    While 1

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

    $coord_rot = PixelSearch ( 381, 216, 684, 519, 0xFF0000, 1, 1 );suche roten pixel (X1) wenn gefunden gehe weiter mit if then
    If $coord_rot = PixelGetColor ( $coord_rot[0], $coord_rot[1], 0xFF0000, 1, 1 ) And $coord_rot = PixelGetColor ( $coord_rot[0]+60, $coord_rot[1], 0xFF0000, 1, 1 ) And $coord_rot = PixelGetColor ( $coord_rot[0]+120, $coord_rot[1]-60, 0xFF0000, 1, 1 )
    Not @error Then
    MouseMove($coord_rot[0]+120, $coord_rot[1]-60);Wenn X1=X2=X3 (also alle pixel rot) dann springe mit maus auf X3
    MouseClick("down");Wenn auf X3 angekommen dann Mausclick auf runter
    MouseMove($coord_rot[0]+120, $coord_rot[1]+60); Jetzt mit gedrückter Maustaste um 60 Pixel nach oben
    MouseClick("up");Wenn maus 60 pixel nach oben ist dann lasse maustaste los

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

    EndIf
    WEnd

    [/autoit]
  • Statt den MoseMove+MouseClicks lieber MouseClickDrag nehemn
    Sonst wäre MouseClick sowieso falsch das müsste MouseDown und MouseUp sein.

    //Edit: PixelGetColor ist falsch. Das musst du dir nochmal in der Hilfe anschauen :)

  • Ok er hat einen Pixel mit PixelSearch () gefunden und macht auch eine MsgBox usw.
    Aber wie mache ich eine Schleife mit PixelSearch () so, dass er für ALLE roten Pixel in einem Bereich mir jeweils eine MsgBox für jeden Pixel den er gefunden hat, sagen wir es gibt 23 rote Pixel, ausgibt UND nicht beim Ersten Pixel den er gefunden hat stehen bleibt ???

  • Wie ist das zu verstehen? Welchen Befehl brauche ich anstelle von PixelSearch () damit er, wenn er einen pixel gefunden hat und seinen code ausgeführt hat, gleich mit dem nächsten pixelsearch lossucht? Ist das mit Schleifen nicht möglich wenn ja wie genau ???

    Einmal editiert, zuletzt von Jessy26 (17. Juni 2008 um 22:38)