1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. chip

Beiträge von chip

  • Hilfe bei Dauerbeschuss

    • chip
    • 10. August 2011 um 13:54

    Ist ja klar, dass sie immer wieder gestartet wird, da ja immer sagst:

    [autoit]

    if FileExists( @DesktopDir&"\Datei1.exe")then
    Run(@DesktopDir&"\Datei1.exe")
    EndIf

    [/autoit]

    Und so lange sie also nicht auf dem Desktop löscht wird sie durch die while immer und immer wieder gestartet.

    Und deine Datei2.exe passiert nichts weil in _FTP_FileGetSize den slash falschrum hast.

  • Office 2010 Installationsschlüssel auslesen

    • chip
    • 10. August 2011 um 13:52

    Dann würde ich einfach mal googeln ;). Möglicherweiße steht er ja nun unter einem anderen Pfad.

  • Grafik(en) in *.exe einbinden ohne Fileinstall

    • chip
    • 10. August 2011 um 13:49
    Zitat von alpines

    Warum lädst du sie z.B. nicht auf TinyPic hoch und fügst den Link dort ein oder lädst das Bild vom Prog automatisch runterladen und fügst ein, und wenn es beenden wird, löscht es das Bild.

    Hat er bereits geschrieben warum er das nicht will.

  • Office 2010 Installationsschlüssel auslesen

    • chip
    • 10. August 2011 um 13:47

    Soweit ich weiß wird bei Office 2010 nichtmehr der Key in der Registry gespeicher sondern nur noch der ProductCode und da ist es klar, dass dieser immer gleich ist. Bei älteren Versionen wurde der Key unter dem Eintrag DigitalProductID als Hexadezimalwert gespeichert.

  • Office 2010 Installationsschlüssel auslesen

    • chip
    • 10. August 2011 um 13:12

    Der steht auf der Verpackung/Handbuch/CD deines gekauften Office 2010.

  • Offene Prozesse abfragen, MSGBox zum schliessen einblenden OK /Cancel - Errorlevel übergeben

    • chip
    • 10. August 2011 um 12:51

    Was hat ini mit n00b zu tuen? Richtig nichts.

  • Grafik(en) in *.exe einbinden ohne Fileinstall

    • chip
    • 10. August 2011 um 12:16

    Die anderen Datein sind nur damit die im Editor die "Tooltips" hast und im Example-Ordner sind die Beispiele dazu.

  • Bestes Windows Tool

    • chip
    • 10. August 2011 um 08:31

    Wer nichtmal die Grundlagen von Autoit geschweigende einer anderen Programmiersprache kann, ist meiner Meinung nach garnicht in der Lage eine solche Wettbewerb, geschweigenden die Auswertung dazu, zu realisieren.

  • Ton aufzeichnen, den der PC von sich gibt?

    • chip
    • 10. August 2011 um 08:23

    Müsste damit gehen: Bass.dll UDF Version_10 Download

  • Grafik(en) in *.exe einbinden ohne Fileinstall

    • chip
    • 9. August 2011 um 15:05

    @Twodollarbillie Da braucht er nicht google, da gibts bereits einer fertiges Beispiel: https://autoit.de/index.php?page…phie#post182765 aber was das bei seinem Problem helfen soll ist mir nicht ganz klar.

  • GUICtrlCreateEdit live auslesen

    • chip
    • 9. August 2011 um 14:49

    So, wegen dem flackern musst halt noch Prüfen ob der Wert im Lable schon gesetzt wurde:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 443, 192, 124)
    $sEdit = GUICtrlCreateEdit("", 8, 8, 473, 289)
    GUICtrlSetData(-1, "Edit1")
    $sSplit = GUICtrlCreateLabel("Label1", 40, 336, 100, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch

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

    $_sEdit = GUICtrlRead($sEdit)
    If $_sEdit = "" Then
    GUICtrlSetData($sSplit, "Lines: 0")
    Else
    $aSplit = StringSplit($_sEdit, @LF)
    GUICtrlSetData($sSplit, "Lines: " & $aSplit[0])
    EndIf
    WEnd

    [/autoit]


    Edit: funkey war schenller :cursing:

  • [Beendet] Wegfindungs-Scriptwettbewerb

    • chip
    • 9. August 2011 um 14:40
    Zitat von clezZ

    Haben auch noch andere außer Marsi ein Skript eingesendet?
    Wenn ja wären diese Skripte vllt auch noch ganz interessant.

    Nope wurden keine weiteren hehe.

  • [Beendet] Wegfindungs-Scriptwettbewerb

    • chip
    • 8. August 2011 um 15:36

    Und der Sieger in allen Kategoriene ist...*Trommelwirbel*.... Marsi

    Hier das Siegerscript:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    ;~ ÄNDERUNGEN NUR IM MARKIEREN BEREICH

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

    Global $Form = GUICreate("Form1", 600, 600, 192, 124)

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

    Dim $wallArray[1][5]

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

    For $i = 0 To Random(20, 30, 1) Step 1
    ReDim $wallArray[$i + 1][5]
    $wallArray[$i][3] = Random(25, 50, 1) ;- Breite
    $wallArray[$i][4] = Random(25, 50, 1) ;- Höhe
    $wallArray[$i][1] = Random(0, (600 - $wallArray[$i][3]), 1) ;- Abstand von links
    $wallArray[$i][2] = Random(0, (600 - $wallArray[$i][4]), 1) ;- Abstand von oben
    $wallArray[$i][0] = GUICtrlCreateButton("", $wallArray[$i][1], $wallArray[$i][2], $wallArray[$i][3], $wallArray[$i][4])
    Next

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

    $positionen = Random(0, 575, 1)

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

    Dim $player[1][5]
    $player[0][3] = 25 ;- Breite
    $player[0][4] = 25 ;- Höhe
    $player[0][1] = 0 ;- Abstand von links
    $player[0][2] = $positionen ;- Abstand von oben
    $player[0][0] = GUICtrlCreateButton("P", 0, $positionen, 25, 25)

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

    Dim $ziel[1][5]
    $ziel[0][3] = 25 ;- Breite
    $ziel[0][4] = 25 ;- Höhe
    $ziel[0][1] = 575 ;- Abstand von links
    $ziel[0][2] = 575 - $positionen ;- Abstand von oben
    $ziel[0][0] = GUICtrlCreateButton("Z", 575, 575 - $positionen, 25, 25)

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

    Func move($Richtung, $Schritte)
    Switch $Richtung
    Case "hoch"
    For $i = 1 To $Schritte Step 1
    Sleep(10)
    $player[0][2] = $player[0][2] - 1
    GUICtrlSetPos($player[0][0], $player[0][1], $player[0][2])
    Next
    Case "runter"
    For $i = 1 To $Schritte Step 1
    Sleep(10)
    $player[0][2] = $player[0][2] + 1
    GUICtrlSetPos($player[0][0], $player[0][1], $player[0][2])
    Next
    Case "links"
    For $i = 1 To $Schritte Step 1
    Sleep(10)
    $player[0][1] = $player[0][1] - 1
    GUICtrlSetPos($player[0][0], $player[0][1], $player[0][2])
    Next
    Case "rechts"
    For $i = 1 To $Schritte Step 1
    Sleep(10)
    $player[0][1] = $player[0][1] + 1
    GUICtrlSetPos($player[0][0], $player[0][1], $player[0][2])
    Next
    EndSwitch
    EndFunc ;==>move

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

    GUISetState(@SW_SHOW)
    ;~ sleep(2000)
    ;~ ÄNDERUNGEN NUR IM MARKIEREN BEREICH

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

    ;~ HIER CODE EINFÜGEN

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

    #include <array.au3>
    #include <GDIPlus.au3>

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

    Local $P[4] = [$player[0][1], $player[0][2], $player[0][3], $player[0][4]]
    Local $Z[4] = [$ziel[0][1], $ziel[0][2], $ziel[0][3], $ziel[0][4]]
    Local $UBoundWand = UBound($wallArray, 1)
    Local $W[$UBoundWand][4]

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

    For $i = 0 To $UBoundWand - 1 Step 1
    $W[$i][0] = $wallArray[$i][1]
    $W[$i][1] = $wallArray[$i][2]
    $W[$i][2] = $wallArray[$i][3]
    $W[$i][3] = $wallArray[$i][4]
    Next

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

    Local $Ret = _Loesen($P, $Z, $W, $UBoundWand) ; Hier steckt die Funktion die die Wegpunkte zurückgibt wenn sie Erfolg hat.

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

    If $Ret = -4 Then MsgBox(0 + 48, 'Problem !', 'Das Ziel steckt vollständig in einem Hindernis')
    If $Ret = -2 Then MsgBox(0 + 48, 'Problem !', 'Der Spieler steckt Vollständig in einem Hindernis')

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

    If IsArray($Ret) Then
    _Bewegen($Ret, $P) ; Nachdem alles gelöst ist wird der Player zum Ziel bewegt.
    Else
    MsgBox(0 + 64, 'Leider keine Lösung', 'Die Methode hat keinen Lösungsweg gefunden')
    EndIf

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

    ;~ move("hoch", 20)
    ;~ move("rechts", 50)
    ;~ move("runter", 30)
    ;~ move("links", 40)

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

    Func _AbstandGrp2()
    If _Betrag($P[1] - $Z[1]) > $P[2] Then Return 1
    Return (_Betrag($P[1] - $Z[1]) / $P[2])
    EndFunc

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

    Func _Bewegen($Ret, $P)
    Local $Richtung, $Len = 0
    Local $Strecke = $Len
    Local $MinStrecke = Int(_E($P[0], $P[1], $Z[0], $Z[1]) - $P[2]+1 + (- $P[2] + 1)*_AbstandGrp2())

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

    _Optimieren($Ret)

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

    ;~ _ArrayDisplay($Ret)

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

    For $i = 1 To UBound($Ret) - 1 Step 1
    If $P[0] = $Ret[$i][0] Then ;er hat sich nicht in X Richtung Bewegt. also Oben oder Unten.
    If $P[1] > $Ret[$i][1] Then ; Y1 ist Größer als Y2 -> Nach Unten
    $Richtung = 'hoch'
    $Len = $P[1] - $Ret[$i][1]
    Else
    $Richtung = 'runter'
    $Len = $Ret[$i][1] - $P[1]
    EndIf
    Else
    If $P[0] > $Ret[$i][0] Then ; Rechts
    $Richtung = 'links'
    $Len = $P[0] - $Ret[$i][0]
    Else
    $Richtung = 'rechts'
    $Len = $Ret[$i][0] - $P[0]
    EndIf
    EndIf

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

    $Strecke += $Len
    move($Richtung, $Len) ; Hier wird Bewegt !

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

    $P[0] = $Ret[$i][0]
    $P[1] = $Ret[$i][1]
    ;~ GUICtrlSetPos($player[0][0], $P[0], $P[1])
    ;~ Sleep(100)

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

    Next

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

    ToolTip('Gelaufene Strecke: ' & $Strecke & ' px (optimiert)' & @CRLF & 'MindestStrecke (Ohne Hindernisse): ' & $MinStrecke & ' px' & @CRLF & 'Umweg: ' & $Strecke - $MinStrecke & ' px ( ' & Round((($Strecke-$MinStrecke)/$MinStrecke)*100,1)& '% )')
    EndFunc ;==>_Bewegen

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

    Func _WegLaenge($Ret)
    Local $Len = 0, $Strecke = 0
    Local $P2 = $P

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

    For $i = 1 To UBound($Ret) - 1 Step 1
    If $P2[0] = $Ret[$i][0] Then ;er hat sich nicht in X Richtung Bewegt. also Oben oder Unten.
    If $P2[1] > $Ret[$i][1] Then ; Y1 ist Größer als Y2 -> Nach Unten
    $Len = $P2[1] - $Ret[$i][1]
    Else
    $Len = $Ret[$i][1] - $P2[1]
    EndIf
    Else
    If $P[0] > $Ret[$i][0] Then ; Rechts
    $Len = $P2[0] - $Ret[$i][0]
    Else
    $Len = $Ret[$i][0] - $P2[0]
    EndIf
    EndIf

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

    $Strecke += $Len
    $P2[0] = $Ret[$i][0]
    $P2[1] = $Ret[$i][1]
    Next
    Return $Strecke
    EndFunc

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

    Func _Optimieren(ByRef $a) ; Schneidet unnötige Wegpunkte raus
    ;~ _ArrayDisplay($a)

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

    Local $u = UBound($a)

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

    For $o = 0 To $u * 2 Step 1
    $u = UBound($a)
    For $i = 2 To $u - 1 Step 1
    If $a[$i][0] = $a[$i-1][0] And $a[$i][0] = $a[$i-2][0] Then
    _ArrayDelete($a, $i - 1)
    ExitLoop
    EndIf
    If $a[$i][1] = $a[$i-1][1] And $a[$i][1] = $a[$i-2][1] Then
    _ArrayDelete($a, $i - 1)
    ExitLoop
    EndIf

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

    Next
    Next

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

    ;~ _ArrayDisplay($a)

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

    EndFunc

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

    Func _GDIPlus_BitmapGetPixel($hBitmap, $iX, $iY)
    Local $aResult = DllCall($ghGDIPDll, "uint", "GdipBitmapGetPixel", "hwnd", $hBitmap, "int", $iX, "int", $iY, "uint*", 0)
    Return $aResult[4]
    EndFunc ;==>_GDIPlus_BitmapGetPixel

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

    Func _Loesen($P, $Z, $W, $UBoundW)

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

    Local $ZielEckenInDerWand[4] = [0, 0, 0, 0]
    Local $PlayerInDerWand[4] = [0, 0, 0, 0]

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

    _GDIPlus_Startup()
    ;~ ConsoleWrite(@ScriptLineNumber & @CRLF)
    Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($Form)
    ;~ ConsoleWrite(@ScriptLineNumber & @CRLF)
    Local $Bitmap = _GDIPlus_BitmapCreateFromGraphics(600, 600, $hGraphics)
    ;~ ConsoleWrite(@ScriptLineNumber & @CRLF)
    Local $hBuffer = _GDIPlus_ImageGetGraphicsContext($Bitmap)
    ;~ ConsoleWrite(@ScriptLineNumber & @CRLF)
    Local $Brush = _GDIPlus_BrushCreateSolid(0x10000000)
    Local $Brush2 = _GDIPlus_BrushCreateSolid(0x50FF0000)

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

    For $i = 0 To $UBoundW - 1 Step 1
    If _Kollision_Viereck_Punkt($Z[0], $Z[1], $W[$i][0], $W[$i][1], $W[$i][2], $W[$i][3]) Then $ZielEckenInDerWand[0] = 1
    If _Kollision_Viereck_Punkt($Z[0] + $Z[2], $Z[1], $W[$i][0], $W[$i][1], $W[$i][2], $W[$i][3]) Then $ZielEckenInDerWand[1] = 1
    If _Kollision_Viereck_Punkt($Z[0], $Z[1] + $Z[3], $W[$i][0], $W[$i][1], $W[$i][2], $W[$i][3]) Then $ZielEckenInDerWand[2] = 1
    If _Kollision_Viereck_Punkt($Z[0] + $Z[2], $Z[1] + $Z[3], $W[$i][0], $W[$i][1], $W[$i][2], $W[$i][3]) Then $ZielEckenInDerWand[3] = 1
    If _Kollision_Viereck_Punkt($P[0], $P[1], $W[$i][0], $W[$i][1], $W[$i][2], $W[$i][3]) Then $PlayerInDerWand[0] = 1
    If _Kollision_Viereck_Punkt($P[0] + $P[2], $P[1], $W[$i][0], $W[$i][1], $W[$i][2], $W[$i][3]) Then $PlayerInDerWand[1] = 1
    If _Kollision_Viereck_Punkt($P[0], $P[1] + $P[3], $W[$i][0], $W[$i][1], $W[$i][2], $W[$i][3]) Then $PlayerInDerWand[2] = 1
    If _Kollision_Viereck_Punkt($P[0] + $P[2], $P[1] + $P[3], $W[$i][0], $W[$i][1], $W[$i][2], $W[$i][3]) Then $PlayerInDerWand[3] = 1
    Next

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

    If _Summe($ZielEckenInDerWand) = 4 Then Return -4
    If _Summe($PlayerInDerWand) = 4 Then Return -2

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

    If _Summe($ZielEckenInDerWand) Then
    ;~ Exit
    If MsgBox(4 + 32, 'Problem !', 'Das Ziel steckt zum Teil in einem Hindernis' & @CRLF & 'Dennoch Versuchen ?') = 7 Then Return -3
    EndIf

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

    If _Summe($PlayerInDerWand) Then
    ;~ Exit
    If MsgBox(4 + 32, 'Problem !', 'Der Spieler steckt zum Teil in einem Hindernis' & @CRLF & 'Dennoch Versuchen ?') = 7 Then Return -1
    EndIf

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

    Local $GefundeneWege = 0
    Local $ProbierteSchritte = 0
    Local $P2 = $P ; Kopie des Players
    Local $Schrittlaenge = Int($P2[2] / 2) ; Breite des Spielers ist die Schrittlänge
    Local $TmpWeg[1][2] ; Enthält alle angesteuerten Wegpunkte
    Local $AktuellerWeg[1][2] ; Enthält Wegpunkte des kürzesten Weges

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

    Local $L, $R, $O, $U ; Ist True wenn der Weg möglich ist.
    Local $Richtung, $Schritte = 0, $Entfernung[4], $GebrauchteSchritte = 0, $GebrauchteSchritte_Alt = 0

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

    Local $Control = GUICtrlCreateEdit('Bitte' & @CRLF & 'Wart', $P2[0], $P2[1], $P[2], $P[3], 0, 0)
    GUICtrlSetFont(-1, 7)
    Local $MaxIndex, $FreieWege
    Local $Timer
    Local $Maxdiff = 10000 ; 100 ms pro Weg. Wenn das nicht reicht gilt der versuch als Fehlgeschlagen.

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

    Local $Wegfall = 3 ; 4 = Nichts entfällt, 0 = Alles Entfällt bis auf der Kürzeste
    Local $Durchlaeufe = 0

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

    Local $OriginalUbound = $UBoundW

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

    For $v = 0 To 19 Step 1 ;10 Versuche den kürzesten Weg zu finden.
    $Timer = TimerInit()
    $P2 = $P
    $Schritte = 1
    ReDim $TmpWeg[1][2]
    $GebrauchteSchritte = 0
    _GDIPlus_GraphicsClear($hBuffer, 0xFFFFFFFF)
    $UBoundW = $OriginalUbound
    ReDim $W[$UBoundW][4]
    While TimerDiff($Timer) < $Maxdiff
    $Schrittlaenge = Random(3, 17, 1)
    $GebrauchteSchritte += $Schrittlaenge
    $Wegfall = 0
    ;~ If $GefundeneWege < 3 Then $Wegfall = Random(3, 4, 1) ; Mit Wegfall 4 Mag das teil nur rumirren. aber es verfährt sich nicht so schnell.
    ;~ If $GefundeneWege >= 3 And $GefundeneWege < 10 Then $Wegfall = Random(1, 3, 1) ; Je mehr Wege gefunden wurden desto schärfer kann die Einstellung sein.
    ;~ If $GefundeneWege >= 10 And $GefundeneWege < 15 Then $Wegfall = Random(0, 2, 1) ; Nochmals eine verschärfung
    If $GefundeneWege >= 15 And $GefundeneWege < 18 Then $Wegfall = Random(0, 1, 1) ; Nochmals eine verschärfung
    ;~ ToolTip($Wegfall)
    $ProbierteSchritte += 1
    $Schritte += 1
    ReDim $TmpWeg[$Schritte][2]
    $TmpWeg[$Schritte - 1][0] = $P2[0]
    $TmpWeg[$Schritte - 1][1] = $P2[1]
    _GDIPlus_GraphicsFillRect($hBuffer, $P2[0], $P2[1], $P2[2], $P2[3], $Brush)

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

    If Int('0x' & StringRight(Hex(_GDIPlus_BitmapGetPixel($Bitmap, $P2[0]+$Schrittlaenge/2, $P2[1]+$Schrittlaenge/2)),2)) < 100 Then
    $UBoundW += 1
    ReDim $W[$UBoundW][4]
    $W[$UBoundW-1][0] = $P2[0] + 10
    $W[$UBoundW-1][1] = $P2[1] + 10
    $W[$UBoundW-1][2] = 5
    $W[$UBoundW-1][3] = 5
    EndIf

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

    ;~ For $bla = 0 To $UBoundW - 1 Step 1
    ;~ _GDIPlus_GraphicsFillRect($hBuffer, $W[$bla][0], $W[$bla][1], $W[$bla][2], $W[$bla][3], $Brush2)
    ;~ Next
    ;~ Sleep(100)

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

    ;~ _GDIPlus_GraphicsDrawImage($hGraphics, $Bitmap, 0, 0)

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

    $L = True
    $R = True
    $O = True
    $U = True

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

    For $i = 0 To $UBoundW - 1 Step 1
    If _Kollision_Viereck_Viereck($P2[0] - $Schrittlaenge, $P2[1], $P2[2], $P2[3], $W[$i][0], $W[$i][1], $W[$i][2], $W[$i][3]) Or ($P2[0] - $Schrittlaenge < 0) Then $L = False
    If _Kollision_Viereck_Viereck($P2[0] + $Schrittlaenge, $P2[1], $P2[2], $P2[3], $W[$i][0], $W[$i][1], $W[$i][2], $W[$i][3]) Or ($P2[0] + $Schrittlaenge > (600 - $P[2])) Then $R = False
    If _Kollision_Viereck_Viereck($P2[0], $P2[1] - $Schrittlaenge, $P2[2], $P2[3], $W[$i][0], $W[$i][1], $W[$i][2], $W[$i][3]) Or ($P2[1] - $Schrittlaenge < 0) Then $O = False
    If _Kollision_Viereck_Viereck($P2[0], $P2[1] + $Schrittlaenge, $P2[2], $P2[3], $W[$i][0], $W[$i][1], $W[$i][2], $W[$i][3]) Or ($P2[1] + $Schrittlaenge > 600 - $P[2]) Then $U = False
    Next

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

    If $L = False And $R = False And $O = False And $U = False Then ContinueLoop

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

    $FreieWege = 0
    If $L Then $FreieWege += 1
    If $R Then $FreieWege += 1
    If $O Then $FreieWege += 1
    If $U Then $FreieWege += 1

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

    ; Wege die Wegfallen können
    If $FreieWege > 1 Then
    For $blubb = 0 To $FreieWege - $Wegfall Step 1

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

    If $L Then
    $Entfernung[0] = _Entfernung_Punkt_Punkt($P2[0] + $P2[2] / 2 - $Schrittlaenge, $P2[1] + $P2[3] / 2, $Z[0] + $Z[2] / 2, $Z[1] + $Z[3] / 2)
    Else
    $Entfernung[0] = 0
    EndIf
    If $R Then
    $Entfernung[1] = _Entfernung_Punkt_Punkt($P2[0] + $P2[2] / 2 + $Schrittlaenge, $P2[1] + $P2[3] / 2, $Z[0] + $Z[2] / 2, $Z[1] + $Z[3] / 2)
    Else
    $Entfernung[1] = 0
    EndIf
    If $O Then
    $Entfernung[2] = _Entfernung_Punkt_Punkt($P2[0] + $P2[2] / 2, $P2[1] + $P2[3] / 2 - $Schrittlaenge, $Z[0] + $Z[2] / 2, $Z[1] + $Z[3] / 2)
    Else
    $Entfernung[2] = 0
    EndIf
    If $U Then
    $Entfernung[3] = _Entfernung_Punkt_Punkt($P2[0] + $P2[2] / 2, $P2[1] + $P2[3] / 2 + $Schrittlaenge, $Z[0] + $Z[2] / 2, $Z[1] + $Z[3] / 2)
    Else
    $Entfernung[3] = 0
    EndIf

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

    $MaxIndex = _Maximal($Entfernung)

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

    Switch $MaxIndex
    Case 0
    If $R Or $O Or $U Then $L = False
    Case 1
    If $L Or $O Or $U Then $R = False
    Case 2
    If $L Or $R Or $U Then $O = False
    Case 3
    If $L Or $R Or $O Then $U = False
    EndSwitch

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

    $FreieWege2 = 0
    If $L Then $FreieWege2 += 1
    If $R Then $FreieWege2 += 1
    If $O Then $FreieWege2 += 1
    If $U Then $FreieWege2 += 1

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

    If $FreieWege2 = 1 Then
    ;~ ToolTip('Ein Weg')
    ExitLoop
    EndIf

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

    Next

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

    EndIf

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

    $Richtung = -1

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

    If Not ($L = False And $R = False And $O = False And $U = False) Then
    $Durchlaeufe = 0
    While $Richtung = -1
    ;~ ConsoleWrite($Richtung & @CRLF)
    Switch Random(0, 3, 1)
    Case 0
    If $L And Not ($P2[0] - $Schrittlaenge < 0) Then $Richtung = 0
    Case 1
    If $R And Not ($P2[0] + $Schrittlaenge > (600 - $P[2])) Then $Richtung = 1
    Case 2
    If $O And Not ($P2[1] - $Schrittlaenge < 0) Then $Richtung = 2
    Case 3
    If $U And Not ($P2[1] + $Schrittlaenge > 600 - $P[2]) Then $Richtung = 3
    EndSwitch
    $Durchlaeufe += 1
    If $Durchlaeufe = 10 Then ; Es wird zwar vermiden durch die AußenWand zu gehen, aber nicht verboten...^^
    If $L Then $Richtung = 0
    If $R Then $Richtung = 1
    If $O Then $Richtung = 2
    If $U Then $Richtung = 3
    EndIf
    WEnd
    Else

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

    EndIf

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

    Switch $Richtung
    Case 0
    $P2[0] -= $Schrittlaenge
    Case 1
    $P2[0] += $Schrittlaenge
    Case 2
    $P2[1] -= $Schrittlaenge
    Case 3
    $P2[1] += $Schrittlaenge
    EndSwitch

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

    If _Kollision_Viereck_Viereck($P2[0], $P2[1], $P2[2], $P2[3], $Z[0], $Z[1], $Z[2], $Z[3]) Then

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

    $Schritte += 1
    ReDim $TmpWeg[$Schritte][2]
    $TmpWeg[$Schritte - 1][0] = $P2[0]
    $TmpWeg[$Schritte - 1][1] = $P2[1]

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

    ;~ _Optimieren($TmpWeg)
    ;~ $GebrauchteSchritte = _WegLaenge($TmpWeg)

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

    ToolTip('Mindestens gebrauchte Schritte: ' & $GebrauchteSchritte_Alt & @CRLF & 'Aktuell gebrauchte Schritte: ' & $GebrauchteSchritte)
    $GefundeneWege += 1
    If Not $GebrauchteSchritte_Alt Then
    $GebrauchteSchritte_Alt = $GebrauchteSchritte
    $AktuellerWeg = $TmpWeg
    EndIf
    If $GebrauchteSchritte < $GebrauchteSchritte_Alt Then
    $GebrauchteSchritte_Alt = $GebrauchteSchritte
    $AktuellerWeg = $TmpWeg
    EndIf
    ExitLoop
    EndIf

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

    ;~ GUICtrlSetPos($Control, $P2[0], $P2[1])
    ;~ Sleep(100)

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

    WEnd
    ;~ ToolTip($ProbierteSchritte & @CRLF & $v)
    Next

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

    GUICtrlDelete($Control)

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

    ToolTip('Es wurden ' & $GefundeneWege & ' Wege gefunden' & @CRLF & 'Der Kürzeste war: ' & $GebrauchteSchritte_Alt & ' Pixel lang (nicht Optimiert)' & @CRLF & 'Luftlinie: ' & Int(_E($P[0], $P[1], $Z[0], $Z[1]) - $P[2]+1 + (- $P[2] + 1)*_AbstandGrp2()) & @CRLF & _
    'Mindestweg (ohne Hindernisse): ' & Int(_E($P[0], $P[1], $Z[0], $Z[1]) - 2*$P[2]+2))

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

    _GDIPlus_BrushDispose($Brush)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($Bitmap)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()

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

    Return $AktuellerWeg

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

    EndFunc ;==>_Loesen

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

    #Region Sonstiges

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

    Func _Maximal($Array)
    Local $a = 0, $b = $Array[0]
    For $i = 0 To UBound($Array) - 1 Step 1
    If $b < $Array[$i] Then
    $b = $Array[$i]
    $a = $i
    EndIf
    Next
    Return $a
    EndFunc ;==>_Maximal

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

    Func _Summe($Array)
    Local $a = 0
    For $i = 0 To UBound($Array) - 1 Step 1
    $a += $Array[$i]
    Next
    Return $a
    EndFunc ;==>_Summe

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

    Func _E($x1, $y1, $x2, $y2)
    Return _Betrag($x1 - $x2) + _Betrag($y1 - $y2)
    EndFunc ;==>_E

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

    Func _Betrag($a)
    If $a > 0 Then Return $a
    Return -$a
    EndFunc ;==>_Betrag

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

    Func _Entfernung_Punkt_Punkt($x1, $y1, $x2, $y2)
    Return (($x1 - $x2) ^ 2 + ($y1 - $y2) ^ 2) ^ 0.5
    EndFunc ;==>_Entfernung_Punkt_Punkt

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

    Func _Kollision_Viereck_Punkt($x1, $y1, $x2, $y2, $b2, $h2) ;Selbsterklärend
    Return ($x1 > $x2 And $y1 > $y2 And $x1 < $x2 + $b2 And $y1 < $y2 + $h2)
    EndFunc ;==>_Kollision_Viereck_Punkt

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

    Func _Kollision_Viereck_Viereck($x1, $y1, $b1, $h1, $x2, $y2, $b2, $h2)
    Return ($x1 + $b1 > $x2 And $y1 + $h1 > $y2 And $x1 < $x2 + $b2 And $y1 < $y2 + $h2)
    EndFunc ;==>_Kollision_Viereck_Viereck

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

    #EndRegion - Sonstiges
    ;EndRegion - Sonstiges

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

    ;~ HIER CODE EINFÜGEN

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

    ;~ ÄNDERUNGEN NUR IM MARKIEREN BEREICH
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd
    ;~ ÄNDERUNGEN NUR IM MARKIEREN BEREICH

    [/autoit]
  • FireFox 5.0: Problem beim Anzeigen der Threads auf www.AutoIt.de

    • chip
    • 5. August 2011 um 20:32

    Schonmal komplett deinstalliert und neu installiert?

  • FireFox 5.0: Problem beim Anzeigen der Threads auf www.AutoIt.de

    • chip
    • 5. August 2011 um 12:22

    Nutze selber Firefox 5 und habe das Problem nicht. Evtl. veraltete oder nichtmehr kompatieble Addons im FF die den Fehler verursachen.

  • Fernseher an die Wand oder nicht ?!

    • chip
    • 5. August 2011 um 11:20

    Man schaut sich ja auch einen Film an um sich zu entspannen und nicht um ständig nachzudenken ;).

  • Schaltflächen mit Icons

    • chip
    • 5. August 2011 um 11:12

    Kannst du mit GUICtrlSetImage machen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 443, 192, 124)
    $Button1 = GUICtrlCreateButton("Button1", 80, 56, 80, 50, $WS_GROUP)
    GUICtrlSetImage($Button1, @SystemDir & "\shell32.dll", -21)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]
  • AutoOS 1.0 - Der Desktopersatz in AutoIt

    • chip
    • 3. August 2011 um 14:00

    *g* genau so ging es mir von einem halben Jahr auch *lach*. Mein autoiSystem wurde auch auf Eis gelegt.

  • Multi Auto Installer

    • chip
    • 2. August 2011 um 14:04
    Zitat von amd-boy

    Also das mit den Silent versteh ich nicht. Kannst du mir kein bsp machen ?
    Was ist EIGENTLICH an einer setup .exe anders als an einer selbstgeschribenen ,
    .exe

    Da gibts massig hinternisse die du nicht berücksichtigen hast/kannst:

    Was ist wenn es nicht weiter sondern z.b. Next heißt?
    Was ist wenn es ein Flashsetup wie z.b. das von Photoshop?
    Was ist wenn die Meldung kommt ob dr Rechener formatiert werden soll und dein Script auf ok klickt?
    Was ist wenn dort steht "Soll das Setup wirklich abgebrochen werden?" und darunte der Button "Weiter" ist?
    Was ist wenn es garkein weiter oder ok gibt sonder nur ein Finish?
    Was ist wenn aus mehreren optionen etwas ausgewählt werden muss?

    Das könnte man noch Seitenweise so weiter machen. Du wilslt die eierlegende Wollmilchsau, aber die gibt es nicht ;).

  • Multi Auto Installer

    • chip
    • 2. August 2011 um 10:00

    Und was hat das mit seiner Frage zu tuen O.o ?

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™