示例#1
0
void Tela::desenhaTankes() {
	glPushMatrix();
	MoveTankInimigo(0.1);
	int inicio = 0;

	if (!temP2)
		inicio = 1;

	for (int i = inicio; i < tankes.size(); i++) {
		if (tankes[i]->getStatus() == 'i' && tankesRestantes > 0 && i > 1) {
			tankesRestantes--;
			bool criou = false;
			while (!criou) {
				for (float j = 16.5; j < 360; j += 36) {
					if (entradaDisponivel(j)) {
						tankes[i] = new Tank(j, 250.5, 180, escolheTank());
						criou = true;
						break;
					}
				}
			}

		}
		else if (tankes[i]->getStatus() != 'i') {
			tankes[i]->desenha();
			if (i > 1)Atira(i);
		}
	}
	glPopMatrix();
}
示例#2
0
文件: medroso.cpp 项目: lymber/tdm
//----------------------------------------------------------------------------------
void Medroso::Atualiza(void)
{
   //procura por quem é a nave principal na central
   Objeto *nave = Procura(JOGADOR); 
    
   if (nave == NULL) return; //por algum motivo, a nave principal não está na central
   
   ZeraComandos();
   
   
   //tenta se afastar dos outros inimigos
   Objeto *outro = InimigoMaisProximo();
   
   if (outro != NULL && outro->Distancia(Posicao()) < 10)
   {
      if (NaEsquerda(outro->Posicao())) JogadaDeLadoDir(true);
      if (NaDireita(outro->Posicao())) JogadaDeLadoEsq(true);
      if (NaTras(outro->Posicao())) ParaFrente(true);
      if (NaFrente(outro->Posicao())) ParaTras(true);
   }
   
   if (nave->NaFrente(Posicao())) //se eu estou na frente do outro, melhor fugir
   {
      if (NaEsquerda(nave->Posicao())) ParaDireita(true);
      else ParaEsquerda(true);

      if (NaFrente(nave->Posicao())) ParaTras(true);
      else ParaFrente(true);
   }
   else //se ele está de costas para mim, vamos atacar
   {
     if (NaEsquerda(nave->Posicao())) ParaEsquerda(true);
     else ParaDireita(true);
     if (NaFrente(nave->Posicao()))
     {
         if (Distancia(nave->Posicao()) > 10) ParaFrente(true);
     }
     else ParaTras(true);    
   }
   if (NaFrente(nave->Posicao())) Atira(true);
   else Atira(false);
   
   Nave::Atualiza();
}