/** * 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; }
/** * 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; }
/** * 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"); } }
/** * 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); } } } } }