-
Notifications
You must be signed in to change notification settings - Fork 0
/
medroso.cpp
67 lines (55 loc) · 1.91 KB
/
medroso.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "medroso.h"
//----------------------------------------------------------------------------------
int Medroso::Mensagem(int msg, void *param)
{
switch (msg)
{
case QUEM_VOCE: return INIMIGO;
case SOLIDO: return SIM;
}
return Nave::Mensagem(msg, param);
}
//----------------------------------------------------------------------------------
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();
}
//----------------------------------------------------------------------------------------
Medroso::Medroso(Central *central, const char *qualNave)
: Nave(central, qualNave)
{
//tipoTiroBasico = TIPO_MISSIL;
//tempoDeRecargaTotal[tipoTiroBasico] = TEMPO_LONGO + TEMPO_CURTO;
}