Beispiel #1
0
void Mapa::Combate(Jogador *jog) {

	Jogador *j = nullptr;

	// se exitir um jogador ao lado -> verificar a adjacencia

	if (GuardaJogador(jog) != nullptr) {
		
		j = GuardaJogador(jog);

		// se o jogador tiver uma pedra na mao
		if (jog->getPedra() == true) {

			j->setVida(j->getVida() - 2);

			// tirar a pedra do vetor de objeto;

			jog->retiraPedra();

			// adiciona pontos
			jog->setPontos(jog->getPontos() + 5);
		}

		// se nao tiver uma pedra ataca com as maos
		else {
			j->setVida(j->getVida() - 1);

			jog->setPontos(jog->getPontos() + 3);
		}

		if (j->getVida() <= 0) {
			jog->setPontos(jog->getPontos() + 10);
		}
	}

}
void DesenhaCena() {
	// Limpa a janela com a cor especificada como cor de fundo
	glClear(GL_COLOR_BUFFER_BIT);

	if (estadosJogo.getJogo())
	{
		if (inimigo.getAtirando() && tiroInimigo.getAtirando() == false) {
			tiroInimigo.setAtirando(true);
			tiroInimigo.CriarTiro(inimigo);
		}

		if (tiroPlayer.getAtirando()) {
			tiroPlayer.setPlayerAtirando(true);
			tiroPlayer.setInimigoAtirando(false);
			tiroPlayer.Desenha();
		}

		if (tiroInimigo.getAtirando()) {
			tiroInimigo.setInimigoAtirando(true);
			tiroInimigo.setPlayerAtirando(false);
			tiroInimigo.Desenha();
		}

		//instancia do tiro do player
		tiroPlayer.Colisao(inimigo, jogador);

		//instancia do tiro do inimigo
		tiroInimigo.Colisao(inimigo, jogador);

		//colisao da nave inimiga com a do jogador
		jogador.Colisao(inimigo);


		inimigo.Desenha();
		jogador.Desenha();

		telaJogo.DesenhaTexto(tiroPlayer);

		if (jogador.getVida() <= 0)
		{
			estadosJogo.setOverAtivo(true);
			estadosJogo.setJogo(false);
		}
	}
	
		if (estadosJogo.getMenuAtivo())
	{
		estadosJogo.menu();
	}

	else if (estadosJogo.getOverAtivo())
	{
		estadosJogo.gameOver();
	}

		 if (estadosJogo.getSairJogo())
	{
		exit(0);
	}

	glutSwapBuffers();
	//função que solicita o redesenho da DesenhaCena, incorporando as modificações de variáveis
	glutPostRedisplay();
}