# Würfelspiel



## WinterMensch (17. Jan 2013)

Guten Morgen 
Ich habe ein Problem bei einem Teil einer Aufgabe.

Also die Aufgabe lautet:
Es geht um ein Würfelspiel und es spielen immer zwei Personen gegeneinander. Die können eine unterschiedliche Anzahl an weißen oder roten Würfeln haben.
Rote Würfel haben drei mal die 0, einmal die 1, einmal die 2 und einmal die 3.
Weiße Würfel haben vier mal die 0, einmal die 1 und einmal die 2.
Ich soll jetzt ein Programm schreiben, dass herausfindet in wieviel Prozent der Fälle der erstegenannte Spieler gewinnt, verliert oder unentschieden gewürfelt wird.

Also z.B.:

Spieler 1 - rote Würfel: 0
Spieler 1 - weiße Würfel: 1
Spieler 2 - rote Würfel: 0
Spieler 2 - weiße Würfel: 1

Win: 25 %
Remis: 50 %
Loss: 25 %

Ich dachte mir ich bestimme die Anzahl aller möglichen Ausgänge und die Anzahl der Ausgänge der jeweiligen Ereignisse. Daraus kann ich ja dann die Prozente bestimmen.
Aber da ist das Problem:
Ich suche nach einem Algorithmus der die Eigenschaften der roten und weißen Würfel beschreibt und dann systematisch alle alle geworfenen Kombinationen durchgeht, sodass ich die Wahrscheinlichkeiten bestimmen kann.
Da fehlt mir einfach die Idee...

Danke schonmal im Voraus


----------



## SlaterB (17. Jan 2013)

du musst schon auch die Regeln zum Würfeln erklären, wird jeder Würfel genau einmal gewürfelt, Summe zusammengezählt pro Spieler?

'Algorithmus' und 'Wahrscheinlichkeiten' klingt übertrieben, das Vorgehen ist doch denkbar einfach,
natürlich muss man je Spieler berücksichtigen was vorhanden ist,
aber wenn man die Summe der Zahlen in einem Array der Länge X bestimmt, dann ist das ja auch eine Schleife und kein
'Algorithmus der die Eigenschaften aller Arrayfelder berücksichtigt'

kannst du es denn in einfachen Fällen sagen/ per Papier ausrechnen?
Spieler A ein Würfel mit 1 und 0, Spieler B ein Würfel mit 2 und 0,
wie sehen die Wahrscheinlichkeiten für Sieg A, Unentschieden, Sieg B aus?
wie kommst du darauf, welche Möglichkeiten überlegst du dir/ schreibst du auf, was kombinierst du usw?
im Großen dann nicht anders als im Kleinen

edit:
> und dann systematisch alle alle geworfenen Kombinationen durchgeht
ok, hast du wohl doch schon durchschaut,
aber programmieren musst du es schon, macht kaum wer anders für dich


Tipp:
beim Programmieren überlege dir ruhig erstmal Code für ein konkretes Beispiel,
danach kann man das dann immer noch für verschiedene Eingaben nutzbar umbauen,
nicht alles auf einmal wollen

oder fange noch kleiner mit einem Programm an welches lediglich für einen Spieler alle möglichen Wurfkombinationen ausgibt,
irgendwas, irgendwie selber anfangen,
die zündende Idee für alles kann man genausowenig geben wie ein fertiges Programm,
hier sind nur simple Aktionen beteiligt,


----------



## WinterMensch (17. Jan 2013)

Ok, also es geht nicht darum die summe der würfe zusammen zu zählen.
Vielmehr geht es darum, dass man alle möglichen Kombinationen zählt.
Also im Beispiel was ich angegeben habe gibt es na insgesamt 36 Spiel Ausgänge weil insgesammt zwei Würfel im Spiel sind.
Nehmen wir an, Spieler 1 würfelt eine 0 mit dem weißen Würfel, dann gibt es 6 Möglichkeiten wie der Würfel für Spieler 2 fällt, nämlich 0-0, 0-0, 0-0, 0-0, 0-1, 0-2.
In 4 fällen ist unentschieden, in 2 fällen verliert Spieler 1.
Wenn man das auch noch mit den anderen macht, gewinnt Spieler 1 9 mal, verliert 9 mal und es ist unentschieden in 18 Fällen.
Das Prinzip ist mir klar aber das als Programm aufzuschreiben fällt mir schwer weil ich nicht weiß wie ich das systematisch durchgehen soll...


----------



## WinterMensch (17. Jan 2013)

Ach so, und es gewinnt immer die höhere summe, also wenn jeder zwei Würfel hat wird dann doch die summe zusammengezählt


----------



## WinterMensch (17. Jan 2013)

Oder vielleicht kann mir ja jemand bei einem Spezialfall helfen, das ist dann vielleicht erstmal etwas leichter.
Also zum Beispiel der Fall, dass zwei rote Würfel gegen eine. Roten und einen weißen spielen


----------



## SlaterB (17. Jan 2013)

soviele Postings, dann kann ich ja auch bisschen mehr erzählen:

solange es noch um Würfel geht kannst du jeden Spieler einzeln betrachten,
da gilt es genauso zu kombinieren wie später bei den Spielern

ein Spieler hat n Würfel beliebiger (bekannter) Art? dann sind das n Verteilungen wie 0,0,0,1,2,3,
diese müssen alle kombiniert werden, Reihenfolge egal, immer zwei zusammen, bzw. ein Würfel mit dem bisherigen, 
etwa 6 Mgl. + 6 Mgl. ergibt 36, diese mit noch einem 6er ergibt 216 usw.

am Ende hast du für jeden Spieler einzeln errechnet (denselben Code nutzen, nicht verdoppeln) x bzw. y Wurfmöglichkeiten, 
jeder natürlich noch mit einer bestimmten Augensumme

diese x und y werden jetzt wieder kombiniert, gleiche Weise wie gesagt, 
macht noch eine viel größere Zahl insgesamt an Spielausgängen, jeweils mit SiegA, SiegB, Unentschieden,
das dann am Ende durchgehen, zählen und fertig


----------



## Bold (17. Jan 2013)

> 'Algorithmus' und 'Wahrscheinlichkeiten' klingt übertrieben, das Vorgehen ist doch denkbar einfach,
> natürlich muss man je Spieler berücksichtigen was vorhanden ist,
> aber wenn man die Summe der Zahlen in einem Array der Länge X bestimmt, dann ist das ja auch eine Schleife und kein
> 'Algorithmus der die Eigenschaften aller Arrayfelder berücksichtigt'



kannst du mir erklären wie du das mit dem array meinst? das wäre das einzige was mir bei der aufgabe noch fehlt
ich weiß zwar wie oft spieler 1 gewinnt verliert oder es unentschieden ausgeht (spieler1 2 rote würfel spieler2 1 roter 1 weißer)
das hab ich in excel aufgeschrieben aber ich habe keine ahnung wie ich das umsetzen soll.


----------



## hüteüberhüte (18. Jan 2013)

Wie funktioniert dieses Spiel, welchen Namen hat es, womit wird gestartet (erklärtest du schon), wie ist der Spielablauf, wann hat man gewonnen oder verloren?


----------



## SlaterB (18. Jan 2013)

@hüteüberhüte
man muss ja nicht helfen, aber alles nochmal abfragen oder ganz neues unsinniges zu fragen ('wer hat gewonnen' bei einer Analyse der Gewinnwahrscheinlichkeiten/verteilung) bringt noch weniger, es steht nun wirklich genug da

----

@Bold/ Wintermensch/ wer immer jetzt fragt?! :
das Programm fängt damit an, jeden Würfel durch ein Array seiner Werte darzustellen,
schaffst du das, irgendeine Zeile Code schon selber anfangen?


----------



## hüteüberhüte (18. Jan 2013)

@Slater: Aber den Spiel ablauf habe ich noch nicht richtig verstanden, helfen wollte ich schon, aber, wie gesagt, blicke ich noch nicht ganz durch, sorry wenn das dumm erscheint.


----------



## Bold (21. Jan 2013)

PlayDice.java In einem Brettspiel müssen die Spieler gelegentlich gegeneinander würfeln. Der
Spieler mit der höheren Summe gewinnt. Die Spieler erhalten dabei eine je nach Spielsituation
unterschiedliche Anzahl roter und/oder weisser Würfel. Die Würfel sind alle sechsseitig, wobei
rote Würfel dreimal die 0, einmal die 1, einmal die 2 und einmal die 3 besitzen.Weisse Würfel besitzen
dagegen 4 mal die 0, einmal die 1 und einmal die 2. Ihr Programm soll durch systematisches
Durchgehen aller geworfenen Kombinationen herausfinden, in wie viel Prozent der Fälle der der
erstgenannte Spieler gewinnt, verliert oder der Wurf mit einem Gleichstand endet. Verwenden Sie
dafür keine stochastische Formel sondern durchlaufen Sie alle Möglichkeiten.

Beispiele möglicher Programmabläufe:

Spieler1 - Anzahl roter Wuerfel: 1
Spieler1 - Anzahl weisser Wuerfel: 0
Spieler2 - Anzahl roter Wuerfel: 1
Spieler2 - Anzahl weisser Wuerfel: 0

Anzahl moeglicher Ausgaenge: 36
Win: 12 = 33.33333333333333%
Remis: 12 = 33.33333333333333%
Loss: 12 = 33.33333333333333%

Spieler1 - Anzahl roter Wuerfel: 0
Spieler1 - Anzahl weisser Wuerfel: 1
Spieler2 - Anzahl roter Wuerfel: 0
Spieler2 - Anzahl weisser Wuerfel: 1

Anzahl moeglicher Ausgaenge: 36
Win: 9 = 25.0%
Remis: 18 = 50.0%
Loss: 9 = 25.0%

So das ist die genaue Aufgabenstellung. Ich hab das Programm allerdings fertig. Stand nur ein bischen auf dem Schlauch ^^


----------

