Zehntausend

CDW

0
Mitarbeiter
Eingereicht von Ook!

###
Es soll das Spiel "Zehntausend" entwickelt werden.
Wikipedia Artikel zum Spiel

Wie viele Würfe braucht ein Spieler durchschnittlich, um die 10000 Punkte zu erreichen?
Wie dieser "Statistik-Teil" genau realisiert werden soll, darf jeder für sich entscheiden.

Wer mag, kann natürlich auch eine Spieler vs Spieler oder Spieler vs Computer Implementierung schreiben.
###
 
Eine nicht besonders hübsche Python-Lösung (ich hoffe, sie ist jetzt Bug-Frei ;)):
Code:
#!/usr/bin/python
import random
import sys

def wuerfeln(anzWuerfel):
    return [random.randint(1, 6) for x in range(anzWuerfel)]

def auswertung(e):
    anzahl = [0 for i in range(7)]
    for i in e:
        anzahl[i] += 1
    
    wuerfel = 0
    pasche = 0
    if (anzahl[1] >= 3):
        pasche = 10**(anzahl[1])
        wuerfel += anzahl[1]
    for i in range(2, 7):
        if (anzahl[i] >= 3):
            pasche += i * 10**(anzahl[i]-1)
            wuerfel += anzahl[i]

    punkte = 0
    if (anzahl[1] in [1,2] or anzahl[5] in [1,2]):
        punkte = pasche
    else:
        wuerfel = 0
    if (anzahl[1] < 3 or punkte == 0):
        punkte += 100 * anzahl[1]
        wuerfel += anzahl[1]
    if (anzahl[5] < 3 or punkte == 0):
        punkte += 50 * anzahl[5]
        wuerfel += anzahl[5]
    return (punkte, wuerfel)

punkte = [0 for i in range(2)]
pa = 0
aktRunde = 1
while (max(punkte) < 10000 or pa != 0):
    print "#### RUNDE", aktRunde
    print "Spieler %d ist an der Reihe!" % (pa+1),
    abbruch = False
    runde = 0
    wuerfel = 5
    print "Druecke ENTER zum Wuerfeln! ",
    sys.stdin.readline()
    while (not abbruch):
        e = wuerfeln(wuerfel)
        print "Gewuerfelt:", e
        stat = auswertung(e)
        runde += stat[0]
        wuerfel -= stat[1]
        if (stat[0] == 0):
            runde = 0
        print "Punkte dieser Runde: %d" % runde
        if (stat[0] == 0):
            break
        if (wuerfel == 0):
            wuerfel = 5
        while (stat[0] > 0):
            print "Noch eine Runde mit %d Wuerfeln? (j/n) " % wuerfel,
            a = sys.stdin.readline().strip()
            if (a == "j"):
                break
            elif (a == "n"):
                abbruch = True
                break
    punkte[pa] += runde
    print "Punkte gesamt:", punkte[pa]
    print
    pa = (pa + 1) % 2
    if (pa == 0): aktRunde += 1
 
Da ich das Spiel selbst spiele kann ich zu der Aufgabe noch sagen, das man auf jeden Fall einen Unterschied zwischen Risikobereiten und sicherheits Spielern hat.

Aufschreiben geht bei uns erst ab 350 Punkten.

Daher sah ich jetzt für mich erstmal keine Möglichkeit das vernünftig zu scripten ohne diese Risiko bereitschaft einzubeziehen.
 
Zurück
Oben