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(); }
//---------------------------------------------------------------------------------- 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(); }