Kurze Frage

  • Hallo
    Hab erst mit autoit angefangen, es funktioniert auch alles soweit , aber jetzt bin ich an einem punkt an dem ich nicht weiß wie man das jetzt am besten schreibt.


    $pos1farbe = PixelGetColor(x,y)
    If $pos1farbe = $blau Then
    MsgBox(0,"Info","pos1 ist blau")

    Elseif $pos2farbe = PixelGetColor(x,y)
    $pos2farbe = $blau Then
    MsgBox(0,"Info","pos2 ist blau")

    Else
    $pos3farbe = PixelGetColor(x,y)
    If $pos3farbe = $blau Then
    MsgBox(0,"Info","pos3 ist blau")
    EndIf
    EndIf
    Er soll also überprüfen ob pos1 blau ist , ist das nicht der Fall soll er pos2 überprüfen ob es blau ist, ist das nicht der Fall überprüft er pos 3.


    Natürlich funktioniert das nicht mit elseif , aber wie könnte man das schreiben ? vor allem ändern sich die farben also muss immer erneut gesucht werden.

    Vielen Dank für eure Hilfe

  • Er soll entscheiden zwischen den 3 verschiedenen Möglichkeiten.
    Er soll überprüfen ob position 1 blau ist , ist das der fall gibt er es mir in einer msgbox wieder.
    Ist das nicht der fall soll er überprüfen ob position 2 blau ist , ist das der fall gibt er es mir in einer msgbox wieder
    ist das nicht der Fall soll er überprüfen ob position 3 blau ist , ist das der fall gibt er es mir in einer msgbox wieder

    Ich bräuchte sowas wie else nur 2 mal , da es mit elseif ja nicht mehr funktioniert. ( Hoffe du verstehst was ich meine)

  • Muss bei Case nicht auch direkt z.b "Case $pos1farbe = $blau" .
    Er muss aber als erstes mal die pos1farbe überprüfen " $pos1farbe = Pixelgetcoler(x,y).

  • Hab mir das so gedacht:

    [autoit]


    $pos1farbe = PixelGetColor(x,y)
    $pos2farbe = PixelGetColor(x,y)
    $pos3farbe = PixelGetColor(x,y)
    Select
    Case $pos1farbe = $blau
    MsgBox(0,"Info","pos1 ist blau")
    Case $pos2farbe = $blau
    MsgBox(0,"Info","pos2 ist blau")
    Case $pos3farbe = $blau
    MsgBox(0,"Info","pos3 ist blau")
    EndSelect

    [/autoit]

    Garantiere aber für nichts ;)

  • Ich würde es so machen:

    [autoit]

    Global $array[3][3]
    $array[0][0] = 125 ;X Pos1
    $array[0][1] = 80 ;Y Pos1
    $array[0][2] = "Pos1 " ;Name Pos1

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

    $array[1][0] = 300 ;X Pos2
    $array[1][1] = 200 ;Y Pos2
    $array[1][2] = "Pos2 " ;Name Pos2

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

    $array[2][0] = 800 ;X Pos3
    $array[2][1] = 600 ;Y Pos3
    $array[2][2] = "Pos3 " ;Name Pos3
    $farbe = "0000ff"
    While 1
    For $i = 0 To 2
    $pixelcolor = PixelGetColor($array[$i][0], $array[$i][1])
    If $pixelcolor = $farbe Then
    MsgBox(0, "Info", $array[$i][2] & "ist Blau")
    EndIf
    Next
    Sleep(200)
    WEnd

    [/autoit]
  • @ Rhodan das funktioniert leider nicht.

    DevFly Könntest du mir das ein bisschen genauer erklären , wie gesagt hab erst angefangen . Danke dir.

  • Habe deine Werte in ein Array gelegt der wird abgearbeitet so wird über die for schleife jeder wert einmal abgefragt und geprüft. An sich brauchste nur noch die werte in Array anpassen dann sollte das funktionieren. Was was ist steht daneben in Kommentar. Wenn du willst kannst du diesen auch jederzeit erweitern musst nur den global mit erhöhen sonst bekommste ein Fehler. Der Farbwert ist in RGB weil PixelGetColor nur diesen abfragt deswegen der komische Wert bei der Variable $farbe

    @Rhodan Select geht zwar auch aber ist sehr langsam deswegen hab ich es in eine for gepackt :)

    Gruss DevFly