Hast du kürzlich nen WLAN-Treiber, oder WLAN Software oder irgendwas in der Richtung installiert? Verliert dein Browser auf Webseiten auch ständig den Fokus und du musst erst wieder reinklicken bevor du scrollen kannst?

...zur Antwort

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. ;)

...zur Frage

Ich hätte die Würfel in ne Liste gepackt, die Liste sortiert und geprüft, ob jeder Nachbarswürfel die Augenzahl+1 hat. Allerding bekommst du so nicht raus, ob es ne große oder kleine Straße ist. Dazu musst es zweimal durchlaufen lassen, oder Flags setzen.

...zur Antwort

Solange sie die Sicht nicht erheblich einschränkt, kannst du auch mit Sonnenbrille im Tunnel fahren. Nimm das kleinste Übel: Sonnenbrille -> geringe Einschränkung, Brille abnehmen -> deutlich erhebliche Einschränkung.

...zur Antwort

Du musst deine ablauf-Methode splitten. Die sorgt nur dafür, dass das Spiel, alle Spieler und und die GUI initialisiert werden. Auch die handler an die Buttons zu kleben gehört da rein!

Das warten auf den Button-klick umgehst du, in dem du sämtliche Aktionen, die den Buttonklick erfordern oder danach passieren, im handler abarbeitest.

...zur Antwort