Zufällige Ausführung genau einer Funktion aus einer Menge an Funktionen

  • Guten Tag zusammen,

    ich will mein Skript dazu bringen, zufällig eine Funktion aus einem Pool an Funktionen auszuführen.

    Sagen wir ich habe folgende Funktionen definiert.

    Spoiler anzeigen
    [autoit]

    Func _MyFunc_1()
    ...
    EndFunc

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

    Func _MyFunc_2()
    ...
    EndFunc

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

    Func _MyFunc_3()
    ...
    EndFunc

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

    Func _MyFunc_4()
    ...
    EndFunc

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

    Func _MyFunc_5()
    ...
    EndFunc

    [/autoit]

    und nun soll zufällig eine dieser fünf Funktionen ausgeführt werden.

    Mein Ansatz war es bislang, die Ziffer 1-5 über eine random-Funktion zu generieren und beim Aufrufen der Funktion in den Ausdruck einzubauen. Leider will mir das nicht gelingen, da ich nicht weiß wie (ich weiß nichteinmal ob das überhaupt geht).

    Spoiler anzeigen
    [autoit]

    $rnd = string(random(1,5,1))

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

    ;Versuch 1
    _MyFunc_&$rnd&()

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

    ;Versuch 2
    _MyFunc_&"$rnd"&()

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

    ;Versuch 3"
    _MyFunc_"&$rnd&"()"

    [/autoit]

    Ich würde mich sehr freuen, wenn mir jemand ein paar richtungsweisende Hinweise geben könnte.

    Vielen Dank und schönen Gruß,
    ekrusty

  • Hallo ekrusty,

    Dein ansatz ist zwar nicht schlecht funktioniert aber so nicht.
    Für dein Problem solltest du Funktionen mit Parametern nutzen.

    Beispiel

    Spoiler anzeigen
    [autoit]


    $rnd = random(1,5,1)
    _MyFunc($rnd)

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

    Func _MyFunc($iRandom = 0)
    Switch $iRandom
    Case 1
    msgbox(0,"", "Erster Fall")
    Case 2
    msgbox(0,"", "Zweiter Fall")
    Case 3
    msgbox(0,"", "Dritter Fall")
    Case 4
    msgbox(0,"", "Vierter Fall")
    Case 5
    msgbox(0,"", "Fünfter Fall")
    Case Else
    msgbox(0,"", "Keine gültige Zahl angegeben")
    Endswitch
    Endfunc

    [/autoit]


    Wenn du noch Fragen zum Beispiel hast stell sie einfach hab nur gerade etwas wenig Zeit ;)

  • Hallo ekrusty,

    das ganze kannst du mit call lösen:

    Spoiler anzeigen
    [autoit]

    $rnd = random(1,5,1)
    ConsoleWrite($rnd & @CRLF) ;nur zur Kontrolle

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

    $sFunc = "_func" & $rnd
    ConsoleWrite($sFunc & @CRLF) ;nur zur Kontrolle

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

    Call($sFunc)

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

    Func _func1()
    MsgBox(0,"Func1","wurde aufgerufen")
    EndFunc

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

    Func _func2()
    MsgBox(0,"Func2","wurde aufgerufen")
    EndFunc

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

    Func _func3()
    MsgBox(0,"Func3","wurde aufgerufen")
    EndFunc

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

    Func _func4()
    MsgBox(0,"Func4","wurde aufgerufen")
    EndFunc

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

    Func _func5()
    MsgBox(0,"Func5","wurde aufgerufen")
    EndFunc

    [/autoit]

    mfg autoBert

  • Vielen Dank für die schnellen Antworten. Ich bin begeistert - von euch und von AutoIt, weil es doch für so vieles eine einfache Lösung parat hat.

    mfg

  • Und ich bin beleidigt, denn

    Zitat

    ich bin noch ganz schöner AutoIt Neuling und habe es noch nicht viel weiter als Pixel-/ImageSearch etc. gebracht. Momentant arbeite ich daran meinen Bot zu randomizen, sodass dieser nicht so leicht als Bot (aufgrund der steten Wiederholung der exakt gleichen MouseClicks) identifiziert werden kann.
    Quelle: http://www.autoitbot.de/board3-coding-…onen/#post67583

    du hast die Forenregeln umgangen und auch nicht das Thema auf gelöst gesetzt!