Eine Straße in einem Würfelspiel

DarkDragN

Lieutenant
Registriert
Dez. 2005
Beiträge
881
hi there :D

ich habe hier gerade folgendes problem:

wir haben eine Aufgabe bekommen in der wir ein würfelspiel entwickeln sollen (auf Console) das mit 2 spielern laufen soll und 3 würfel hat. soweit so gut. nun zu den regeln:

1. Er soll die Straßen erkennen
2. Pasch soll er auch erkennen
3. Beides ist höher zu werten als die summe aller 3 würfel

mir gehts hier vor allem um den ersten punkt, da ich doch noch in der lage bin eine lösung für die anderen beiden punkte zu finden ^^

hoffe ihr könnt mir helfen

mfg

Dark

edit1: es sind "normale" würfel von 1-6
 
Hallo,

ohne jetzt auf "saubere" Programmierung oder Eleganz zu achten:

zu 1)
schreibe Dir ne Funktion, die die 3 Würfelzahlen sortiert (zb wird aus 4, 3, 2 -> 2,3,4) und als Array zurückgibt.
Dann noch eine Funktion, die Dir z.b. true zurückgibt, wenn die 2. Zahl des Array die 1. Zahl +1 ist und die 3. Zahl die 2. Zahl +1 ergibt.
Ich geh davon aus, dass Straßen zb. 1,2,3 / 2,3,4 oder 4,5,6 sein können.

zu 2)
wieder Zahl in ein Array lesen und 1. Zahl mit 2 . Zahl vergleichen -> Pasch? ja -> Ende, nein -> 1. Zahl mit 3. Zahl vergleichen -> Pasch? ja -> ende, nein -> 2. Zahl mit 3. Zahl vergelichen -> Pasch? ja/nein

zu 3) wenn 1 oder 2 true sind, dann nimm höhere Wertung, andernfalls die Summe.

Hoffe, das hilft.
Markus
 
Auf die schnelle würde ich das so lösen:

if (Würfel2-Würfel1=1 && Würfel3-Würfel2=1 || Würfel1-Würfel2=1 && Würfel2-Würfel3=1 || Würfel2-Würfel1=1 && Würfel1-Würfel3=1 || Würfel1-Würfel2=1 && Würfel3-Würfel2=1 || Würfel2-Würfel3=1 && Würfel3-Würfel1=1 || Würfel1-Würfel3=1 && Würfel3-Würfel2=1)
{
printf("Straße!");
}

Ist jetzt sicherlich nicht die beste Art und Weise, sollte aber funktionieren. :D
Durch vorheriges Sortieren könnte man das Ganze noch um die Hälfte kürzen, hätte dafür aber den Mehraufwand durch das Sortieren.
 
Wenn du sagen würdest welche Sprache, dann könnte man dir bessere Tipps geben ;)

In C++ gibt es z.B. Containerklassen (vector, list, map), die automatisch sortiert sind, oder sich sortieren lassen.
Dann ließe sich eine Straße sehr einfach nachschaun.
 
Je nach Sprache speicherst du die Würfe in ein assoziatives Array, Hash oder was immer die Sprache auch bietet, dabei ist der Schlüssel die Augenzahl und der Wert die Häufigkeit.

1. Straße
- Ist die Anzahl der Elemente != 3, liegt keine Straße vor
- Andernfalls sortierst du die o.g. Struktur nach den Schlüsseln aufsteigend und ermittelst die Differenz zwischen größtem und kleinsten Schlüsselwert, ist sie 2, liegt eine Straße vor

2. Pasch
- Enthält die Datenstruktur nur ein Element, liegt ein Dreierpasch vor
- Enthält die Datenstruktur nur zwei Elemente, liegt ein Zweierpasch vor
- Enthält die Datenstruktur drei Elemente, liegt kein Pasch vor

greetings, Keita
 
oder anders (als Pseudocode)
Code:
Differenz = 0;
if (Würfel1 > Würfel2) Differenz = Würfel1 - Würfel2; else Differenz = Würfel2 - Würfel1;
if (Würfel2 > Würfel3) Differenz += Würfel2 - Würfel3; else Differenz += Würfel3 - Würfel2;
if (Differenz == 2 && Würfel1 != Würfel2 && Würfel2 != Würfel3 && Würfel1 != Würfel3) Strasse();
:D
 
Zurück
Oben