Skip to content

Commit a678883

Browse files
author
renzon
committed
refactorin para passaro informar se foi lançado ou nao
1 parent b8edd43 commit a678883

File tree

4 files changed

+27
-8
lines changed

4 files changed

+27
-8
lines changed

atores.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ def __init__(self, x=0, y=0):
7171
self._tempo_de_lancamento = None
7272
self._angulo_de_lancamento = None # radianos
7373

74+
def foi_lancado(self):
75+
return self._tempo_de_lancamento is not None
76+
7477
def colidir_com_chao(self, tempo):
7578
if self.y <= 0:
7679
self._tempo_de_colisao = tempo
@@ -107,6 +110,7 @@ class PassaroAmarelo(Passaro):
107110
_velocidade_scalar = 30 # m/s
108111
_caracter_ativo = '>'
109112

113+
110114
class PassaroVermelho(Passaro):
111115
_velocidade_scalar = 20 # m/s
112116
_caracter_ativo = '»'

fase.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ def status(self, tempo):
3636
return 'Jogo em encerrado. Você perdeu!'
3737
return 'Jogo em encerrado. Você ganhou!'
3838

39+
def lancar(self, angulo, tempo):
40+
for passaro in self._passaros:
41+
if ATIVO == passaro.status(tempo):
42+
passaro.lancar(angulo, tempo)
43+
return
44+
3945
def _existe_porco_ativo(self, tempo):
4046
return self._verificar_se_existe_ator_ativo(self._porcos, tempo)
4147

testes/atores_testes.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,13 +113,19 @@ def assert_passaro_posicao(self, x_esperado, y_esperado, status_esperado, passar
113113

114114

115115
class PassaroVermelhoTests(PassaroBaseTests):
116+
def teste_foi_lancado(self):
117+
passaro_vermelho = PassaroVermelho(1, 1)
118+
self.assertFalse(passaro_vermelho.foi_lancado())
119+
passaro_vermelho.lancar(0, 0)
120+
self.assertTrue(passaro_vermelho.foi_lancado())
121+
116122
def teste_posicao_antes_do_lancamento(self):
117-
passaro_amarelo = PassaroVermelho(1, 1)
118-
passaro_amarelo.lancar(90, 2) # passaro lancado a 90 graus no tempo 2 segundos
123+
passaro_vermelho = PassaroVermelho(1, 1)
124+
passaro_vermelho.lancar(90, 2) # passaro lancado a 90 graus no tempo 2 segundos
119125
#
120126
for t in range(20):
121127
t /= 10
122-
self.assertEqual((1, 1), passaro_amarelo.calcular_posicao(t),
128+
self.assertEqual((1, 1), passaro_vermelho.calcular_posicao(t),
123129
'Não deveria se mover no tempo %s < 2 segundtos' % t)
124130

125131
def teste_status(self):

testes/fase_testes.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from __future__ import unicode_literals
44
from unittest.case import TestCase
5+
import math
56
from atores import Obstaculo, Porco, PassaroVermelho, PassaroAmarelo
67
from fase import Fase
78

@@ -106,16 +107,18 @@ def teste_lancar_passaro_sem_erro_quando_nao_existe_passaro(self):
106107

107108
def teste_lancar_passaro_sem_erro_quando_nao_existe_passaro(self):
108109
passaro_vermelho, passaro_amarelo = PassaroVermelho(1, 1), PassaroAmarelo(1, 1)
109-
fase = Fase(passaro_vermelho, passaro_amarelo)
110+
fase = Fase()
111+
fase.adicionar_passaro(passaro_vermelho, passaro_amarelo)
112+
110113
fase.lancar(90, 1)
111-
fase.lancar(45, 3)
112-
fase.lancar(31, 5) # testando que lançar passaros depos de todos lançados não causa erro
113-
self.assertEqual(90, passaro_vermelho._angulo_de_lancamento)
114+
self.assertEqual(math.radians(90), passaro_vermelho._angulo_de_lancamento)
114115
self.assertEqual(1, passaro_vermelho._tempo_de_lancamento)
115116

116-
self.assertEqual(45, passaro_amarelo._angulo_de_lancamento)
117+
fase.lancar(45, 3)
118+
self.assertEqual(math.radians(45), passaro_amarelo._angulo_de_lancamento)
117119
self.assertEqual(3, passaro_amarelo._tempo_de_lancamento)
118120

121+
fase.lancar(31, 5) # testando que lançar passaros depos de todos lançados não causa erro
119122

120123
# def teste_calcular_pontos(self):
121124
# fase=Fase()

0 commit comments

Comments
 (0)