Reset Knopf

  • Hey zusammen,
    Heute gehts um mein zweites Projekt.

    Und zwar könnte ich eure Hilfe gebrauchen ...
    Ich möchte das mein Spiel durch den Definierten Button resettet wird.

    hab nur die idee gehabt mit:

    Spoiler anzeigen
    [autoit]

    Case $Reset
    Run (@DesktopDir,"\Spiel.exe")
    exit

    [/autoit]


    Das klappt zwar.
    aber dann könnte man das Spiel nichtmehr umbennen bzw. muss es aufm desktop sein!

    Bin sehr gespannt wie andere wege aussehen um das zu lösen.

    Und bitte Bombardiert mich mit gemäcker über den Script... :D
    Will ja dazulernen.. also wenn euch was auffällt (und das wird es)
    sagt einfach was ich anders machen soll etc.

    Danke schonmal ..
    und ein Schönes Wochenende :party:

    Gruß

    Mein Spiel:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $GUI = GUICreate("Ratespiel", 202, 178, 428, 314)
    $Tipp = GUICtrlCreateButton("Tipp", 8, 80, 91, 25)
    $Reset = GUICtrlCreateButton("Reset", 104, 80, 91, 25)
    $Text = GUICtrlCreateLabel("Rate eine Zahl zwischen 0 und 100", 8, 16, 188, 17, $SS_CENTER)
    $Result = GUICtrlCreateLabel("", 8, 48, 184, 17, $SS_CENTER)
    $Sub = GUICtrlCreateButton("- 1", 8, 112, 27, 25)
    $Add = GUICtrlCreateButton("+ 1", 168, 112, 27, 25)
    $Slider = GUICtrlCreateSlider(40, 112, 118, 21)
    $Value = GUICtrlCreateLabel("0", 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Sub10 = GUICtrlCreateButton("- 10", 8, 144, 27, 25)
    $Add10 = GUICtrlCreateButton("+ 10", 168, 144, 27, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Global $Random = Random(0,100,1)
    Global $Guess = 0
    Global $Tipps = 0

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg

    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Tipp
    $Tipps = $Tipps+1
    If $Guess = $Random Then
    $Result = GUICtrlCreateLabel("...", 8, 48, 184, 17, $SS_CENTER)
    sleep (500)
    $Result = GUICtrlCreateLabel("Mit "&$Tipps&" versuchen Gewonnen!", 8, 48, 184, 17, $SS_CENTER)
    EndIf
    If $Guess > $Random Then
    $Result = GUICtrlCreateLabel("...", 8, 48, 184, 17, $SS_CENTER)
    sleep (500)
    $Result = GUICtrlCreateLabel(".. weniger ..", 8, 48, 184, 17, $SS_CENTER)
    EndIf
    If $Guess < $Random Then
    $Result = GUICtrlCreateLabel("...", 8, 48, 184, 17, $SS_CENTER)
    sleep (500)
    $Result = GUICtrlCreateLabel(".. mehr ..", 8, 48, 184, 17, $SS_CENTER)
    EndIf

    Case $Slider
    $Guess = GUICtrlRead($Slider)
    $Value = GUICtrlCreateLabel(""&$Guess, 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")

    Case $Sub
    If $Guess < 1 Then
    $Guess = 1
    EndIf
    GUICtrlSetData($Slider, $Guess-1)
    $Value = GUICtrlCreateLabel(""&$Guess-1, 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Guess = $Guess-1

    Case $Add
    If $Guess > 99 Then
    $Guess = 99
    EndIf
    GUICtrlSetData($Slider, $Guess+1)
    $Value = GUICtrlCreateLabel(""&$Guess+1, 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Guess = $Guess+1

    Case $Sub10
    If $Guess < 10 Then
    $Guess = 10
    EndIf
    GUICtrlSetData($Slider, $Guess-10)
    $Value = GUICtrlCreateLabel(""&$Guess-10, 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Guess = $Guess-10

    Case $Add10
    If $Guess > 90 Then
    $Guess = 90
    EndIf
    GUICtrlSetData($Slider, $Guess+10)
    $Value = GUICtrlCreateLabel(""&$Guess+10, 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Guess = $Guess+10


    Case $Reset
    MsgBox(0,"Check Value Box","Guess ist = "&$Guess&@CRLF&"Random = "&$Random&@CRLF&"Slider = "&GUICtrlRead($Slider)) ;~ nur zu testzwecken.

    EndSwitch
    WEnd

    [/autoit]

    Wer Rechtschreibfehler findet darf sie behalten. :D

    Einmal editiert, zuletzt von ThirtySix (5. Juli 2013 um 16:52)

  • Hhhhäähhh???

    Nimm doch einfach Variablen und speicher die Werte in eine INI oder so.
    Die Frage ist, wie willst du denn den Namen und den Pfad festlegen?
    Über eine GUI?


  • Hhhhäähhh???

    Nimm doch einfach Variablen und speicher die Werte in eine INI oder so.
    Die Frage ist, wie willst du denn den Namen und den Pfad festlegen?
    Über eine GUI?


    Ich bin doch noch ganz Neu in dieser AutoIT - Script - Programmier Welt. :wacko:

    Desswegen frage ich doch euch. :P
    okay mit einer ini kann man das machen ?
    und diese call ich dann einfach mit welchem befehl ?

    Ja, ich google nach der funktion mit ini.. is oke.. :D
    Danke für den Tipp. :!:

    Wer Rechtschreibfehler findet darf sie behalten. :D

  • Hab jetzt:

    oben:

    Spoiler anzeigen
    [autoit]

    Global $Guess = IniRead(@scriptDir&"\reset.ini", "zahl")
    Global $Tipps = IniRead(@scriptDir&"\reset.ini", "tipps")
    Global $Random = IniRead(@scriptDir&"\reset.ini", "random")

    [/autoit]

    und unten:

    Spoiler anzeigen
    [autoit]

    Case $Reset
    Local $Guess = IniRead(@scriptDir&"\reset.ini", "zahl")
    Local $Tipps = IniRead(@scriptDir&"\reset.ini", "tipps")
    Local $Random = IniRead(@scriptDir&"\reset.ini", "random")

    [/autoit]

    und in der ini steht es wiefolgt.

    Spoiler anzeigen

    zahl=0
    tipps=0
    random=Random(0,100,1)

    Funktioniert leider nicht.
    Und muss die .ini dann auch immer bei der .exe beiliegen?
    Wenn ja ist das keine Lösung die mir gefallen würde. :/

    Wer Rechtschreibfehler findet darf sie behalten. :D

  • Kein Plan, was du machen willst o. O
    Aber das was du machst ist falsch.
    Hilfe zu IniRead und den allgemeinen Aufbau einer INI anschauen.

    Um Missverständnisse zu vermeiden, mein Name rührt vom Sternenbild und nicht vom Shop her :D


    Rainbow Dash :rock:

    "Das, wobei unsere Berechnungen versagen, nennen wir Zufall." (Albert Einstein)

  • Kein Plan, was du machen willst o. O
    Aber das was du machst ist falsch.

    Okay, kein Problem ich versuchs genauer zu sagen.

    nochmal.. das ist das funktionierende komplette spiel:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $GUI = GUICreate("Ratespiel", 202, 178, 428, 314)
    $Tipp = GUICtrlCreateButton("Tipp", 8, 80, 91, 25)
    $Reset = GUICtrlCreateButton("Reset", 104, 80, 91, 25)
    $Text = GUICtrlCreateLabel("Rate eine Zahl zwischen 0 und 100", 8, 16, 188, 17, $SS_CENTER)
    $Result = GUICtrlCreateLabel("", 8, 48, 184, 17, $SS_CENTER)
    $Sub = GUICtrlCreateButton("- 1", 8, 112, 27, 25)
    $Add = GUICtrlCreateButton("+ 1", 168, 112, 27, 25)
    $Slider = GUICtrlCreateSlider(40, 112, 118, 21)
    $Value = GUICtrlCreateLabel("0", 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Sub10 = GUICtrlCreateButton("- 10", 8, 144, 27, 25)
    $Add10 = GUICtrlCreateButton("+ 10", 168, 144, 27, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Global $Random = Random(0,100,1)
    Global $Guess = 0
    Global $Tipps = 0

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg

    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Tipp
    $Tipps = $Tipps+1
    If $Guess = $Random Then
    $Result = GUICtrlCreateLabel("...", 8, 48, 184, 17, $SS_CENTER)
    sleep (500)
    $Result = GUICtrlCreateLabel("Mit "&$Tipps&" versuchen Gewonnen!", 8, 48, 184, 17, $SS_CENTER)
    EndIf
    If $Guess > $Random Then
    $Result = GUICtrlCreateLabel("...", 8, 48, 184, 17, $SS_CENTER)
    sleep (500)
    $Result = GUICtrlCreateLabel(".. weniger ..", 8, 48, 184, 17, $SS_CENTER)
    EndIf
    If $Guess < $Random Then
    $Result = GUICtrlCreateLabel("...", 8, 48, 184, 17, $SS_CENTER)
    sleep (500)
    $Result = GUICtrlCreateLabel(".. mehr ..", 8, 48, 184, 17, $SS_CENTER)
    EndIf

    Case $Slider
    $Guess = GUICtrlRead($Slider)
    $Value = GUICtrlCreateLabel(""&$Guess, 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")

    Case $Sub
    If $Guess < 1 Then
    $Guess = 1
    EndIf
    GUICtrlSetData($Slider, $Guess-1)
    $Value = GUICtrlCreateLabel(""&$Guess-1, 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Guess = $Guess-1

    Case $Add
    If $Guess > 99 Then
    $Guess = 99
    EndIf
    GUICtrlSetData($Slider, $Guess+1)
    $Value = GUICtrlCreateLabel(""&$Guess+1, 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Guess = $Guess+1

    Case $Sub10
    If $Guess < 10 Then
    $Guess = 10
    EndIf
    GUICtrlSetData($Slider, $Guess-10)
    $Value = GUICtrlCreateLabel(""&$Guess-10, 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Guess = $Guess-10

    Case $Add10
    If $Guess > 90 Then
    $Guess = 90
    EndIf
    GUICtrlSetData($Slider, $Guess+10)
    $Value = GUICtrlCreateLabel(""&$Guess+10, 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Guess = $Guess+10


    Case $Reset
    MsgBox(0,"Check Value Box","Guess ist = "&$Guess&@CRLF&"Random = "&$Random&@CRLF&"Slider = "&GUICtrlRead($Slider)) ;~ nur zu testzwecken.

    EndSwitch
    WEnd

    [/autoit]

    Und ich möchte nun dem "$Reset" Button.. die Ehre erteilen auch das zu tun nachdem er benannt wurde.
    Das Spiel soll einfach von neu Starten. einfach nochmal von vorne anfangen.. einfach "reset". :p

    Ich weiß nicht ob das mit der .ini wirklich der richtige Weg ist.
    So klein wie das Spiel ist sollte das doch nicht nötig sein oder?
    irre ich mich ? ?(

    Wer Rechtschreibfehler findet darf sie behalten. :D

  • Etwa so sollte es funktionieren... Setze einfach alle relevanten Werte wieder zurück.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $GUI = GUICreate("Ratespiel", 202, 178, 428, 314)
    $Tipp = GUICtrlCreateButton("Tipp", 8, 80, 91, 25)
    $Reset = GUICtrlCreateButton("Reset", 104, 80, 91, 25)
    $Text = GUICtrlCreateLabel("Rate eine Zahl zwischen 0 und 100", 8, 16, 188, 17, $SS_CENTER)
    $Result = GUICtrlCreateLabel("", 8, 48, 184, 17, $SS_CENTER)
    $Sub = GUICtrlCreateButton("- 1", 8, 112, 27, 25)
    $Add = GUICtrlCreateButton("+ 1", 168, 112, 27, 25)
    $Slider = GUICtrlCreateSlider(40, 112, 118, 21)
    $Value = GUICtrlCreateLabel("0", 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Sub10 = GUICtrlCreateButton("- 10", 8, 144, 27, 25)
    $Add10 = GUICtrlCreateButton("+ 10", 168, 144, 27, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Global $Random = Random(0,100,1)
    Global $Guess = 0
    Global $Tipps = 0

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg

    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Tipp
    $Tipps = $Tipps+1
    If $Guess = $Random Then
    $Result = GUICtrlCreateLabel("...", 8, 48, 184, 17, $SS_CENTER)
    sleep (500)
    $Result = GUICtrlCreateLabel("Mit "&$Tipps&" versuchen Gewonnen!", 8, 48, 184, 17, $SS_CENTER)
    EndIf
    If $Guess > $Random Then
    $Result = GUICtrlCreateLabel("...", 8, 48, 184, 17, $SS_CENTER)
    sleep (500)
    $Result = GUICtrlCreateLabel(".. weniger ..", 8, 48, 184, 17, $SS_CENTER)
    EndIf
    If $Guess < $Random Then
    $Result = GUICtrlCreateLabel("...", 8, 48, 184, 17, $SS_CENTER)
    sleep (500)
    $Result = GUICtrlCreateLabel(".. mehr ..", 8, 48, 184, 17, $SS_CENTER)
    EndIf

    Case $Slider
    $Guess = GUICtrlRead($Slider)
    $Value = GUICtrlCreateLabel(""&$Guess, 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")

    Case $Sub
    If $Guess < 1 Then
    $Guess = 1
    EndIf
    GUICtrlSetData($Slider, $Guess-1)
    $Value = GUICtrlCreateLabel(""&$Guess-1, 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Guess = $Guess-1

    Case $Add
    If $Guess > 99 Then
    $Guess = 99
    EndIf
    GUICtrlSetData($Slider, $Guess+1)
    $Value = GUICtrlCreateLabel(""&$Guess+1, 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Guess = $Guess+1

    Case $Sub10
    If $Guess < 10 Then
    $Guess = 10
    EndIf
    GUICtrlSetData($Slider, $Guess-10)
    $Value = GUICtrlCreateLabel(""&$Guess-10, 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Guess = $Guess-10

    Case $Add10
    If $Guess > 90 Then
    $Guess = 90
    EndIf
    GUICtrlSetData($Slider, $Guess+10)
    $Value = GUICtrlCreateLabel(""&$Guess+10, 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Guess = $Guess+10


    Case $Reset
    ;~ MsgBox(0,"Check Value Box","Guess ist = "&$Guess&@CRLF&"Random = "&$Random&@CRLF&"Slider = "&GUICtrlRead($Slider)) ;~ nur zu testzwecken.
    $Random = Random(0,100,1)
    $Guess = 0
    $Tipps = 0
    GUICtrlSetData($Result, "")
    GUICtrlSetData($Value, 0)
    GUICtrlSetData($Slider, 0)
    EndSwitch
    WEnd

    [/autoit]

    Habs nur überflogen, sehe aber, dass du u. a. die Controls $Result und $Value immer neu erstellst. Benutz dafür lieber GUICtrlSetData.

    LG

  • Kann es grad nicht testen, aber du musst doch nur alle inputs und variablen wieder leeren?
    Und ne neue Zufallszahl berechnen lassen.

    Oder liege ich da falsch?

    //Edit: Jo genau

    Um Missverständnisse zu vermeiden, mein Name rührt vom Sternenbild und nicht vom Shop her :D


    Rainbow Dash :rock:

    "Das, wobei unsere Berechnungen versagen, nennen wir Zufall." (Albert Einstein)


  • Etwa so sollte es funktionieren... Setze einfach alle relevanten Werte wieder zurück.
    Habs nur überflogen, sehe aber, dass du u. a. die Controls $Result und $Value immer neu erstellst. Benutz dafür lieber GUICtrlSetData.

    LG

    Danke!
    Auf die Idee bin ich so garnicht gekommen. :pinch:

    Vielen Dank :)

    Ps: Das mit den GuiCtrlSetData guck ich mir nochmal an. Dankeschööön :)


    // Edit:

    so nun hab ich alles mit GuiCtrlSetData geschrieben.
    alles bugfrei und bereit zum spielen :P

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $GUI = GUICreate("Ratespiel", 202, 178, 428, 314)
    $Tipp = GUICtrlCreateButton("Tipp", 8, 80, 91, 25)
    $Reset = GUICtrlCreateButton("Reset", 104, 80, 91, 25)
    $Text = GUICtrlCreateLabel("Rate eine Zahl zwischen 0 und 100", 8, 16, 188, 17, $SS_CENTER)
    $Result = GUICtrlCreateLabel("", 8, 48, 184, 17, $SS_CENTER)
    $Sub = GUICtrlCreateButton("- 1", 8, 112, 27, 25)
    $Add = GUICtrlCreateButton("+ 1", 168, 112, 27, 25)
    $Slider = GUICtrlCreateSlider(40, 112, 118, 21)
    $Value = GUICtrlCreateLabel("0", 48, 144, 102, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $Sub10 = GUICtrlCreateButton("- 10", 8, 144, 27, 25)
    $Add10 = GUICtrlCreateButton("+ 10", 168, 144, 27, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Global $Random = Random(0,100,1)
    Global $Guess = 0
    Global $Tipps = 0

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg

    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Tipp
    $Tipps = $Tipps+1
    If $Guess = $Random Then
    GUICtrlSetData($Result, "...")
    sleep (500)
    GUICtrlSetData($Result, "Mit "&$Tipps&" versuchen Gewonnen!")
    EndIf
    If $Guess > $Random Then
    GUICtrlSetData($Result, "...")
    sleep (500)
    GUICtrlSetData($Result, ".. weniger ..")
    EndIf
    If $Guess < $Random Then
    GUICtrlSetData($Result, "...")
    sleep (500)
    GUICtrlSetData($Result, ".. mehr ..")
    EndIf

    Case $Slider
    $Guess = GUICtrlRead($Slider)
    GUICtrlSetData($Value, $Guess)

    Case $Sub
    If $Guess < 1 Then
    $Guess = 1
    EndIf
    GUICtrlSetData($Slider, $Guess-1)
    GUICtrlSetData($Value, $Guess-1)
    $Guess = $Guess-1

    Case $Add
    If $Guess > 99 Then
    $Guess = 99
    EndIf
    GUICtrlSetData($Slider, $Guess+1)
    GUICtrlSetData($Value, $Guess+1)
    $Guess = $Guess+1

    Case $Sub10
    If $Guess < 10 Then
    $Guess = 10
    EndIf
    GUICtrlSetData($Slider, $Guess-10)
    GUICtrlSetData($Value, $Guess-10)
    $Guess = $Guess-10

    Case $Add10
    If $Guess > 90 Then
    $Guess = 90
    EndIf
    GUICtrlSetData($Slider, $Guess+10)
    GUICtrlSetData($Value, $Guess+10)
    $Guess = $Guess+10


    Case $Reset
    ;~ MsgBox(0,"Check Value Box","Guess = "&$Guess&@CRLF&"Random = "&$Random&@CRLF&"Slider = "&GUICtrlRead($Slider))
    $Random = Random(0,100,1)
    $Guess = 0
    $Tipps = 0
    GUICtrlSetData($Result, "")
    GUICtrlSetData($Value, 0)
    GUICtrlSetData($Slider, 0)
    EndSwitch
    WEnd

    [/autoit]


    Danke nochmal ... :)

    Wer Rechtschreibfehler findet darf sie behalten. :D

    Einmal editiert, zuletzt von ThirtySix (5. Juli 2013 um 18:08)

  • Variablen immer am Anfang nach den Includes deklarieren. Und wenn dann alle, auch die von der GUI.
    Und ... Versuchen schreibt man groß und gewonnen klein.

    Ansonsten schön für den Anfang.

  • Hi,
    beim Betrachten des Scriptcodes ich hatte gerade ein deja vu^^
    Das hat mich ca.35 Jahre in die Vergangenheit zurückkatapultiert, denn mit dieser Art "Programme" fängt alles an :thumbup:
    Ohne GUI naatürlich, damals war sicher der Begriff noch nicht erfunden, obwohl Apple schon 5 Jahre später (1983) die LISA herausbrachte.

    Wenn man soweit ist, dass das Programm läuft, dann sollte der Code auch eine "Seele" bekommen! Gerade Kommentare haben sicherlich für Anfänger mehr Wert als einige hingeworfene Scriptzeilen.....
    Der Computer wurde ja deswegen erfunden, um immerwiederkehrende Abläufe zusammenzufassen.
    Beim Schreiben von Code sollte man sich das auch verinnerlichen, das macht den Code lesbarer.
    Ich würde also versuchen, GLEICHE oder sehr ähnliche Scriptzeilen zusammenzufassen...
    Das mehrfach auftretende

    [autoit]

    GUICtrlSetData($Result, "...")
    sleep (500)

    [/autoit]

    könnte man aus der Schleife herausholen.
    das führt dann auch dazu, die IF-Zeile zu einem Einzeiler machen zu können

    [autoit]

    Case $Tipp
    $Tipps = $Tipps+1
    If $Guess = $Random Then GUICtrlSetData($Result, "Mit "&$Tipps&" versuchen Gewonnen!")

    [/autoit]

    auch das

    [autoit]

    GUICtrlSetData($Slider, $Guess+1)
    GUICtrlSetData($Value, $Guess+1)
    $Guess = $Guess+1

    [/autoit]

    kommt öfter vor, nur die Ziffer ändert sich, könnte also von einer Variable ersetzt werden.

    Und vielleicht gibt es sogar eine Möglichkeit der Berechnung der "IF $Guess"-Abfragen....

    An diesem Stückchen Script gibt es reichlich Potenzial zu lernen und sein know-How zu verbessern! :thumbup:

  • Hi,
    beim Betrachten des Scriptcodes ich hatte gerade ein deja vu^^
    [...]
    An diesem Stückchen Script gibt es reichlich Potenzial zu lernen und sein know-How zu verbessern! :thumbup:

    Hey Andy,
    erstmal'n fettes Danke das du dich so mit meinem "babyscript" auseinandergesetzt hast :!:
    Ich war ja schon super Stolz das ich das kleine Script da "verwirklicken" konnte! :D
    Wenn ich überlege das ich AutoIT vor 3 tagen nichtmal kannte..

    Hab vor 2 wochen just4fun mit Batch angefangen
    jedoch ist das halt sehr begrenzt mit möglichkeiten.

    Ich werd da aufjedenfall nochmal drüberschauen.
    Gerade nach deiner netten Ansprache :thumbup:

    Allgemein find ich das Forum hier klasse!
    Großes Lob für euch ALLLLE!!!

    You Rockx :rock: - :D

    Wer Rechtschreibfehler findet darf sie behalten. :D

  • Das mit dem zurücksetzen ist schonmal eine gute Möglichkeit, aber wenn du es so wie ursprünglich machen willst, kannst du auch @ScriptFullPath (Ein Makro, welches den Pfad, deines laufenden Scripts enthält, also völlig unabhängig wo sich die Datei befindet) verwenden:

    [autoit]


    Case $idReset
    Run(@ScriptFullPath)
    Exit

    [/autoit]

    Außerdem kannst du mal dieses Tutorial durchlesen, das hat mir am Anfang sehr geholfen, selber den Überblick zu erhalten und zu bekommen: [Tutorial] Sauber Programmieren
    Dann weißt du auch, warum ich hier $idReset schreibe ;)

    Da es hier doch einige falsch machen:

    Zitat von einem User dieses Forums

    Die Standard-Standart eines Flamingos ist einbeinig. ;)

    Einmal editiert, zuletzt von Joriktos (6. Juli 2013 um 12:16)


  • Dass mit dem zurücksetzen ist schonmal eine gute Möglichkeit, aber wenn du es so wie ursprünglich machen willst, kannst du auch @ScriptFullPath (Ein Makro, welches den Pfad, deines laufenden Scripts enthält, also völlig unabhängig wo sich die Datei befindet) verwenden:
    [...]
    Außerdem kannst du mal dieses Tutorial durchlesen, das hat mir am Anfang sehr geholfen, selber den Überblick zu erhalten und zu bekommen: [Tutorial] Sauber Programmieren
    Dann weißt du auch, warum ich hier $idReset schreibe ;)


    Danke... :thumbup:

    Ich fang sofort an mit lesen! :P

    Wer Rechtschreibfehler findet darf sie behalten. :D

  • Hi,

    Zitat

    erstmal'n fettes Danke das du dich so mit meinem "babyscript" auseinandergesetzt hast

    Du gibst dir Mühe, bist nicht lernresistent, setzt die Tips um und bist in der Lage dir selbstständig Wissen anzueignen! Weiterhin kannst du dein Problem mit sprachlichen Mitteln verdeutlichen und zeigen, was du bis dahin versucht hast!
    Das unterscheidet dich von imho 90% der neu hier im Forum neu eintreffenden User. Und genau aus diesem Grund bekommst du auch qualifizierte Antworten! Und die "anderen" eben nicht...c´est la vie...
    Und btw., "Babyscripte" gibt es nicht! Die meisten "Profis" lösen tägliche Aufgaben in einigen Zeilen Code, DAS ist die Kunst!

  • Also das stimme ich Andy auch voll und ganz zu. Selten des jemand so vorbildlich wie du bist. :thumbup:
    Mein Vorschlag zu dem Spiel, würde so aussehen.

    Spoiler anzeigen
    [autoit]

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

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

    Global $cTip, $cNewGame, $cResult, $cResult, $cSub, $cAdd, $cSlider, $cValue, $cSub10, $cAdd10
    Global $iRandomTip = Random(0, 100, 1), $iCountTips = 0, $iTip = 0, $iMsg

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

    GUICreate("Ratespiel", 200, 180)
    GUICtrlCreateLabel("Rate eine Zahl zwischen 0 und 100.", 0, 15, 200, 17, $SS_CENTER)
    $cSub = GUICtrlCreateButton("- 1", 5, 40, 30, 25)
    $cAdd = GUICtrlCreateButton("+ 1", 165, 40, 30, 25)
    $cSlider = GUICtrlCreateSlider(40, 40, 120, 30)
    $cValue = GUICtrlCreateLabel("0", 50, 75, 100, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    $cSub10 = GUICtrlCreateButton("- 10", 5, 70, 30, 25)
    $cAdd10 = GUICtrlCreateButton("+ 10", 165, 70, 30, 25)
    $cTip = GUICtrlCreateButton("Tipp abgeben", 10, 110, 80, 25)
    $cNewGame = GUICtrlCreateButton("Neues Spiel", 110, 110, 80, 25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $cResult = GUICtrlCreateLabel("", 0, 150, 200, 17, $SS_CENTER)
    GUISetState()

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

    While 1
    $iMsg = GUIGetMsg()
    Switch $iMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cTip
    GUICtrlSetState($cNewGame, $GUI_ENABLE)
    $iCountTips += 1
    GUICtrlSetData($cResult, "...")
    Sleep(500)
    Select
    Case $iTip = $iRandomTip
    GUICtrlSetData($cResult, "Mit " & $iCountTips & " Versuchen gewonnen!")
    Case $iTip > $iRandomTip
    GUICtrlSetData($cResult, "... weniger ...")
    Case $iTip < $iRandomTip
    GUICtrlSetData($cResult, "... mehr ...")
    EndSelect
    Case $cSlider
    $iTip = GUICtrlRead($cSlider)
    GUICtrlSetData($cValue, $iTip)
    Case $cSub, $cAdd, $cSub10, $cAdd10
    Switch $iMsg
    Case $cSub
    $iTip -= 1
    Case $cAdd
    $iTip += 1
    Case $cSub10
    $iTip -= 10
    Case $cAdd10
    $iTip += 10
    EndSwitch
    If $iTip < 0 Then $iTip = 0
    If $iTip > 100 Then $iTip = 100
    GUICtrlSetData($cSlider, $iTip)
    GUICtrlSetData($cValue, $iTip)
    Case $cNewGame
    GUICtrlSetState($cNewGame, $GUI_DISABLE)
    $iRandomTip = Random(0, 100, 1)
    $iTip = 0
    $iCountTips = 0
    GUICtrlSetData($cResult, "")
    GUICtrlSetData($cValue, 0)
    GUICtrlSetData($cSlider, 0)
    EndSwitch
    WEnd

    [/autoit]

  • Also das stimme ich Andy auch voll und ganz zu. Selten des jemand so vorbildlich wie du bist. :thumbup:
    Mein Vorschlag zu dem Spiel, würde so aussehen.
    [...]

    Das is ja mal klasse o.o ...
    Super auch mit dem ausgeblendeten Button für "Neues Spiel" :thumbup:

    Hab nochnicht alles verstanden wie es funktioniert.
    Aber daraus werd ich noch lernen ;)

    Vielen Dank


    Soviel Lob und Hilfe wie ich hier ernte... 8|
    Ich fühl mich richtig wohl bei euch.. :rolleyes: :D

    Wer Rechtschreibfehler findet darf sie behalten. :D