示例#1
0
 /**
  * metoda pozwala na dodanie garacza do stołu, pod warunkiem ze ich liczba jest mniejsza od 7
  *
  * @param token
  * @return 1 - dodanao gracza, i rozpoczyna on gre od zaraz
  * @return 2 - dodanao gracza, ale aktualnie trwa rozgrywka
  * @return -1 - nie dodano gracza stół pelny
  */
 public List getEventsList(String token) {
   List tab = new ArrayList();
   int i = 0;
   Set<String> k = activePlayers.keySet();
   for (String keyX : k) {
     tab.add(
         new PlayerEvent(
             keyX.substring(0, keyX.length() - 8),
             activePlayers.get(keyX).getCards(),
             (byte) activePlayers.get(keyX).sumCards(),
             activePlayers.get(keyX).getStatus()));
   }
   tab.add(
       new PlayerEvent(
           "krupier", krupier.getCards(), (byte) krupier.sumCards(), krupier.getStatus()));
   return tab;
 }
示例#2
0
 /**
  * Metoda zdarzeń zwraca tablice graczy i krupiera traktowanego jako gracz przechowuje 4 wartośći:
  * login ; cards - lista kart posiadanych przez gracza; pointsSum suma pkt ; status - informacja
  * czy graczy wygrał, przegrał, gra dalej itp. itd. a nawet etc.
  *
  * @param token
  * @return
  */
 public PlayerEvent[] getEvents(String token) {
   PlayerEvent tab[] = new PlayerEvent[activePlayers.size() + 1];
   int i = 0;
   Set<String> k = activePlayers.keySet();
   for (String keyX : k) {
     tab[i] =
         new PlayerEvent(
             keyX.substring(0, keyX.length() - 8),
             activePlayers.get(keyX).getCards(),
             (byte) activePlayers.get(keyX).sumCards(),
             activePlayers.get(keyX).getStatus());
     ++i;
   }
   tab[i] =
       new PlayerEvent(
           "krupier", krupier.getCards(), (byte) krupier.sumCards(), krupier.getStatus());
   return tab;
 }
示例#3
0
  /**
   * metoda pozwalająca na rozpoczecie nowej gry wywołanie jej jest konieczne żeby móc zagrać w gre
   *
   * @value String token - przyjmuje token który został zwrócony zalogowaniu na wsMainServer
   * @return 1 gra zostala rozpoczeta
   * @return -1 nie wszyscy gracze zakonczyli poprzednia gre
   */
  private void startGame() {
    if (!gameStarted) {
      stos = new Stos(); // przygotowanie tali
      krupier = new Krupier(stos); // i krupiera
      finishedCounter = 0;

      for (byte i = 0; i < 2; ++i) // rozdanie po 2 karty
      {
        krupier.addCard(stos.getCard()); //  krupierowi
        Set<String> keys = activePlayers.keySet();
        for (String key : keys) {
          activePlayers.get(key).addCard(stos.getCard()); // i graczom
        }
      }

      activityMap.clear();
      Set<String> k = activePlayers.keySet(); // kazdy z graczy dostaje do swojej kolejki zdarzen
      for (String keyX : k) // informacje o drugiej karcie krupiera
      {
        activityMap.put(
            keyX,
            new Date()); // zapisywany jest aktualczy czas od którego gracz ma 10 sekund na podjęcie
                         // akcji
        passPlayers.put(keyX, false);
        playerTook2Cards.put(keyX, false);
      }

      gameStarted = true; // rozpoczeto gre przy stole

      startGameTimer.cancel();
      startGameTimer = null; // w czasie gry nie trzeba odliczać do rozpoczęcia gry

      actionTimer = new ActionTimer();
      canStart =
          false; // zmienna musi być false aby można było później od nowa dodać graczy do rozdania
      // LOG
      System.out.println("startGame(): GRA ZOSTAŁA ROZPOCZETA");
    }
  }
示例#4
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);
          }
        }
      }
    }
  }