/** * - Stichgewinner ermitteln - Mitspieler im gleichen Team ermitteln - Punkte zählen und allen im * Team addieren */ private void calculatePointsInRound(final Stich stich) { final List<PlayCard> stichcards = new ArrayList<>(); for (PlayCard c : playcards) { if (c.getStichNr() == stich.getStichNr()) { stichcards.add(c); } } // Nach Spielreihenfolge sortieren Collections.sort(stichcards, this.stichSorter); // Erste Karte merken final PlayCard karte1 = stichcards.get(0); PlayCard winnerCard = null; Player winner = null; int points = 0; for (PlayCard c : stichcards) { if (winner == null) { winner = karte1.getOwner(); winnerCard = karte1; } else { int r1 = winnerCard.getRank(trumpfFarbe); // Abgeworfen, dann rank 0 int r2 = c.getFarbe() != karte1.getFarbe() && c.getFarbe() != trumpfFarbe ? 0 : c.getRank(trumpfFarbe); if (r2 > r1) { winner = c.getOwner(); winnerCard = c; } } points += c.getPoints(); // Zusatzgewinne // 1) Jass if (c.isJass(trumpfFarbe)) { points += 20; } // 2) Mie if (c.isMie(trumpfFarbe)) { points += 14; } // letzter Stich bekommt 10 Extrapunkte if (this.maxStichNr == c.getStichNr()) { points += 10; } } stich.setWinner(winner); stich.setPoints(points); log.info( "Round " + stich.getStichNr() + ": " + points + " points for player " + winner.getUsername() + ", stich=" + stichcards); }