Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a76670a

Browse files
author
renzon
committed
Versão mais simples finalizada. Falta documentar e retirar botõe de reset e replay
1 parent df7abf8 commit a76670a

File tree

5 files changed

+72
-87
lines changed

5 files changed

+72
-87
lines changed

atores.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ def foi_lancado(self):
5757
def colidir_com_chao(self):
5858
if self.y <= 0:
5959
self.status = DESTRUIDO
60+
self.caracter=self._caracter_destruido
6061

6162
def _calcular_posicao_horizontal(self, delta_t):
6263
self.x = self._x_inicial + self.velocidade_escalar * delta_t * math.cos(self._angulo_de_lancamento)
@@ -86,8 +87,8 @@ def lancar(self, angulo, tempo):
8687
def _aguardando_lancamento(self, tempo):
8788
return not self.foi_lancado() or tempo < self._tempo_de_lancamento
8889

89-
def _ja_colidiu(self, tempo):
90-
return self.foi_lancado() and self.status(tempo) == DESTRUIDO
90+
def _ja_colidiu(self):
91+
return self.foi_lancado() and self.status() == DESTRUIDO
9192

9293

9394
class PassaroAmarelo(Passaro):

fase.py

+20-23
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
class Ponto():
77
def __init__(self, x, y, caracter):
88
self.caracter = caracter
9-
self.x = x
10-
self.y = y
9+
self.x = round(x)
10+
self.y = round(y)
1111

1212
def __eq__(self, other):
1313
return self.x == other.x and self.y == other.y and self.caracter == other.caracter
@@ -35,13 +35,13 @@ def adicionar_porco(self, *porcos):
3535
def adicionar_passaro(self, *passaros):
3636
self._adicionar_ator(self._passaros, *passaros)
3737

38-
def acabou(self, tempo):
39-
return not self._existe_porco_ativo(tempo) or not self._existe_passaro_ativo(tempo)
38+
def acabou(self):
39+
return not self._existe_porco_ativo() or not self._existe_passaro_ativo()
4040

41-
def status(self, tempo):
42-
if not self._existe_porco_ativo(tempo):
41+
def status(self):
42+
if not self._existe_porco_ativo():
4343
return 'Jogo em encerrado. Você ganhou!'
44-
if self._existe_passaro_ativo(tempo):
44+
if self._existe_passaro_ativo():
4545
return 'Jogo em andamento.'
4646
return 'Jogo em encerrado. Você perdeu!'
4747

@@ -51,37 +51,34 @@ def lancar(self, angulo, tempo):
5151
passaro.lancar(angulo, tempo)
5252
return
5353

54-
def resetar(self):
55-
for ator in chain(self._passaros, self._obstaculos, self._porcos):
56-
ator.resetar()
5754

5855
def calcular_pontos(self, tempo):
5956
pontos = [self._calcular_ponto_de_passaro(p, tempo) for p in self._passaros]
6057
obstaculos_e_porcos = chain(self._obstaculos, self._porcos)
61-
pontos.extend([self._transformar_em_ponto(ator, tempo) for ator in obstaculos_e_porcos])
58+
pontos.extend([self._transformar_em_ponto(ator) for ator in obstaculos_e_porcos])
6259
return pontos
6360

64-
def _transformar_em_ponto(self, ator, tempo):
65-
return Ponto(ator.x, ator.y, ator.caracter(tempo))
61+
def _transformar_em_ponto(self, ator):
62+
return Ponto(ator.x, ator.y, ator.caracter)
6663

6764
def _calcular_ponto_de_passaro(self, passaro, tempo, ):
6865
passaro.calcular_posicao(tempo)
6966
for ator in chain(self._obstaculos, self._porcos):
70-
if ATIVO == passaro.status(tempo):
71-
passaro.colidir(ator, tempo, self.intervalo_de_colisao)
72-
passaro.colidir_com_chao(tempo)
67+
if ATIVO == passaro.status:
68+
passaro.colidir(ator, self.intervalo_de_colisao)
69+
passaro.colidir_com_chao()
7370
else:
7471
break
75-
return self._transformar_em_ponto(passaro, tempo)
72+
return self._transformar_em_ponto(passaro)
7673

77-
def _existe_porco_ativo(self, tempo):
78-
return self._verificar_se_existe_ator_ativo(self._porcos, tempo)
74+
def _existe_porco_ativo(self):
75+
return self._verificar_se_existe_ator_ativo(self._porcos)
7976

80-
def _verificar_se_existe_ator_ativo(self, atores, tempo):
77+
def _verificar_se_existe_ator_ativo(self, atores):
8178
for a in atores:
82-
if a.status(tempo) == ATIVO:
79+
if a.status == ATIVO:
8380
return True
8481
return False
8582

86-
def _existe_passaro_ativo(self, tempo):
87-
return self._verificar_se_existe_ator_ativo(self._passaros, tempo)
83+
def _existe_passaro_ativo(self):
84+
return self._verificar_se_existe_ator_ativo(self._passaros)

placa_grafica.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def _animar(delta_t, fase, passo, tempo, msg):
5252

5353

5454
def _jogar(delta_t, fase, passo, tempo, msg):
55-
while not fase.acabou(tempo):
55+
while not fase.acabou():
5656
tempo = desenhar_e_esperar(delta_t, fase, passo, tempo, msg)
5757
entrada = ouvir_teclado()
5858
if entrada:

placa_grafica_tkinter.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ def _animar():
5757
if tempo <= 0:
5858
tempo = 0
5959
delta_t /= -multiplicador_rebobinar
60-
if fase.acabou(tempo):
60+
if fase.acabou():
6161
camada_de_atores.create_image(162, 55, image=PYTHONBIRDS_LOGO, anchor=NW)
6262
camada_de_atores.create_image(54, 540, image=MENU, anchor=NW)
63-
if 'ganhou' in fase.status(tempo):
63+
if 'ganhou' in fase.status():
6464
img = VOCE_GANHOU
6565
else:
6666
img = VOCE_PERDEU

testes/fase_testes.py

+46-59
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def teste_adicionar_passaro(self):
5252

5353
def teste_acabou_sem_porcos(self):
5454
fase = Fase()
55-
self.assertTrue(fase.acabou(0))
55+
self.assertTrue(fase.acabou())
5656

5757
def teste_acabou_com_porcos_e_passaros(self):
5858
fase = Fase()
@@ -61,60 +61,52 @@ def teste_acabou_com_porcos_e_passaros(self):
6161
fase.adicionar_porco(*porcos)
6262
fase.adicionar_passaro(*passaros)
6363

64-
self.assertFalse(fase.acabou(0))
65-
self.assertFalse(fase.acabou(2.9))
66-
self.assertFalse(fase.acabou(3))
64+
self.assertFalse(fase.acabou())
6765

68-
# colidingo cada passaro com um porco no tempo 3
66+
# colidindo cada passaro com um porco no tempo 3
6967
for passaro, porco in zip(passaros, porcos):
7068
passaro.colidir(porco, 3)
7169

72-
self.assertFalse(fase.acabou(0))
73-
self.assertFalse(fase.acabou(2.9))
74-
self.assertTrue(fase.acabou(3))
70+
self.assertTrue(fase.acabou())
7571

7672
fase.adicionar_obstaculo(Obstaculo())
77-
self.assertTrue(fase.acabou(3), 'Obstáculo não interfere no fim do jogo')
73+
self.assertTrue(fase.acabou(), 'Obstáculo não interfere no fim do jogo')
7874

7975
fase.adicionar_porco(Porco())
80-
self.assertTrue(fase.acabou(3), 'Com Porco ativo e sem pássaro para lançar, o jogo deveria acabar')
76+
self.assertTrue(fase.acabou(), 'Com Porco ativo e sem pássaro para lançar, o jogo deveria acabar')
8177

8278
fase.adicionar_passaro(PassaroAmarelo())
83-
self.assertFalse(fase.acabou(3), 'Com Porco ativo e com pássaro para lançar, o jogo não deveria acabar')
79+
self.assertFalse(fase.acabou(), 'Com Porco ativo e com pássaro para lançar, o jogo não deveria acabar')
8480

8581
def teste_status(self):
8682
fase = Fase()
8783
porcos = [Porco(1, 1) for i in range(2)]
8884
passaros = [PassaroAmarelo(1, 1) for i in range(2)]
8985
fase.adicionar_porco(*porcos)
9086
fase.adicionar_passaro(*passaros)
91-
self.assertEqual('Jogo em andamento.', fase.status(0))
92-
self.assertEqual('Jogo em andamento.', fase.status(2.9))
93-
self.assertEqual('Jogo em andamento.', fase.status(3))
87+
self.assertEqual('Jogo em andamento.', fase.status())
9488

9589
for passaro, porco in zip(passaros, porcos):
9690
passaro.colidir(porco, 3)
9791

98-
self.assertEqual('Jogo em andamento.', fase.status(0))
99-
self.assertEqual('Jogo em andamento.', fase.status(2.9))
100-
self.assertEqual('Jogo em encerrado. Você ganhou!', fase.status(3),
92+
self.assertEqual('Jogo em encerrado. Você ganhou!', fase.status(),
10193
'Sem porcos ativos o jogo deveria terminar com vitória')
10294

10395
fase.adicionar_obstaculo(Obstaculo())
104-
self.assertEqual('Jogo em encerrado. Você ganhou!', fase.status(3),
96+
self.assertEqual('Jogo em encerrado. Você ganhou!', fase.status(),
10597
'Obstáculo não interfere para definir vitória')
10698

10799
porco = Porco()
108100
fase.adicionar_porco(porco)
109-
self.assertEqual('Jogo em encerrado. Você perdeu!', fase.status(3),
101+
self.assertEqual('Jogo em encerrado. Você perdeu!', fase.status(),
110102
'Com Porco ativo e sem pássaro para lançar, o jogo deveria acabar em derrota')
111103

112104
fase.adicionar_passaro(PassaroAmarelo())
113-
self.assertEqual('Jogo em andamento.', fase.status(3),
105+
self.assertEqual('Jogo em andamento.', fase.status(),
114106
'Com Porco ativo e com pássaro para lançar, o jogo não deveria acabar')
115107

116108
porco.colidir(porco, 3)
117-
self.assertEqual('Jogo em encerrado. Você ganhou!', fase.status(3),
109+
self.assertEqual('Jogo em encerrado. Você ganhou!', fase.status(),
118110
'Sem porco ativo, o jogo deveria acabar com vitória')
119111

120112
def teste_lancar_passaro_sem_erro_quando_nao_existe_passaro(self):
@@ -145,8 +137,8 @@ def teste_intervalo_de_colisao_padrão(self):
145137
porco = Porco(2, 2)
146138
fase.adicionar_porco(porco)
147139
fase.calcular_pontos(0)
148-
self.assertEqual(DESTRUIDO, passaro.status(0))
149-
self.assertEqual(DESTRUIDO, porco.status(0))
140+
self.assertEqual(DESTRUIDO, passaro.status)
141+
self.assertEqual(DESTRUIDO, porco.status)
150142

151143
def teste_intervalo_de_colisao_nao_padrao(self):
152144
'''
@@ -158,53 +150,54 @@ def teste_intervalo_de_colisao_nao_padrao(self):
158150
porco = Porco(31, 31)
159151
fase.adicionar_porco(porco)
160152
fase.calcular_pontos(0)
161-
self.assertEqual(DESTRUIDO, passaro.status(0))
162-
self.assertEqual(DESTRUIDO, porco.status(0))
153+
self.assertEqual(DESTRUIDO, passaro.status)
154+
self.assertEqual(DESTRUIDO, porco.status)
163155

164156
def teste_calcular_pontos(self):
165157
fase_exemplo = criar_fase_exemplo()
166158
expected = [Ponto(3, 3, 'V'), Ponto(3, 3, 'A'), Ponto(3, 3, 'A'), Ponto(31, 10, 'O'), Ponto(78, 1, '@'),
167159
Ponto(70, 1, '@')]
168160
self.assertListEqual(expected, fase_exemplo.calcular_pontos(0))
169161

170-
expected = [Ponto(31, 11, 'v'), Ponto(17, 25, 'A'), Ponto(3, 3, 'A'), Ponto(31, 10, ' '), Ponto(78, 1, '@'),
162+
fase_exemplo.lancar(45, 1)
163+
164+
# i variando de 1 até 2.9
165+
for i in range(100, 300, 1):
166+
fase_exemplo.calcular_pontos(i / 100)
167+
168+
fase_exemplo.lancar(63, 3)
169+
170+
# i variando de 3 até 3.9
171+
for i in range(300, 400, 1):
172+
fase_exemplo.calcular_pontos(i / 100)
173+
174+
fase_exemplo.lancar(23, 4)
175+
176+
expected = [Ponto(32, 11, 'v'), Ponto(17, 25, 'A'), Ponto(3, 3, 'A'), Ponto(31, 10, ' '), Ponto(78, 1, '@'),
171177
Ponto(70, 1, '@')]
178+
172179
self.assertListEqual(expected, fase_exemplo.calcular_pontos(4))
173180

174-
expected = [Ponto(31, 11, 'v'), Ponto(57, 30, 'A'), Ponto(69, 2, 'a'), Ponto(31, 10, ' '), Ponto(78, 1, '@'),
175-
Ponto(70, 1, '+')]
176-
self.assertListEqual(expected, fase_exemplo.calcular_pontos(7))
181+
# i variando de 4 até 6.9
182+
for i in range(400, 700, 1):
183+
fase_exemplo.calcular_pontos(i / 100)
177184

178-
expected = [Ponto(31, 11, 'v'), Ponto(77, 2, 'a'), Ponto(69, 2, 'a'), Ponto(31, 10, ' '), Ponto(78, 1, '+'),
185+
expected = [Ponto(32, 11, 'v'), Ponto(57, 30, 'A'), Ponto(70, 2, 'a'), Ponto(31, 10, ' '), Ponto(78, 1, '@'),
179186
Ponto(70, 1, '+')]
180-
self.assertListEqual(expected, fase_exemplo.calcular_pontos(8.5))
181187

182-
self.assertFalse(fase_exemplo.acabou(8.3))
183-
self.assertTrue(fase_exemplo.acabou(8.5))
188+
self.assertListEqual(expected, fase_exemplo.calcular_pontos(7))
184189

185-
def teste_resetar(self):
186-
'Testa se o método resetar de faze chama o método resetar de todos atores'
187-
fase_exemplo = criar_fase_exemplo()
188-
atores = list(chain(fase_exemplo._passaros, fase_exemplo._obstaculos, fase_exemplo._porcos))
189-
fase_exemplo.calcular_pontos(0)
190+
# i variando de 7 até 8.49
191+
for i in range(700, 849, 1):
192+
fase_exemplo.calcular_pontos(i / 100)
193+
print(fase_exemplo.calcular_pontos(8.5))
190194

191-
fase_exemplo.calcular_pontos(4)
192195

193-
fase_exemplo.calcular_pontos(7)
194-
fase_exemplo.calcular_pontos(8.5)
196+
expected = [Ponto(32,11,'v'), Ponto(77,0,'a'), Ponto(70,2,'a'), Ponto(31,10,' '), Ponto(78,1,'+'), Ponto(70,1,'+')]
195197

196-
self.assertFalse(fase_exemplo.acabou(8.3))
197-
self.assertTrue(fase_exemplo.acabou(8.5))
198-
# certificando que todos atore foram destruidos
199-
for a in atores:
200-
self.assertEqual(DESTRUIDO, a.status(8.5))
201-
for p in fase_exemplo._passaros:
202-
self.assertTrue(p.foi_lancado(), 'Todos pássaros foram lançados')
203-
fase_exemplo.resetar()
204-
for a in atores:
205-
self.assertEqual(ATIVO, a.status(8.5), 'Após resetar atore devem voltar a ficar ativos')
206-
for p in fase_exemplo._passaros:
207-
self.assertFalse(p.foi_lancado(), 'Nenhum pássaro foi lançado')
198+
self.assertListEqual(expected, fase_exemplo.calcular_pontos(8.5))
199+
200+
self.assertTrue(fase_exemplo.acabou())
208201

209202

210203
def criar_fase_exemplo():
@@ -217,12 +210,6 @@ def criar_fase_exemplo():
217210
fase_exemplo.adicionar_porco(*porcos)
218211
fase_exemplo.adicionar_obstaculo(*obstaculos)
219212

220-
fase_exemplo.lancar(45, 1)
221-
fase_exemplo.lancar(63, 3)
222-
fase_exemplo.lancar(23, 4)
223-
224-
for i in range(86):
225-
fase_exemplo.calcular_pontos(i / 10)
226213
return fase_exemplo
227214

228215

0 commit comments

Comments
 (0)