-
Notifications
You must be signed in to change notification settings - Fork 211
/
Copy pathColisao.h
58 lines (51 loc) · 1.89 KB
/
Colisao.h
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
int verificarColisao( double X1, double Y1, double Larg1, double Alt1,
double X2, double Y2, double Larg2, double Alt2)
{
if(X1 + Larg1 <= X2)
{
return 0;
}
if(X1 >= X2 + Larg2)
{
return 0;
}
if(Y1 + Alt1 <= Y2)
{
return 0;
}
if(Y1 >= Y2 + Alt2)
{
return 0;
}
return 1;
}
void AplicarColisao()
{
int IndiceObstaculo;
double XObstaculo, YObstaculo, AlturaObstaculo, LarguraObstaculo;
double DinoX, DinoY, DinoLarg, DinoAlt;
int FatorDeCorrecaoHorizontal = 7;
int FatorDeCorrecaoVertical = 5;
for(int i=0; i<QuantidadeDinossauros; i++)
{
if(Dinossauros[i].Estado != 3) /// MORTO
{
IndiceObstaculo = ProcurarProximoObstaculo(Dinossauros[i].X);
XObstaculo = obstaculo[IndiceObstaculo].X;
YObstaculo = obstaculo[IndiceObstaculo].Y;
AlturaObstaculo = obstaculo[IndiceObstaculo].sprite[obstaculo[IndiceObstaculo].FrameAtual]->Altura;
LarguraObstaculo = obstaculo[IndiceObstaculo].sprite[obstaculo[IndiceObstaculo].FrameAtual]->Largura;
DinoX = Dinossauros[i].X + FatorDeCorrecaoHorizontal;
DinoY = Dinossauros[i].Y + FatorDeCorrecaoVertical;
DinoLarg = Dinossauros[i].sprite[Dinossauros[i].SpriteAtual].Largura - 2*FatorDeCorrecaoHorizontal;
DinoAlt = Dinossauros[i].sprite[Dinossauros[i].SpriteAtual].Altura - 2*FatorDeCorrecaoVertical;
if(verificarColisao(DinoX, DinoY, DinoLarg, DinoAlt,
XObstaculo, YObstaculo, LarguraObstaculo, AlturaObstaculo) == 1)
{
Dinossauros[i].Estado = 3;
DinossaurosMortos = DinossaurosMortos + 1;
//system("pause");
}
}
}
}