For-Schleifen, Würfelpoker...

  • Also, ich bastel grad ein kleines Würfelpoker-programm, und für meine Auswerten-funktion brauche ich 2 For-Schleifen, die soweit auch gehen, aber...

    ich poste mal das script.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    global $a[5] = [1,1,6,6,6]
    _ArrayDisplay($a)
    global $h[6] = [0,0,0,0,0,0]
    For $i = 0 to 4 Step 1
    If $a[$i] = 1 Then
    $h[0] = $h[0] + 1
    ElseIf $a[$i] = 2 Then
    $h[1] = $h[1] + 1
    ElseIf $a[$i] = 3 Then
    $h[2] = $h[2] + 1
    ElseIf $a[$i] = 4 Then
    $h[3] = $h[3] + 1
    ElseIf $a[$i] = 5 Then
    $h[4] = $h[4] + 1
    ElseIf $a[$i] = 6 Then
    $h[5] = $h[5] + 1
    EndIf
    Next
    _ArrayDisplay($h)
    global $hh[6] = [0,0,0,0,0,0]
    For $i = 0 to 4 Step 1
    If $h[$i] = 1 Then
    $hh[0] = $hh[0] + 1
    ElseIf $h[$i] = 2 Then
    $hh[1] = $hh[1] + 1
    ElseIf $h[$i] = 3 Then
    $hh[2] = $hh[2] + 1
    ElseIf $h[$i] = 4 Then
    $hh[3] = $hh[3] + 1
    ElseIf $h[$i] = 5 Then
    $hh[4] = $hh[4] + 1
    ElseIf $h[$i] = 6 Then
    $hh[5] = $hh[5] + 1
    EndIf
    Next
    _ArrayDisplay($hh)

    [/autoit]

    also. es gibt 3 Arrays, $a, $h, und $hh.

    $a ist normal immer verschieden, aber in dem Beispiel ists halt [1,1,6,6,6] (Also der erste Würfel ist auf 1, der zweite auch, der 3te ist auf 6, usw.)

    Die Erste Forschleife soll feststellen, wie oft die Augenzahlen vorkommen.
    Es kommt raus [2,0,0,0,0,3], was auch so stimmt. (also 2 einsen und 3 sechsen)

    Die zweite macht genau dasselbe, aber macht das ganze mit $h,
    also soll feststellen, wie oft die Anzahl der Augenzahl vorkommt (also quasi die '2. Ableitung' (Mathe^^))

    Es sollte rauskommen: [0,1,1,0,0,0] (also es gibt einen Zwilling und einen Drilling. Ich weiss, das sechste Element ist unnötig, da man keinen sechsling mit 5 Würfeln würfeln kann, aber naja.)

    aber es kommt raus: [0,1,0,0,0,0]

    Bei anderen Zahlen funktioniert es, vorausgesetzt man würfelt keine Sechs ($a).
    Also: das Script hat was gegen Sechsen. aber warum?

    Die Antworten schau ich mir morgen an, ich geh jetzt schlafen. :sleeping:

    lg,
    Flonk


    EDIT:
    Ok, Schnuffel hat's schon gelöst.

    • Offizieller Beitrag

    Da sind viel zu viele Ifs drin. Das geht auch einfacher: :)

    [autoit]


    #include <Array.au3>
    Global $a[5] = [1, 1, 6, 6, 6]
    _ArrayDisplay($a)
    Global $h[6] = [0, 0, 0, 0, 0, 0]
    For $i = 0 To 4
    $h[$a[$i]-1] += 1
    Next
    _ArrayDisplay($h)
    Global $hh[6] = [0, 0, 0, 0, 0, 0]
    For $i = 0 To 5 Step 1
    If $h[$i] <> 0 Then $hh[$h[$i]-1] += 1
    Next
    _ArrayDisplay($hh)

    [/autoit]