Hallo zusammen,
ich versuche meinem Sohn bei der Lösung einer in der Schule gestellten Programmieraufgabe zu helfen. Leider sind meine Programmierkenntnisse bereits etwas in die Jahre gekommen und hoffe auf Eure Hilfe.
Und zwar programmieren sie gerade ein Würfelspiel. Das meiste davon hat er lösen können, jedoch noch nicht folgendes.
Gegeben sind drei int-Werte (vorher generierte Zufallszahl), die nun wie folgt ausgewertet werden müssen:
Das Problem sind nicht die einzelnen Rechnungen, sondern die grundsätzliche Struktur.
Wir haben wie folgt angefangen...
[CODE lang="java" title="Code"]public int werteAus(int w1, int w2, int w3) {
if (getPaar(w1, w2, w3) != 0) {
return getPaar(w1, w2, w3);
}
// ... usw.
}
private int getPaar(int w1, int w2, int w3) {
if (w1 == w2 || w1 == w3) {
return w1 * 10;
} else if (w2 == w3) {
return w2 * 10;
} else {
return 0;
}
}[/CODE]
... dann aber festgestellt, dass dieser Weg vermutlich einen zu komplexen Spaghetticode ergeben würde, würde man das so für die anderen Auswertungen fortsetzen. Das lässt sich doch bestimmt eleganter lösen.
Wie würdet Ihr logisch vorgehen? Erst mal überprüfen (boolean) und dann, in separaten Methoden rechnen oder alles in einem? Über etwas Beispielcode würden wir uns auch sehr freuen. Wie gesagt, ich bitte um Nachsicht, da mein Wissen etwas eingerostet ist und ich die Aufgabe für einen Schüler doch recht anspruchsvoll finde.
Wir bedanken uns im Voraus! 👍
ich versuche meinem Sohn bei der Lösung einer in der Schule gestellten Programmieraufgabe zu helfen. Leider sind meine Programmierkenntnisse bereits etwas in die Jahre gekommen und hoffe auf Eure Hilfe.
Und zwar programmieren sie gerade ein Würfelspiel. Das meiste davon hat er lösen können, jedoch noch nicht folgendes.
Gegeben sind drei int-Werte (vorher generierte Zufallszahl), die nun wie folgt ausgewertet werden müssen:
- Paar: Wenn zwei Würfelzahlen übereinstimmen, multipliziert man die übereinstimmende Augenzahl mal 10.
- Straße: Wenn die Augenzahlen der Würfel aufeinander folgen (z.B. [1, 2, 3], [4, 5, 6] usw.), ist die Punktzahl immer 100.
- Pasch: Wenn alle Würfel im Becher die gleiche Zahl haben, wird diese Zahl mit 100 multipliziert.
- Nichts: In allen anderen Fällen werden die Augenzahlen einfach summiert.
Das Problem sind nicht die einzelnen Rechnungen, sondern die grundsätzliche Struktur.
Wir haben wie folgt angefangen...
[CODE lang="java" title="Code"]public int werteAus(int w1, int w2, int w3) {
if (getPaar(w1, w2, w3) != 0) {
return getPaar(w1, w2, w3);
}
// ... usw.
}
private int getPaar(int w1, int w2, int w3) {
if (w1 == w2 || w1 == w3) {
return w1 * 10;
} else if (w2 == w3) {
return w2 * 10;
} else {
return 0;
}
}[/CODE]
... dann aber festgestellt, dass dieser Weg vermutlich einen zu komplexen Spaghetticode ergeben würde, würde man das so für die anderen Auswertungen fortsetzen. Das lässt sich doch bestimmt eleganter lösen.
Wie würdet Ihr logisch vorgehen? Erst mal überprüfen (boolean) und dann, in separaten Methoden rechnen oder alles in einem? Über etwas Beispielcode würden wir uns auch sehr freuen. Wie gesagt, ich bitte um Nachsicht, da mein Wissen etwas eingerostet ist und ich die Aufgabe für einen Schüler doch recht anspruchsvoll finde.
Wir bedanken uns im Voraus! 👍