示例#1
0
  /**
   * 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);
          }
        }
      }
    }
  }