public boolean desvirarCartas(PosicaoCarta pc1, PosicaoCarta pc2)
			throws JogoNaoIniciadoException, DesvirarMesmaCartaException,
			PosicaoDeCartaInvalidaException, JogoNaoFoiFinalizadoException {
		if (!jogoIniciado())
			throw new JogoNaoIniciadoException("Jogo não foi iniciado!");

		if (pc1.getPx() == pc2.getPx() && pc1.getPy() == pc2.getPy())
			throw new DesvirarMesmaCartaException(
					"Você selecionou a mesma carta duas vezes!");

		String conteudoC1 = tabuleiro
				.getConteudoCarta(pc1.getPx(), pc1.getPy());
		String conteudoC2 = tabuleiro
				.getConteudoCarta(pc2.getPx(), pc2.getPy());

		if (conteudoC1 == conteudoC2) {
			getJogadorAtual().setPontuacao(
					getJogadorAtual().getPontuacao() + 10);
			tabuleiro.desvira(pc1.getPx(), pc1.getPy());
			tabuleiro.desvira(pc2.getPx(), pc2.getPy());

			if (jogoFinalizado())
				encerraPartida();
			return true;
		}

		getJogadorAtual().setPontuacao(getJogadorAtual().getPontuacao() - 2);
		proximoJogador();
		return false;
	}