/** * Metoda zawiera mechanizm zakończenia gry w chwili kiedy wszyscy gracze spasuja lub system na * podstawie punktów stwierdzi wygraną lub przegraną */ private void gamePass() { gameStarted = false; actionTimer.cancel(); actionTimer = null; sumMap.clear(); krupier.start(); Set<String> k = activePlayers.keySet(); // kazdy z graczy dostaje do swojej kolejki zdarzen for (String keyX : k) // informacje o kartach krupiera sumMap.put(keyX, activePlayers.get(keyX).sumCards()); krupier.setStatus((byte) 6); boolean isWiner = false; // czy któryś gracz ma oczko List<String> list = new ArrayList<String>(); // lista graczy którzy mają oczko for (String keyX : k) { if (sumMap.get(keyX) == 21) { activePlayers.get(keyX).setStatus((byte) 1); list.add(keyX); isWiner = true; } } if (isWiner) // skoro jest gracz z oczkiem to dodaje informacje { // o przegranej pozostałych graczy i krupiera for (String keyX : k) { if (!list.contains(keyX)) activePlayers.get(keyX).setStatus((byte) -1); krupier.setStatus((byte) -1); } } if (isWiner == false) // nie ma gracza z oczkiem to analizuje wyniki graczy i krupiera { List<String> tmp = new ArrayList<String>(); // zmienna z listą zwycięzców int wyn = 0; boolean krupierIsWinner = false; if (krupier.sumCards() == 21) // krupier ma oczko i inni gracze nie mieli => krupier wygray gre { krupier.setStatus((byte) 1); krupierIsWinner = true; } else if (krupier.sumCards() < 21) // jezeli krupier nie przekroszył 21 pkt to jego wynik jest baza wyn = krupier.sumCards(); // do analizy wyników pozostałych graczy if (krupierIsWinner == false) { for (String keyX : k) { if (sumMap.get(keyX) < 21) { if (sumMap.get(keyX) > wyn) { tmp.clear(); wyn = sumMap.get(keyX); // nowy najwyższy wynik bazowy tmp.add(keyX); } else if (sumMap.get(keyX) == wyn) tmp.add(keyX); } } for (String keyX : k) { if (tmp.size() > 0) { krupier.setStatus((byte) -1); if (tmp.contains(keyX)) activePlayers.get(keyX).setStatus((byte) 1); else activePlayers.get(keyX).setStatus((byte) -1); } else { krupier.setStatus((byte) 1); for (String key : k) activePlayers.get(key).setStatus((byte) -1); } } } } }