protected void playRound(Round round) { for (TournamentPairing pair : round.getPairs()) { playMatch(pair); } updateResults(); // show points from byes while (!round.isRoundOver()) { try { //TODO: improve this Thread.sleep(1000); } catch (InterruptedException ex) { Logger.getLogger(TournamentImpl.class).warn("TournamentImpl playRound error ", ex); break; } } updateResults(); }
protected Round createRoundRandom() { Round round = new Round(rounds.size() + 1, this); rounds.add(round); List<TournamentPlayer> roundPlayers = getActivePlayers(); // search the player with a bye last round List<TournamentPlayer> playerWithByes = getTournamentPlayersWithBye(roundPlayers); while (roundPlayers.size() > 1) { TournamentPlayer player1 = getNextAvailablePlayer(roundPlayers, playerWithByes); TournamentPlayer player2 = getNextAvailablePlayer(roundPlayers, playerWithByes); round.addPairing(new TournamentPairing(player1, player2)); } if (!roundPlayers.isEmpty()) { // player free round - add to bye players of this round TournamentPlayer player1 = roundPlayers.get(0); round.getPlayerByes().add(player1); player1.setState(TournamentPlayerState.WAITING); player1.setStateInfo("Round Bye"); updateResults(); } return round; }
for (TournamentPairing pair : round.getPairs()) { Match match = pair.getMatch(); if (match != null && match.hasEnded()) { MatchPlayer mp2 = match.getPlayer(pair.getPlayer2().getPlayer().getId()); if (round.getRoundNumber() == rounds.size()) { // for elimination getRoundNumber = 0 so never true here match.setTournamentRound(round.getRoundNumber()); if (tp1.getState() == TournamentPlayerState.DUELING) { if (round.getRoundNumber() == getNumberRounds()) { tp1.setState(TournamentPlayerState.FINISHED); } else { if (round.getRoundNumber() == getNumberRounds()) { tp2.setState(TournamentPlayerState.FINISHED); } else { tp1.setResults(addRoundResult(round.getRoundNumber(), pair, tp1, tp2)); tp2.setResults(addRoundResult(round.getRoundNumber(), pair, tp2, tp1)); for (TournamentPlayer tp : round.getPlayerByes()) { tp.setResults(new StringBuilder(tp.getResults()).append('R').append(round.getRoundNumber()).append(' ').append("Bye ").toString()); tp.setPoints(tp.getPoints() + 3);
public RoundView(Round round) { try { for (TournamentPairing pair : round.getPairs()) { // get info of finished games from match if (pair.getMatch() != null) { for (GameInfo gameInfo : pair.getMatch().getGamesInfo()) { games.add(new TournamentGameView(round.getRoundNumber(), gameInfo.getMatchId(), gameInfo.getGameId(), gameInfo.getState(), gameInfo.getResult(), gameInfo.getPlayers(), gameInfo.getTableId())); } if (!pair.getMatch().hasEnded()) { int numberSavedGames = pair.getMatch().getGamesInfo().size(); if (pair.getMatch() != null) { int gameCount = 0; for (Game game : pair.getMatch().getGames()) { gameCount++; if (gameCount > numberSavedGames) { // only unfinished game info directly from game games.add(new TournamentGameView(round.getRoundNumber(), pair, game)); } } } } } } } catch (Exception ex) { ex.printStackTrace(); } }
for (TournamentPairing pairing : round.getPairs()) { TournamentPlayer player1 = pairing.getPlayer1(); TournamentPlayer player2 = pairing.getPlayer2(); int[] byes = new int[playersCount]; for (Round round : rounds) { for (TournamentPairing pairing : round.getPairs()) { TournamentPlayer player1 = pairing.getPlayer1(); TournamentPlayer player2 = pairing.getPlayer2(); for (TournamentPlayer playerBye : round.getPlayerByes()) { Integer id = map.get(playerBye); if (id != null) {
private void eliminatePlayers(Round round) { for (TournamentPairing pair: round.getPairs()) { pair.eliminatePlayers(); } }
public boolean isRoundOver() { boolean roundIsOver = true; for (TournamentPairing pair: pairs) { if (pair.getMatch() != null) { if (!pair.getMatch().hasEnded()) { roundIsOver = false; } else { if (!pair.isAlreadyPublished()) { tournament.updateResults(); pair.setAlreadyPublished(true); if (tournament instanceof TournamentSingleElimination) { pair.eliminatePlayers(); } // if it's the last round, finish all players for the tournament if their match is finished if (getRoundNumber() == tournament.getNumberRounds()) { pair.finishPlayersThatPlayedLastRound(); } } } } } return roundIsOver; }
private List<TournamentPlayer> getTournamentPlayersWithBye(List<TournamentPlayer> roundPlayers) { List<TournamentPlayer> playersWithBye = new ArrayList<>(); if (rounds.size() > 1) { for (int i = rounds.size() - 2; i >= 0; i--) { Round oldRound = rounds.get(i); if (oldRound != null && !oldRound.getPlayerByes().isEmpty()) { TournamentPlayer tournamentPlayerWithBye = oldRound.getPlayerByes().iterator().next(); if (roundPlayers.contains(tournamentPlayerWithBye)) { playersWithBye.add(tournamentPlayerWithBye); } } } } return playersWithBye; }
.setRound(round.getRoundNumber()); for (TournamentPairing pair : round.getPairs()) { Match match = pair.getMatch(); if (match != null && match.hasEnded()) { for (TournamentPlayer tp : round.getPlayerByes()) { roundBuilder.addByes(tp.getPlayer().getName());
private boolean alreadyPaired(List<Round> rounds, TournamentPlayer player1, TournamentPlayer player2) { for (Round round : rounds) { for (TournamentPairing pairing : round.getPairs()) { if (pairing.getPlayer1().equals(player1) || pairing.getPlayer2().equals(player1)) { if (pairing.getPlayer1().equals(player2) || pairing.getPlayer2().equals(player2)) { return true; } } } } return false; } }
round = new Round(rounds.size() + 1, this); rounds.add(round); for (TournamentPairing pairing : roundPairings.getPairings()) { round.addPairing(pairing); round.getPlayerByes().add(playerBye); if (isLastRound) { playerBye.setState(TournamentPlayerState.FINISHED);