Würfelspiel scripten

  • Ich habe vor ein Würfelspiel zu machen. Ich habe schon ein bisschen geschieben aber es klappt nicht so wie ich will. Wenn beide die gleiche Zahl haben kommt dass man verloren hat und so.

    Ich weiß es ist bestimmt falsch oder zu umständlich oder so. Sagt am besten wie ich es machen sollte.
    [spoiler]

    [autoit]


    Dim $spielname = "Würfelspiel"
    Dim $geld
    Dim $einsatz
    Dim $wuerfel1
    Dim $wuerfel2

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

    $geld = 10
    einsatz()

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

    Func einsatz()
    While 1
    $einsatz = InputBox($spielname,"Wieviel Geld willst du setzten? Du hast " & $geld & " Euro")
    If $einsatz = "" Then Exit
    If $einsatz > $geld Then
    MsgBox(0,$spielname,"Du hast nicht so viel Geld!")
    Else
    MsgBox(0,$spielname,"Drücke nun auf OK um zu würfeln!")
    $wuerfel1 = Random(1,6,1)
    $wuerfel2 = Random(1,6,1)
    MsgBox(0,$spielname,"Du würfelst eine " & $wuerfel1 & "!")
    MsgBox(0,$spielname,"Dein Gegner würfelt eine " & $wuerfel2 & "!")
    If $wuerfel1 > $wuerfel2 Then
    $geld += $einsatz
    MsgBox(0,$spielname,"Glückwunsch! Du hast gewonnen! Du hast nun " & $geld & " Euro")
    ElseIf $wuerfel2 > $wuerfel1 Then
    $geld -= $einsatz
    MsgBox(0,$spielname,"Schade! Du hast verloren! Du hast nun " & $geld & " Euro")
    Else
    MsgBox(0,$spielname,"Gleichstand! Du hast immernoch " & $geld & " Euro")
    EndIf
    EndIf
    If $geld = 0 Then
    MsgBox(0,$spielname,"Du hast leider verloren!")
    Exit
    EndIf
    WEnd
    EndFunc

    [/autoit]


    [/spoiler

    3 Mal editiert, zuletzt von MOZ (10. November 2008 um 22:28)

  • also was mir aufgefallen ist das du in zeile 22 und 23 immer $würfel1 benuzt... er zeigt immer gleichstand an aba in wirklichkeit hast du verloren oder gewonnen... also das is mir jetzt so schnell aufgefalllen... bin auch neu in autoit^^

  • Oh stimmt is mir garnicht aufgefallen. Okay ich versuchs so jetzt mal. Danke
    EDIT: hab das script geupdatet wie ichs gerade habe
    okay so gehts mal für den anfang^^

  • Du solltest auch nicht die Funktion in der Funktion aufrufen.
    So geht's. Man kann jetzt sogar das Programm beenden ;)

    [autoit]

    Dim $spielname = "Game"
    Dim $geld
    Dim $einsatz
    Dim $wuerfel1
    Dim $wuerfel2

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

    MsgBox(0,$spielname,"Hallo!")
    $geld = 10
    einsatz()

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

    Func einsatz()
    While 1
    $einsatz = InputBox($spielname,"Wieviel Geld willst du setzten? Du hast " & $geld & " Euro")
    If $einsatz = "" Then Exit
    If $einsatz > $geld Then
    MsgBox(0,$spielname,"Du hast nicht so viel Geld!")
    Else
    MsgBox(0,$spielname,"Drücke nun auf OK um zu würfeln!")
    $wuerfel1 = Random(1,6,1)
    $wuerfel2 = Random(1,6,1)
    MsgBox(0,$spielname,"Du würfelst eine " & $wuerfel1 & "!")
    MsgBox(0,$spielname,"Dein Gegner würfelt eine " & $wuerfel2 & "!")
    If $wuerfel1 > $wuerfel2 Then
    $geld += $einsatz
    MsgBox(0,$spielname,"Glückwunsch! Du hast gewonnen! Du hast nun " & $geld & " Euro")
    ElseIf $wuerfel2 > $wuerfel1 Then
    $geld -= $einsatz
    MsgBox(0,$spielname,"Schade! Du hast verloren! Du hast nun " & $geld & " Euro")
    Else
    MsgBox(0,$spielname,"Gleichstand! Du hast immernoch " & $geld & " Euro")
    EndIf
    EndIf
    WEnd
    EndFunc

    [/autoit]
  • joa... funzt bei mir auch... :) willste nich ma mit dem gui rumspielen? das ist nich so "msgbox-sound" belastend ... immer dieses boing^^

  • hmm jo das hatte ich auch vor
    nur das mit gui versteh ich noch nicht so ganz
    ich versuchs mal
    kannst du mal so grob schreiben wie das dann aussehen sollte?

  • Das Spiel hört garnicht auf,wenn man nurnoch 0 Euro hat.... :rolleyes:
    Wenn ich dann 0 Euro setze,und ich gewinne,bekomme ich ganze 0 Euro dazu.... unglaublich :thumbup:

    Ne,im Ernst: Ne kleine If-Abfrage hilft dem Entgegen.

    SOnst würde eine Highscorefunktion sich noch gut machen :thumbup:

    Zitat

    Programmieren ist so lange lustig bis ein Fehler auftritt!


    ~ Dankeschön

  • Jupp die If abfrage hab ich bei mir schon gemacht ( ich mach sie mal noch in den 1. post)
    Ich versuche gerde das in ner GUI zu machen aber irgendwie kapier ichs nochnicht. das hab ich bis jetzt.( is nicht alles und es is bestimmt falsch)
    macht vorschläge wie es besser wäre

    [autoit]

    Dim $spielname = "Würfelspiel"
    Dim $geld
    Dim $einsatz
    Dim $wuerfel1
    Dim $wuerfel2

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

    $geld = 10
    einsatz()

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

    Func einsatz()
    GUICreate($spielname)
    GUICtrlCreateLabel("Wieviel Geld willst du setzen?",10,10)
    $einsatz = GUICtrlCreateInput("",10,30)
    GUICtrlCreateLabel($einsatz,10,50)
    GUISetState (@SW_SHOW)
    While 1

    Sleep(10)
    WEnd
    EndFunc

    [/autoit]
  • Hatte beim ersten gui-skript auch Probleme,daher hier eine Idee von mir:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Dim $spielname = "Würfelspiel"
    Dim $geld
    Dim $einsatz
    Dim $wuerfel1
    Dim $wuerfel2

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

    $geld = 10
    einsatz()

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

    Func einsatz()
    GUICreate($spielname,200,100)
    GUICtrlCreateLabel("Wieviel Geld willst du setzen?",10,10)
    $input = GUICtrlCreateInput("",10,30)
    GUICtrlCreateLabel("Büdget:" & $geld & " Euro",10,70)
    $button = GUICtrlCreateButton("Wetten",140,70,50,25)
    GUISetState (@SW_SHOW)
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $button ;button wird gedrückt
    $einsatz = GUICtrlRead($input)
    weiter() ;fortfahren
    Case $msg = $GUI_EVENT_CLOSE ;fenster geschlossen
    Exit
    EndSelect
    WEnd
    EndFunc

    [/autoit]
    Zitat

    Programmieren ist so lange lustig bis ein Fehler auftritt!


    ~ Dankeschön

  • hab ma was schönes gebastelt :)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Dim $spielname = "Game"
    Dim $geld = 5
    Dim $einsatz
    Dim $wuerfel1
    Dim $wuerfel2

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

    $Form2 = GUICreate("Form2", 172, 220, 303, 219)
    $Button1 = GUICtrlCreateButton("Würfeln", 48, 156, 75, 25, 0)
    $Input1 = GUICtrlCreateInput("1", 8, 104, 41, 21, BitOR($ES_CENTER,$ES_NUMBER))
    $Label1 = GUICtrlCreateLabel("1", 24, 32, 45, 45, BitOR($SS_CENTER,$SS_SUNKEN))
    GUICtrlSetFont(-1, 30, 800, 0)
    $Label2 = GUICtrlCreateLabel("1", 106, 32, 45, 45, BitOR($SS_CENTER,$SS_SUNKEN))
    GUICtrlSetFont(-1, 30, 800, 0)
    $Label3 = GUICtrlCreateLabel("Du", 23, 8, 47, 20, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0)
    $Label4 = GUICtrlCreateLabel("Computer", 96, 8, 70, 20)
    GUICtrlSetFont(-1, 10, 800, 0)
    $Label5 = GUICtrlCreateLabel("Du hast " & $geld & " Euro", 24, 80, 124, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0)
    $Label7 = GUICtrlCreateLabel("", 24, 130, 124, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0)
    $Button2 = GUICtrlCreateButton("Neustart", 8, 188, 75, 25, 0)
    $Button3 = GUICtrlCreateButton("Beenden", 88, 188, 75, 25, 0)
    $Label6 = GUICtrlCreateLabel("Dein Einsatz", 56, 106, 95, 17)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)

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

    Func _Neustart()
    $geld = 5
    GUICtrlSetData ( $Label1, "1")
    GUICtrlSetData ( $Label2, "1")
    GUICtrlSetData ( $Label5, "Du hast " & $geld & " Euro")
    GUICtrlSetData ( $Label7, "")
    EndFunc

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $einsatz = GUICtrlRead($Input1)
    If $einsatz = "" Then
    MsgBox(0,$spielname,"Du musst einen einsatz bestimmen!")
    ElseIf $einsatz > $geld Then
    MsgBox(0,$spielname,"Du hast nicht so viel Geld!")
    Else
    $wuerfel1 = Random(1,6,1)
    $wuerfel2 = Random(1,6,1)
    GUICtrlSetData ( $Label1, $wuerfel1)
    GUICtrlSetData ( $Label2, $wuerfel2)
    If $wuerfel1 > $wuerfel2 Then
    $geld = $geld + $einsatz
    GUICtrlSetColor($Label7, 0x00FF00)
    GUICtrlSetData ($Label7, $einsatz &" Euro gewonnen!")
    ElseIf $wuerfel2 > $wuerfel1 Then
    $geld = $geld - $einsatz
    GUICtrlSetColor($Label7, 0xFF0000)
    GUICtrlSetData ($Label7, $einsatz &" Euro verloren!")
    Else
    GUICtrlSetColor($Label7, 0x0000FF)
    GUICtrlSetData ($Label7, "Gleichstand")
    EndIf
    EndIf
    GUICtrlSetData ( $Label5, "Du hast " & $geld & " Euro")
    If $geld = 0 Then
    MsgBox(0,$spielname,"Schade! Du hast alles verspielt!")
    _Neustart()
    EndIf
    Case $Button2
    _Neustart()
    Case $Button3
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • danke für die antworten
    @ sir-gunny

    Bei deinem Script kommt bei mir ein Error:

    Code
    ==> Variable used without being declared.:
    $Input1 = GUICtrlCreateInput("1", 8, 104, 41, 21, BitOR($ES_CENTER,$ES_NUMBER))
    $Input1 = GUICtrlCreateInput("1", 8, 104, 41, 21, BitOR(^ ERROR
    >Exit code: 1	Time: 0.433
  • Hab noch mal ne "Würfelsimulation" reingebaut... ganz witzig eigendlich :D

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Dim $spielname = "Würfelspiel"
    Dim $geld = 5
    Dim $einsatz
    Dim $wuerfel1
    Dim $wuerfel2

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

    $Form2 = GUICreate("Würfelspiel", 173, 232, 304, 220)
    $Button1 = GUICtrlCreateButton("Würfeln", 48, 170, 75, 25)
    $Input1 = GUICtrlCreateInput("1", 8, 104, 41, 21, BitOR($ES_CENTER,$ES_NUMBER))
    $Label1 = GUICtrlCreateLabel("1", 24, 32, 45, 45, BitOR($SS_CENTER,$SS_SUNKEN))
    GUICtrlSetFont(-1, 30, 800, 0)
    $Label2 = GUICtrlCreateLabel("1", 106, 32, 45, 45, BitOR($SS_CENTER,$SS_SUNKEN))
    GUICtrlSetFont(-1, 30, 800, 0)
    $Label3 = GUICtrlCreateLabel("Du", 23, 8, 47, 20, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0)
    $Label4 = GUICtrlCreateLabel("Computer", 96, 8, 70, 20)
    GUICtrlSetFont(-1, 10, 800, 0)
    $Label5 = GUICtrlCreateLabel("Du hast " & $geld & " Euro", 24, 80, 124, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0)
    $Label7 = GUICtrlCreateLabel("", 24, 130, 124, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0)
    $Button2 = GUICtrlCreateButton("Neustart", 8, 202, 75, 25)
    $Button3 = GUICtrlCreateButton("Beenden", 88, 202, 75, 25)
    $Label6 = GUICtrlCreateLabel("Dein Einsatz", 56, 106, 95, 17)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Checkbox1 = GUICtrlCreateCheckbox("Schnell würfeln", 8, 150, 97, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    GUISetState(@SW_SHOW)

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

    Func _Neustart()
    $geld = 5
    GUICtrlSetData ( $Label1, "1")
    GUICtrlSetData ( $Label2, "1")
    GUICtrlSetData ( $Label5, "Du hast " & $geld & " Euro")
    GUICtrlSetData ( $Label7, "")
    EndFunc

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $einsatz = GUICtrlRead($Input1)
    If $einsatz = "" Then
    MsgBox(0,$spielname,"Du musst einen einsatz bestimmen!")
    ElseIf $einsatz > $geld Then
    MsgBox(0,$spielname,"Du hast nicht so viel Geld!")
    Else
    If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then
    $wuerfel1 = Random(1,6,1)
    GUICtrlSetData ( $Label1, $wuerfel1)
    $wuerfel2 = Random(1,6,1)
    GUICtrlSetData ( $Label2, $wuerfel2)
    ElseIf GUICtrlRead($Checkbox1) = $GUI_UNCHECKED Then
    $wuerfel1 = Random(1,6,1)
    GUICtrlSetData ( $Label1, $wuerfel1)
    Sleep(20)
    $wuerfel2 = Random(1,6,1)
    GUICtrlSetData ( $Label2, $wuerfel2)
    Sleep(50)
    $wuerfel1 = Random(1,6,1)
    GUICtrlSetData ( $Label1, $wuerfel1)
    Sleep(40)
    $wuerfel2 = Random(1,6,1)
    GUICtrlSetData ( $Label2, $wuerfel2)
    Sleep(150)
    $wuerfel1 = Random(1,6,1)
    GUICtrlSetData ( $Label1, $wuerfel1)
    Sleep(80)
    $wuerfel2 = Random(1,6,1)
    GUICtrlSetData ( $Label2, $wuerfel2)
    Sleep(400)
    $wuerfel1 = Random(1,6,1)
    GUICtrlSetData ( $Label1, $wuerfel1)
    Sleep(150)
    $wuerfel2 = Random(1,6,1)
    GUICtrlSetData ( $Label2, $wuerfel2)
    Sleep(800)
    $wuerfel1 = Random(1,6,1)
    GUICtrlSetData ( $Label1, $wuerfel1)
    Sleep(150)
    $wuerfel2 = Random(1,6,1)
    GUICtrlSetData ( $Label2, $wuerfel2)
    EndIf
    If $wuerfel1 > $wuerfel2 Then
    $geld = $geld + $einsatz
    GUICtrlSetColor($Label7, 0x00FF00)
    GUICtrlSetData ($Label7, $einsatz &" Euro gewonnen!")
    ElseIf $wuerfel2 > $wuerfel1 Then
    $geld = $geld - $einsatz
    GUICtrlSetColor($Label7, 0xFF0000)
    GUICtrlSetData ($Label7, $einsatz &" Euro verloren!")
    Else
    GUICtrlSetColor($Label7, 0x0000FF)
    GUICtrlSetData ($Label7, "Gleichstand")
    EndIf
    EndIf
    GUICtrlSetData ( $Label5, "Du hast " & $geld & " Euro")
    If $geld = 0 Then
    MsgBox(0,$spielname,"Schade! Du hast alles verspielt!")
    _Neustart()
    EndIf
    Case $Button2
    _Neustart()
    Case $Button3
    Exit
    EndSwitch
    WEnd

    [/autoit]