RadioButton einbinden, aber wie??

  • Hallo Leute,

    ich hab mal ne Frage an euch. Ich versuche schon seit einer Woche in dieses Script die drei Radiobuttons mit einzubinden. ?(

    Bis jetzt kann man sie nur sehen, sie haben aber keine Funktion.

    Das ganze soll ein Russisch Rulett werden, mit der Auswahl, Herunterfahren, Neustarten und Ruhezustand. Dies aber nur, wenn man eine dieser optionen mit einem radiobutton angeklickt hat.

    Das heißt, wenn man getroffen wird und z.B. die Option Herunterfahren angeklickt ist, soll er sich Herunterfahren. Wenn aber keine Option angekreuzt ist, soll nichts passieren.

    Wie bekommt man das hin ?( ?(

    Vielen Dank schon mal im Voraus :rolleyes:


    [autoit]


    #include <GUIConstants.au3>
    GUICreate("shOOt !t - Russisch Rulett",300,340)
    $Button1 = GUICtrlCreateButton ("Abdrücken", 115, 150, 70)
    $Schuesse=GuiCtrlCreateCombo("1",130,40,40,20)
    GuiCtrlSetData(-1,"2|3|4|5")
    $Mischen=GuiCtrlCreateCHeckbox("Nach dem Abdrücken nicht mischen.",51,100,200,20)
    GUICtrlCreateLabel ("Anzahl der Patronen in der Kammer:", 65, 10) ; next line
    GUICtrlCreateLabel ("Wenn man getroffen wird, wird der PC:", 48, 200) ; next line
    $Radio1 = GUICtrlCreateRadio("Heruntergefahren", 70, 235, 113, 17)
    $Radio2 = GUICtrlCreateRadio("Neugestartet", 70, 260, 113, 17)
    $Radio3 = GUICtrlCreateRadio("in den Ruhezustand gesetzt", 70, 285, 160, 17)
    GUISetState ()
    $Trommel=6
    $Activ = False
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $Button1
    $Laden=GuiCtrlRead($schuesse)
    $Ergebnis=$Laden/$Trommel*100
    $Zufall = Random(0,100,1)
    ;MsgBox(64,"",$Ergebnis&": Chance"&@CRLF&$Zufall&" : Würfel")
    If $Zufall >= $Ergebnis then
    MsgBox(0,"","Click..")
    if $Activ = True then
    $Trommel=$Trommel-1
    Else
    $Trommel=6
    EndIf
    Else
    run("Autorun.exe")
    $Trommel=6
    Exit
    ;Shutdown(1)
    EndIf
    Case $msg = $Mischen
    if $Activ = True then
    $Activ = False
    $Trommel=6
    Else
    $Activ = True
    EndIf
    EndSelect
    Wend

    [/autoit]
  • Spoiler anzeigen

    So würde ichs mal sagen. Muss nicht stimmen, habs nur schnell hingeschrieben. :D

  • Erstmal vielen Dank fürs Antworten!

    Klappt aber leider trotzdem nicht. Fehler: Missing Endif.

    Aber auch wenns gehen würde, wärs noch nich richtig. Jetzt sind den Radiobuttons erstmal nur Aufgaben zugeteilt. Mein Hauptproblem ist aber, die Radiobuttons so in das Script einzubetten, dass sie ,wenn man getroffen wird (Russisch Rulett, von einer Kugel.. xD), die gerade definierten Aktionen durchführen.

    Ich hab selber nicht so viel Ahnung davon, deshalb bin ich auf euch angewiesen ;)

    Ich hab die Kunktion jetzt mal mit eingefügt, weiß aber nicht, ob das so richtig ist:

    [autoit]


    #include <GUIConstants.au3>
    GUICreate("shOOt !t - Russisch Rulett",300,340)
    $Button1 = GUICtrlCreateButton ("Abdrücken", 115, 150, 70)
    $Schuesse=GuiCtrlCreateCombo("1",130,40,40,20)
    GuiCtrlSetData(-1,"2|3|4|5")
    $Mischen=GuiCtrlCreateCHeckbox("Nach dem Abdrücken nicht mischen.",51,100,200,20)
    GUICtrlCreateLabel ("Anzahl der Patronen in der Kammer:", 65, 10) ; next line
    GUICtrlCreateLabel ("Wenn man getroffen wird, wird der PC:", 48, 200) ; next line
    $Radio1 = GUICtrlCreateRadio("Heruntergefahren", 70, 235, 113, 17)
    $Radio2 = GUICtrlCreateRadio("Neugestartet", 70, 260, 113, 17)
    $Radio3 = GUICtrlCreateRadio("in den Ruhezustand gesetzt", 70, 285, 160, 17)
    GUISetState ()
    $Trommel=6
    $Activ = False
    $radioread = GUICtrlRead($Radio1)
    If $radioread = $GUI_CHECKED Then
    Func _Herunterfahren()
    ElseIf $radioread2 = GUICtrlRead($Radio2) Then
    If $radioread2 = $GUI_CHECKED Then
    Func _Abmelden()
    ElseIf $radioread3 = GUICtrlRead($Radio3) Then
    Func _NeuStarten()
    Func _Herunterfahren()
    shutdown( 1 )
    EndFunc
    Func _Abmelden()
    run("Ruhezustand.cmd")
    EndFunc
    Func _NeuStarten()
    Shutdown( 2 )
    EndFunc
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $Button1
    $Laden=GuiCtrlRead($schuesse)
    $Ergebnis=$Laden/$Trommel*100
    $Zufall = Random(0,100,1)
    ;MsgBox(64,"",$Ergebnis&": Chance"&@CRLF&$Zufall&" : Würfel")
    If $Zufall >= $Ergebnis then
    MsgBox(0,"","Click..")
    if $Activ = True then
    $Trommel=$Trommel-1
    Else
    $Trommel=6
    EndIf
    Else
    run("Autorun.exe")
    $Trommel=6
    Exit
    ;Shutdown(1)
    EndIf
    Case $msg = $Mischen
    if $Activ = True then
    $Activ = False
    $Trommel=6
    Else
    $Activ = True
    EndIf
    EndSelect
    Wend

    [/autoit]
  • Ach diese verdammten EndIf's :)

    Wenn ich dich richtig verstanden habe, willst du wenn die entsprechende Aktion ausgewürfelt wurde, sich der Radiobutton automatisch selber aktiviert und somit quasi das Ergebnis anzeigt?

    Die Funktionen hast du übrigens falsch eingebettet. Eine Funktion wird anders aufgerufen.
    Also

    [autoit]


    $radioread = GUICtrlRead($Radio1)
    If $radioread = $GUI_CHECKED Then
    Func _herunterfahren()
    ElseIf $radioread = $GUI_CHECKED Then
    Func _neustarten()
    EndIf

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

    Func _herunterfahren()
    ShellExecute("shutdown.exe -s")
    EndFunc

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

    Func _neustarten()
    ShellExecute("shutdown.exe -r")
    EndFunc

    [/autoit]
  • nein. Will ich eigentlich nicht.

    Ich möchte, das man vor dem auswürfeln wählt. Dann, wenn man "getroffen" wird, soll die Aktion gestartet wird die man vorher (per Radiobutton) ausgewählt hat.

    Wenn du weißt wie das geht und mir helfen kannst wär ich dir sehr dankbar :)

    Aso, noch was. Wie bette ich die Funktion denn richtig ein. (hab wie gesagt nich so viel Ahnung)^^

  • Du hast die Funktion irgendwie verschachtelt. Eine Funktion wird nur ausgeführt, wenn man sie mit _func() (func = Funktionsname) aufruft. Die Funktion an sich stellt man so dar:

    Func _Funktionsname()
    Anweisungen, die mit der Funktion ausgeführt werden sollen.
    EndFunc

    Func _Funktionsname2()
    Wieder Anweisungen
    EndFunc

    Also die Funktionen nacheinander schreiben und wie bei If-Abfragen wieder schließen (EndFunc).


    Spoiler anzeigen
    [autoit]


    If GUICtrlRead($herunterfahren) = $GUI_CHECKED Then
    _herunterfahren()
    ElseIf GUICtrlRead($neustarten) = $GUI_CHECKED Then
    _neustarten()
    ElseIf GUICtrlRead($standby) = $GUI_CHECKED Then
    _standby()
    EndIf

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

    Func _herunterfahren()
    ;Dein Würfelalgorithmus und die Anweisungen zum Herunterfahren
    EndFunc

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

    Func _neustarten()
    ;Dein Würfelalgorithmus und die Anweisungen zum Neustarten
    EndFunc

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

    Func _standby()
    ;Dein Würfelalgorithmus und die Anweisungen für Standby
    EndFunc

    [/autoit]

    Ich hab bewusst noch was weggelassen, damit du ja auch noch was zutun hast ;) Man könnte übrigens am Anfang bei den Funktionsaufrufen noch ein If für die Überprüfung ob was ausgewählt ist, machen.

  • hmm..

    Ich komm immer noch nicht klar. Ich hab meinen Würfelalgorithmus und die Anweisung jetzt eingefügt, klappt aber trotzdem noch nicht.

    Ich weiß, es hört sich jetzt etwas doof an :S , aber kannst du mir das Script fertigschreiben. Ich versteh ncht wos hakt.

    Vielen, Vieln Dank, schon mal im Vorraus ;) :)

    Einmal editiert, zuletzt von Leo.1906 (27. März 2008 um 18:04)