mittelschweres Würfelspiel (viertelfertig)

  • Ich habe erst damit begonnen, ein Spiel zu programmieren. Leider bekomm ich es nicht fertig...
    Mal die Spielregeln:

    Spoiler anzeigen


    Jeder Spieler hat fünf Würfel, mit denen er würfeln muss. Jetzt muss er sich mindestens einen Würfel aussuchen, den er behalten will. Dabei zählt jede
    1: 100 Punkte
    5: 50 Punkte
    3x 1: 1000 Punkte
    3x 2: 200 Punkte
    3x 3: 300 Punkte
    3x 4: 400 Punkte
    3x 5: 500 Punkte
    3x 6: 600 Punkte
    und 1,2,3,4,5 zählt 1500 Punkte, wenn man aber beim nächsten mal Würfeln (muss man dann noch in diesem Zug machen) keine dieser Kombinationen würfelt, bekommt man keine Punkte.

    Nachdem sich der Spieler eben mindestens einen Würfel, der/die zu einer Dieser Kombinationen passt, ausgesucht hat (entspricht kein Würfel einer dieser Kombinationen, bekommt er keine Punkte und der nächste ist dran), muss er noch einmal mit den übrigen Würfeln würfeln, wenn er noch keine 250 Punkte in diesem Zug bekommen hat oder darf noch einmal würfeln, wenn er diese Punktzahl erreicht hat. Entspricht jeder Würfel einer Kombination (z.B. wenn man 3,3,3,5,1 gewürfelt hat), so darf der Spieler noch einmal mit allen Würfeln würfeln und das alles beginnt von vorn. Kommt bei einem mal würfeln keine Kombination, so bekommt der Spieler keine Punkte.

    Das Spiel ist vorbei, wenn ein Spieler mindestens 5000 Punkte bekommen hat. Dann geht das Spiel aber noch eine Runde weiter, in der die anderen Spieler versuchen können, den Gewinner an Punkten zu übertrumpfen.

    Hoffentlich hab ich keine Regel vergessen...
    Bei Fragen, diese einfach stellen...

    Quellcode meines Ansatzes:

    Spoiler anzeigen
    [autoit]

    ;***************CODET BY ME**************autoit.de
    ;Idee von @myFamily
    ;Anmerkung zur Deklaration von Variablen im Quellcode:
    ;$z = Variable ist Zahl
    ;$h = Variable ist Element

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

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

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

    HotKeySet("{ESC}", "_Exit")
    Func _Exit()
    Exit
    EndFunc ;==>_Exit

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

    Global $zSpieler = InputBox("SPIELERANZAHL","Wie viele Spieler sollen mitspielen?","4")
    If $zSpieler <= 1 Then
    Do
    $zSpieler = InputBox("SPIELERANZAHL","Es müssen mindestens zwei Spieler mitspielen!","4")
    Until $zSpieler > 1
    EndIf
    Global $zScore[$zSpieler], $hSpielerScore[$zSpieler + 1], $hSpielerWuerfeln[$zSpieler + 1]
    Global $zWurf[7], $zSpielerWuerfelt = 0, $hWuerfel[6], $hBehalten[6]

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

    GUICreate("WÜRFELSPIEL", @DesktopWidth, @DesktopHeight, 0, 0,$WS_MAXIMIZEBOX+$WS_MAXIMIZE)
    GUISetBkColor(0x5050ff)
    ;$hHintergrundbild = GUICtrlCreatePic ( @ScriptDir & "/Kartenspieler.jpg", -1, -1, @DesktopWidth, @DesktopHeight - 20 )
    ;GUICtrlSetState($hHintergrundbild, $GUI_DISABLE)
    For $zNul = 0 To $zSpieler - 1
    $hSpielerWuerfeln[$zNul + 1] = GUICtrlCreateButton("Würfeln Spieler " & $zNul + 1, 10, 25 * ($zNul) + 10)
    Next
    For $zNul = 0 To $zSpieler - 1
    $hSpielerScore[$zNul + 1] = GUICtrlCreateLabel("Score Spieler " & $zNul + 1 & " : " & "0", 110, 25 * ($zNul) + 16)
    GUICtrlSetColor(-1, 0xff00ff)
    Next
    $hWuerfel[1] = GUICtrlCreateLabel("Der erste Würfel des Spielers " & $zSpielerWuerfelt + 1 & " zeigte eine " & $zWurf[1], 250, 10)
    $hWuerfel[2] = GUICtrlCreateLabel("Der zweite Würfel des Spielers " & $zSpielerWuerfelt + 1 & " zeigte eine " & $zWurf[2], 250, 30)
    $hWuerfel[3] = GUICtrlCreateLabel("Der dritte Würfel des Spielers " & $zSpielerWuerfelt + 1 & " zeigte eine " & $zWurf[3], 250, 50)
    $hWuerfel[4] = GUICtrlCreateLabel("Der vierte Würfel des Spielers " & $zSpielerWuerfelt + 1 & " zeigte eine " & $zWurf[4], 250, 70)
    $hWuerfel[5] = GUICtrlCreateLabel("Der fünfte Würfel des Spielers " & $zSpielerWuerfelt + 1 & " zeigte eine " & $zWurf[5], 250, 90)

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

    $hBehalten[1] = GUICtrlCreateCheckbox ( "Behalten", 500, 5)
    $hBehalten[2] = GUICtrlCreateCheckbox ( "Behalten", 500, 25)
    $hBehalten[3] = GUICtrlCreateCheckbox ( "Behalten", 500, 45)
    $hBehalten[4] = GUICtrlCreateCheckbox ( "Behalten", 500, 65)
    $hBehalten[5] = GUICtrlCreateCheckbox ( "Behalten", 500, 85)

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

    $hErneutWuerfelnButton = GUICtrlCreateButton("Erneut würfeln!", 500, 110)

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

    For $zNul3 = 1 To $zSpieler
    If $zNul3 <> 1 Then
    GUICtrlSetState($hSpielerWuerfeln[$zNul3], $GUI_DISABLE)
    EndIf
    Next
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    #cs
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $hSpielerWuerfeln[]
    Wuerfeln()
    EndSelect
    #ce
    For $zNul2 = 0 To $zSpieler - 1
    If $msg = $hSpielerWuerfeln[$zNul2 + 1] Then
    _Wuerfeln($zNul2)
    EndIf
    Next
    If $msg = $GUI_EVENT_CLOSE Then Exit
    If $msg = $hErneutWuerfelnButton Then _ZweitesWuerfeln()
    WEnd

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

    Func _Wuerfeln($zSpielerWuerfelt)
    $zWurf[1] = Random(1, 6, 1)
    $zWurf[2] = Random(1, 6, 1)
    $zWurf[3] = Random(1, 6, 1)
    $zWurf[4] = Random(1, 6, 1)
    $zWurf[5] = Random(1, 6, 1)
    ;MsgBox(0,"","Es würfelt Spieler" & $zSpielerWuerfelt + 1)
    GUICtrlSetData($hWuerfel[1], "Der erste Würfel des Spielers " & $zSpielerWuerfelt + 1 & " zeigte eine " & $zWurf[1])
    GUICtrlSetData($hWuerfel[2], "Der zweite Würfel des Spielers " & $zSpielerWuerfelt + 1 & " zeigte eine " & $zWurf[2])
    GUICtrlSetData($hWuerfel[3], "Der dritte Würfel des Spielers " & $zSpielerWuerfelt + 1 & " zeigte eine " & $zWurf[3])
    GUICtrlSetData($hWuerfel[4], "Der vierte Würfel des Spielers " & $zSpielerWuerfelt + 1 & " zeigte eine " & $zWurf[4])
    GUICtrlSetData($hWuerfel[5], "Der fünfte Würfel des Spielers " & $zSpielerWuerfelt + 1 & " zeigte eine " & $zWurf[5])

    Global $h[6] = [0, 0, 0, 0, 0, 0]
    For $i = 1 To 5
    $h[$zWurf[$i] - 1] += 1
    Next
    ;_ArrayDisplay($h)
    EndFunc ;==> _Wuerfeln

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

    Func _ZweitesWuerfeln()
    EndFunc ;==> _ZweitesWuerfeln

    [/autoit]

    PS: Bitte vorerst noch KEINEN vollständigen Quellcode, ich will Schritt-für-Schritt mitmachen und was dabei lernen.

  • Ich kenne das spiel auch nur das wir es so gemacht haben das die kombination 1,2,3,4,5 ncihts bringt (bis auf die 5) sondern bei uns die kombination 1,2,3,4,5,6 direkt zum sieg geführt hat :)


    Wie hast du dir denn die GUI vorgestellt?


    Hätte auch schon interesse daran das zu Programmieren allzu schwer ist es ja nicht :)


    MFG: Blacky911

    Kleiner AutoIt Lehrling :)