• Hey :) ,

    ich hab hier noch ein zahlen rate spiel :) .

    hab ich ma vor einiger zeit gemacht.


    Hier version 1.0

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>

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

    $Form = GUICreate('zahlen raten',220,210,-1,-1)
    $input = guictrlcreateinput('zahl', 55, 87, 107, 19 , $ES_NUMBER)
    $button = guictrlcreatebutton('raten', 60, 140, 100, 30)
    $button2 = guictrlcreatebutton('neu', 60, 170, 100, 30)
    $label = GUICtrlCreateLabel ("Errate die Zahl" ,75,20)
    $label1 = GUICtrlCreateLabel ("zwischen 0 und 1000" ,60,60)
    GUISetState(@SW_SHOW, $Form)
    $zuege = 0
    $secret = Random (0 , 1000 , 1)
    $von=0
    $bis=0
    $blub = 0
    While 1
    If $blub == 1 Then
    GUICtrlDelete ($label1)
    $label1 = GUICtrlCreateLabel ("zwischen " & $von & " und " & $bis,60,60)
    $blub = 0
    EndIf
    $msg = GUIGetMsg($Form)
    Select
    Case $msg=$GUI_EVENT_CLOSE
    exit
    Case $msg=$button
    $zuege += 1
    $zahl = GUICtrlRead($input)
    If $secret == $zahl Then
    MsgBox ( 4096 ,"gewonnen!!!" , "gewonnen!!!" & @CRLF & "du hast " & $zuege & " züge gebraucht" )
    ElseIf $secret < $zahl then
    MsgBox ( 4096 ,"zu groß" , "zu groß!!!" )
    ElseIf $secret > $zahl then
    MsgBox ( 4096 ,"zu klein" , "zu klein!!!" )
    EndIf

    Case $msg=$button2
    $secret = Random ($von , $bis , 1)
    $zuege = 0
    $Form1 = GUICreate('zahlen raten',220,210,-1,-1)
    $input1 = guictrlcreateinput('von', 30, 50, 60, 20 ,$ES_NUMBER)
    $input2 = guictrlcreateinput('bis', 130, 50, 60, 20 , $ES_NUMBER)
    $button3 = guictrlcreatebutton('neu', 60, 145, 94, 26)
    GUISetState(@SW_SHOW, $Form1)
    $blub = 0
    While 2
    $msg1 = GUIGetMsg($Form1)
    Select
    Case $msg1=$GUI_EVENT_CLOSE
    exit
    Case $msg1=$button3
    $von = GUICtrlRead($input1)
    $bis = GUICtrlRead($input2)
    If $von < $bis Then
    $secret = Random ($von , $bis , 1)
    $zuege = 0
    GUIDelete ($Form1)
    $blub = 1
    exitloop
    ElseIf $von == $bis Then
    MsgBox (4096 , "Warnung" , "die zahlen müssen underschiedlich sein")
    ElseIf $von > $bis Then
    MsgBox (4096 , "Warnung" , "die erste zahl muss kleiner als die zweite sein")
    EndIf
    Endselect
    WEnd
    Endselect
    WEnd

    [/autoit]

    Neue version 1.1 :)

    neu: mindestens 100 zahlen unterschied

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>

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

    $Form = GUICreate('zahlen raten',220,210,-1,-1)
    $input = guictrlcreateinput('zahl', 55, 87, 107, 19 , $ES_NUMBER)
    $button = guictrlcreatebutton('raten', 60, 140, 100, 30)
    $button2 = guictrlcreatebutton('neu', 60, 170, 100, 30)
    $label = GUICtrlCreateLabel ("Errate die Zahl" ,75,20)
    $label1 = GUICtrlCreateLabel ("zwischen 0 und 1000" ,60,60)
    GUISetState(@SW_SHOW, $Form)
    $zuege = 0
    $secret = Random (0 , 1000 , 1)
    $von=0
    $bis=0
    $blub = 0
    While 1
    If $blub == 1 Then
    GUICtrlDelete ($label1)
    $label1 = GUICtrlCreateLabel ("zwischen " & $von & " und " & $bis,60,60)
    $blub = 0
    EndIf
    $msg = GUIGetMsg($Form)
    Select
    Case $msg=$GUI_EVENT_CLOSE
    exit
    Case $msg=$button
    $zuege += 1
    $zahl = GUICtrlRead($input)
    If $secret == $zahl Then
    MsgBox ( 4096 ,"gewonnen!!!" , "gewonnen!!!" & @CRLF & "du hast " & $zuege & " züge gebraucht" )
    ElseIf $secret < $zahl then
    MsgBox ( 4096 ,"zu groß" , "zu groß!!!" )
    ElseIf $secret > $zahl then
    MsgBox ( 4096 ,"zu klein" , "zu klein!!!" )
    EndIf

    Case $msg=$button2
    $secret = Random ($von , $bis , 1)
    $zuege = 0
    $Form1 = GUICreate('zahlen raten',220,210,-1,-1)
    $input1 = guictrlcreateinput('von', 30, 50, 60, 20 ,$ES_NUMBER)
    $input2 = guictrlcreateinput('bis', 130, 50, 60, 20 , $ES_NUMBER)
    $button3 = guictrlcreatebutton('neu', 60, 145, 94, 26)
    GUISetState(@SW_SHOW, $Form1)
    $blub = 0
    While 2
    $msg1 = GUIGetMsg($Form1)
    Select
    Case $msg1=$GUI_EVENT_CLOSE
    exit
    Case $msg1=$button3
    $von = GUICtrlRead($input1)
    $bis = GUICtrlRead($input2)
    $bis -= $von
    If $bis <= 100 Then
    MsgBox (4096 , "Warnung" , "müssen mehr als 100 Zahlen unterschied sein" & @CRLF & "oder sie müssen die zahlen vertauschen")
    $von = GUICtrlRead($input1)
    $bis = GUICtrlRead($input2)
    Elseif $von < $bis Then
    $von = GUICtrlRead($input1)
    $bis = GUICtrlRead($input2)
    $secret = Random ($von , $bis , 1)
    $zuege = 0
    GUIDelete ($Form1)
    $blub = 1
    exitloop
    EndIf
    Endselect
    WEnd
    Endselect
    WEnd

    [/autoit]

    neu version 1.2
    autoit.de/wcf/attachment/11710/
    neu; mit enter bestätigern ist jetzt möglich und ein bischen überlichtilicher

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    HotKeySet ("{ENTER}", "auswerten")
    $Form = GUICreate('zahlen raten',220,250,-1,-1)
    $input = guictrlcreateinput('zahl', 55, 100, 107, 19 , $ES_NUMBER)
    $button = guictrlcreatebutton('raten', 60, 140, 100, 30)
    $button2 = guictrlcreatebutton('neu', 60, 170, 100, 30)
    $label = GUICtrlCreateLabel ("Errate die Zahl" ,75,20)
    $label1 = GUICtrlCreateLabel ("zwischen 0 und 1000" ,60,40)
    $label2 = GUICtrlCreateLabel ("" ,60,60)
    GUISetState(@SW_SHOW, $Form)
    $schonmall = -1
    $zahl = -2
    $zuege = 0
    $secret = Random (0 , 1000 , 1)
    $von=0
    $bis=0
    $blub = 0
    While 1
    If $blub == 1 Then
    GUICtrlDelete ($label1)
    $label1 = GUICtrlCreateLabel ("zwischen " & $von & " und " & $bis,60,40)
    $blub = 0
    EndIf
    $msg = GUIGetMsg($Form)
    Select
    Case $msg=$GUI_EVENT_CLOSE
    exit
    Case $msg=$button
    auswerten ()
    Case $msg=$button2
    neu()
    Endselect
    WEnd

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

    Func neu ()
    $secret = Random ($von , $bis , 1)
    $zuege = 0
    $Form1 = GUICreate('zahlen raten',220,210,-1,-1)
    $input1 = guictrlcreateinput('von', 30, 50, 60, 20 ,$ES_NUMBER)
    $input2 = guictrlcreateinput('bis', 130, 50, 60, 20 , $ES_NUMBER)
    $button3 = guictrlcreatebutton('neu', 60, 145, 94, 26)
    GUISetState(@SW_SHOW, $Form1)
    $blub = 0
    While 2
    $msg1 = GUIGetMsg($Form1)
    Select
    Case $msg1=$GUI_EVENT_CLOSE
    exit
    Case $msg1=$button3
    $von = GUICtrlRead($input1)
    $bis = GUICtrlRead($input2)
    $bis -= $von
    If $bis <= 99 Then
    MsgBox (4096 , "Warnung" , "müssen mehr als 100 Zahlen unterschied sein" & @CRLF & "oder sie müssen die zahlen vertauschen")
    $von = GUICtrlRead($input1)
    $bis = GUICtrlRead($input2)
    Elseif $von < $bis Then
    $von = GUICtrlRead($input1)
    $bis = GUICtrlRead($input2)
    $secret = Random ($von , $bis , 1)
    $zuege = 0
    GUIDelete ($Form1)
    $blub = 1
    exitloop
    EndIf
    Endselect
    WEnd
    EndFunc

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

    Func auswerten ()
    $zahl = GUICtrlRead($input)
    If $zahl == $schonmall Then
    MsgBox ( 4096 ,"schonmall" , "du hast die "& $zahl & " das letzte mal schon eingegeben" )
    Else
    If $secret == $zahl Then
    $zuege += 1
    MsgBox ( 4096 ,"gewonnen!!!" , "gewonnen!!!" & @CRLF & "du hast " & $zuege & " züge gebraucht" )
    ElseIf $secret < $zahl then
    $zuege += 1
    GUICtrlDelete ($label2)
    $label2 = GUICtrlCreateLabel ("zu groß" ,80,60,100)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
    $schonmall = $zahl
    ElseIf $secret > $zahl then
    $zuege += 1
    GUICtrlDelete ($label2)
    $label2 = GUICtrlCreateLabel ("zu klein" ,80,60,100)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
    $schonmall = $zahl
    EndIf
    EndIf
    EndFunc

    [/autoit]


    vllt hab ihr ja noch ein paar tipps für mich :)

    Gruß Nitrama

  • ja du solltest vlt noch ne abfrage machen da man nicht so en quatsch wie von 1-2 raten machen kann ;)

  • Eigentlich ein gutes Spiel.
    Ich würde aber ein paar Sachen verändern:

    - Man sollte den Rahmen der Zahlen selber bestimmen können: d.h eine Zahl zwischen 1 - 50 oder 1 - 200
    - Die MsgBox mit immer zu Klein und zu groß ist auf die Dauer lästig, du könntest ja den Text mit einem Label anzeigen lassen
    - Für mich optimal: nicht immer auf den Raten-Button klicken. Wenn ich das schon 10 mal gemacht habe, nervt das wenn ich immer die maus zum Button führen muss, und danach wieder hoch zum Input-Feld, du könntest es ja so machen, dass man die Zahl eingibt, Eingabe drückt, dann kommt: zu Groß bzw. zu Klein und dann kann man die neue Zahl eingeben. So würde es mir persönlich noch mehr Spaß machen :)

    Das wars schon von mir aus. Viel Spaß noch :thumbup: