Java Erkennungsalgorithmus für Straßen in Kniffel

Hallo Community,

ich programmiere gerade das Würfelspiel "Kniffel" oder auch "Yahtzee" in Java nach. Um Punkte in den Zettel (JTable) einzutragen, muss das Programm erst erkennen, dass die gewürfelten Augen das gewünschte Objekt (Dreierpasch, Kniffel, Full House, ...) bilden, und dann die Punktzahl berechnen. Das ist mit bei allen Figuren gelungen, außer bei der kleinen und großen Straße.

Das hier ist der Algorithmus, der die Straßen erkennen können soll:

    public boolean isStreet(int amount, Dice dice1, Dice dice2, Dice dice3,
        Dice dice4, Dice dice5) {
    int count = 1;
    int lastValue = dice1.calcvalue;
    int[] diceValues = new int[] { dice2.calcvalue, dice3.calcvalue,
            dice4.calcvalue, dice5.calcvalue };
    for (int i : diceValues) {

        if (i == (lastValue + 1))
            count++;
        else
            count = 1;

        if (count >= amount)
            return true;
    }
    return false;
}

Zum Code:

der int "amount" ist die Zahl der Würfel in einer Reihe. Bei einer kleinen Straße also 4 und bei einer großen 5.
dice1.calcvalue, dice2.calcvalue, ... sind die Würfelwerte in aufsteigender Reihenfolge.
Ist also dice1.value=4, dice2.value=2, dice3.value=5, dice4.value=5 und dice5.value=4, dann ist dice1.calcvalue=2, dice2.calcvalue=4, dice3.calcvalue=4, dice4.calcvalue=5 und dice5.calcvalue=5.
In der if.Bedingung ganz unten, wo das return true; druntersteht, hat GF aus dem >-Zeichen irgendwie dieses &gt-Zeug gemacht. Ein > kann man wohl nicht in ein GF-Codebeispiel schreiben.

Das Problem: Mein Programm liefert sowohl bei amount = 4 (kl. Str.) als auch amount = 5 (gr. Str.) ein false. Das Feld ist nicht mehr editierbar, aber die Punktzahl = 0. Kommt also einem "Streichen" gleich. Wo liegt der Fehler und wie muss der Algorithmus richtig lauten?

Sorry wegen des langen Textes und Danke an alle Coder die es besser können. ;)

Programmieren, Java, kniffel, Algorithmus
2 Antworten
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.