@@ -40,11 +40,7 @@ def colidir(self, outro_ator, tempo, intervalo=1):
4040 x1 , y1 = self .arredondar_posicao ()
4141 x2 , y2 = outro_ator .arredondar_posicao ()
4242
43- def esta_no_intervalo (coordenada1 , coordenada2 ):
44- coordenadas = sorted ([coordenada1 , coordenada2 ])
45- return coordenadas [1 ] - intervalo <= coordenadas [0 ]
46-
47- if esta_no_intervalo (x1 , x2 ) and esta_no_intervalo (y1 , y2 ):
43+ if x1 - intervalo <= x2 <= x1 + intervalo and y1 - intervalo <= y2 <= y1 + intervalo :
4844 self ._tempo_de_colisao = tempo
4945 outro_ator ._tempo_de_colisao = tempo
5046
@@ -98,10 +94,10 @@ def _calcular_posicao(self, tempo):
9894 self ._calcular_posicao_horizontal (delta_t )
9995
10096 def calcular_posicao (self , tempo ):
101- if self ._tempo_de_lancamento is None or tempo < self . _tempo_de_lancamento :
97+ if self ._aguardando_lancamento ( tempo ) :
10298 self .x = self ._x_inicial
10399 self .y = self ._y_inicial
104- elif self ._tempo_de_colisao is not None and tempo >= self . _tempo_de_colisao :
100+ elif self ._ja_colidiu ( tempo ) :
105101 self ._calcular_posicao (self ._tempo_de_colisao )
106102 else :
107103 self ._calcular_posicao (tempo )
@@ -111,6 +107,12 @@ def lancar(self, angulo, tempo):
111107 self ._tempo_de_lancamento = tempo
112108 self ._angulo_de_lancamento = math .radians (angulo )
113109
110+ def _aguardando_lancamento (self , tempo ):
111+ return not self .foi_lancado () or tempo < self ._tempo_de_lancamento
112+
113+ def _ja_colidiu (self , tempo ):
114+ return self .foi_lancado () and self .status (tempo ) == DESTRUIDO
115+
114116
115117class PassaroAmarelo (Passaro ):
116118 velocidade_escalar = 30 # m/s
0 commit comments