public void playHand(int numberOfHand) throws Exception {
		this.numberOfHand = numberOfHand;
		deck = new Deck();
		anounceNewHand();
		dealHoleCards();
		playRound();
		if (state.getPlayersNotFolded() > 1) {
			anounceNewRound();
			state.addSharedCards(deck.drawCards(3)); // Flop
			playRound();
		}
		if (state.getPlayersNotFolded() > 1) {
			anounceNewRound();
			state.addSharedCards(deck.drawCards(1)); // Turn
			playRound();
		}
		if (state.getPlayersNotFolded() > 1) {
			anounceNewRound();
			state.addSharedCards(deck.drawCards(1)); // River
			playRound();
		}
		ArrayList<Integer> winners = null;
		if (state.getPlayersNotFolded() > 1) { // split pot
			state.setStage(STAGE.SHOWDOWN);
			winners = findWinner();
		} else { // no split pot
			winners = new ArrayList<Integer>();
			for (int i = 0; i < playerList.size(); i++) {
				if (!playerList.get(i).hasFolded()) {
					winners.add(i);
					break;
				}
			}
		}
		sharePot(winners);
	}