private ArrayList<Integer> findWinner() throws Exception {
		PowerRanking powerRanking = new PowerRanking();
		ArrayList<CardPower> cardPowers = new ArrayList<CardPower>();
		for (int i = 0; i < playerList.size(); i++) {
			if (!playerList.get(i).hasFolded()) {
				ArrayList<Card> playersHoleAndSharedCards = new ArrayList<Card>();
				playersHoleAndSharedCards.addAll(playerList.get(i).getHoleCards());
				playersHoleAndSharedCards.addAll(state.getSharedCards());
				cardPowers.add(powerRanking.calcCardPower(playersHoleAndSharedCards));
				// Commit all the actions the current player has made during the hand to the model
				opponentLogger.showdown(i, playerList.get(i).getHoleCards(), state.getSharedCards());
			} else {
				// if the current player has folded during the hand, he will not get any money
				cardPowers.add(new CardPower().add(-1));
			}
		}

		ArrayList<Integer> winners = new ArrayList<Integer>();
		// determine strongest hand
		CardPower maxPower = Collections.max(cardPowers);
		// compare all hands to the strongest one
		for (int i = 0; i < cardPowers.size(); i++) {
			if (cardPowers.get(i).compareTo(maxPower) == 0) {
				winners.add(i);
			}
		}
		return winners;
	}