Einfach Bewegung eines Bildes in einer Form mit For?

  • Moinsen,

    habe mir das recht einfach vorgestellt um den Quellcode nicht zu voll zu proppen :)
    Wenn ich mein kleines Programm aufrufe dann verschiebt er das BIld nur 1 mal und nicht die ganze For Schleife....

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 614, 442, 230, 166)
    $Start = GUICtrlCreateButton("Start", 8, 408, 507, 25, 0)
    $Beenden = GUICtrlCreateButton("Beenden", 520, 408, 83, 25, 0)
    $lblPunkte = GUICtrlCreateLabel("Punkte :", 0, 8, 47, 17)
    $Punkte = GUICtrlCreateLabel("", 48, 8, 200, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $bild = "C:\xxxxxxxxxxxxxxxxx\ehec.gif"
    $bildw = 44
    $bildh = 20

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

    $x1 = 24
    $x2 = 536

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

    $y1 = 40
    $y2 = 360

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

    $xx = Random($x1,$x2)
    $yy = Random($y1,$y2)
    $Pic1 = GUICtrlCreatePic($bild, $xx, $yy, $bildw, $bildh, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Start
    For $i = 1 to 10 Step 1
    $newx = $xx+1
    $newy = $yy+1
    GUICtrlSetPos($Pic1, $newx, $newy)
    GUICtrlSetData($Punkte, $newx&" "&$newy)
    sleep(200)
    next
    Case $Beenden
    Exit
    Case $Punkte
    EndSwitch
    WEnd

    [/autoit]

    habe ich da irgendwo einen ansatz Fehler?

    Zeile 39 ist für mich zum debuggen :)

    3 Mal editiert, zuletzt von coaxa (12. August 2011 um 12:56)

  • Super Klasse ! :)

    Vielen Dank. Es kommt Bewegung ins Spiel ;)


    Ja genau das hat mich ja gewundert das das immer das gleiche ist ^^
    So eine kleine Debug Funktion währe für Autoit nicht schlecht

    Wie bekomme ich das Thema als gelöst? :D

    gefunden! :D

    • Offizieller Beitrag

    So eine kleine Debug Funktion währe für Autoit nicht schlecht


    Brauchst doch in deinem Skript nur den Cursor auf $newx setzen und dann: Alt+D drücken. Schon hast du eine Debugzeile, die dir in jedem Schleifendurchlauf den Wert ausgibt. Und wenn dann 10-mal dasselbe erscheint, weißt du dass die Zuweisung blödsinnig sein muß. ;)

  • Ja war ja auch Blödsinn :S

    Besteht die Möglichkeit die Random() Funktion mit + und - zu machen?

    Oder geht das nur mit einem Array das zufällig ein + oder - erscheint`?

    #################

    Geht nicht er rechnet nicht zeigt nur an ^^

    [autoit]


    Global $operator[4] ;Array deklarieren
    $operator[0]="+"
    $operator[1]="-"
    $operator[2]="+"
    $operator[3]="-"

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

    Case $Start
    For $i = 1 to 10 Step 1
    $newx = $xx&$operator[Random(0,3)]&"1"
    $newy = $yy&$operator[Random(0,3)]&"1"
    GUICtrlSetPos($Pic1, $newx, $newy)
    GUICtrlSetData($Punkte, $newx&" "&$newy)
    sleep(200)
    next

    [/autoit]

    Einmal editiert, zuletzt von coaxa (12. August 2011 um 10:19) aus folgendem Grund: Fortschritt

  • Das ist mir eindeutig noch zu hoch ^^

    Kann ich nicht bei mir erst bleiben ? :D

    Mir geht es um diese beiden Zeilen hier.

    [autoit]

    $newx = $xx&$operator[Random(0,3)]&"1"
    $newy = $yy&$operator[Random(0,3)]&"1"

    [/autoit]

    Dia Ausgabe ist aber leider ein String :D

  • Würde das ja auch gerne Verknüpfen eben halt nur berechnet :D

    zur zeit ist

    $newx = 209+2

    Ziel soll für mich sein, das er das dann auch Berechnet :D

    also

    $newx = 211

    ?(


    Vieleicht zum Verständnis. :)

    Ich habe die alte Position.
    Möchte durch Zufall + oder -
    2 Schritte die Position verändern :)

    ###################


    Nach langem Knobeln ^^

    [autoit]

    Case $Start

    For $i = 1 to 10 Step 1

    DIM $Ax[2]
    $Ax[0]= $newx +2
    $Ax[1]= $newx-2

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

    DIM $Ay[2]
    $Ay[0]= $newy+2
    $Ay[1]= $newy-2

    $newx = $Ax[Random(0,1,1)]
    $newy = $Ay[Random(0,1,1)]

    GUICtrlSetPos($Pic1, $newx, $newy)

    GUICtrlSetData($Punkte, $newx&" "&$newy)

    sleep(200)
    next

    [/autoit]

    2 Mal editiert, zuletzt von coaxa (12. August 2011 um 11:59) aus folgendem Grund: Fertig :D