Skip to content

Commit d95727f

Browse files
author
renzon
committed
Setup de teste para lançamento de passaro
1 parent 15c9c6c commit d95727f

3 files changed

Lines changed: 51 additions & 2 deletions

File tree

README.md

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,38 @@ em pixels vizinhos
3737

3838
## Classe Obstaculo
3939

40-
Classe que representa objstaculos na fase e que podem ser destruidos por pássaros. Herda de ator. Seu caracter de
40+
Classe que representa obstáculos na fase e que podem ser destruidos por pássaros. Herda de ator. Seu caracter de
4141
representação é a letra "O"
4242

4343
### Status
4444

4545
Um obstáculo ao ter seu status alterado para DESTRUIDO deve ter seu caracter de apresentação alterado para " " (vazio).
4646
Assim ele vai "sumir" da tela
4747

48+
## Classe Porco
49+
50+
Classe que representa porcos na fase e que podem ser destruidos por pássaros. Herda de ator. Seu caracter de
51+
representação é a letra "☺"
52+
53+
## Passaro
54+
55+
Classe base de todos os passáros. Cada tipo possui uma velocidade de lançamento (v). No lançamento o jogador escolhe o
56+
ângulo (teta), em graus, no qual o passáro deve ser lançado. O lançamento respeita as regras de lançamento oblìquo com
57+
gravidade (G) constante e igual a 10 m/s^2.
58+
59+
### Método Lancar
60+
61+
O método lançar recebe o ângulo, em graus, que será feito o lançamento. Cada pássaro deve armazenar esse valor e tempo
62+
de lançamento para cálculo de sua posíção. Lembrar que o tempo das fórmulas é delta_t=Tfinal-Tinicial
63+
64+
### Método posicao_horizontal
65+
66+
Fórmula X=X0+v*cos(teta)*delta_t.
67+
68+
### Método posicao_vertical
69+
70+
Fórmula Y=Y0+v*sen(teta)delta_t+(G*delta_t^2)/2.
71+
72+
73+
4874

atores.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,14 @@ class Obstaculo(Ator):
5555
class Porco(Ator):
5656
_caracter_ativo = '☺'
5757

58+
class Passaro(Ator):
59+
_tempo_de_lancamento=None
60+
61+
class PassaroAmarelo(Passaro):
62+
_caracter_ativo = '>'
63+
64+
65+
5866

5967

6068

testes/atores_testes.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from __future__ import unicode_literals
44
from unittest.case import TestCase
5-
from atores import Ator, DESTRUIDO, ATIVO, Obstaculo, Porco
5+
from atores import Ator, DESTRUIDO, ATIVO, Obstaculo, Porco, PassaroAmarelo
66

77

88
def assert_ator_status(test_case, ator, caracter_status_ativo, carater_status_destruido):
@@ -103,4 +103,19 @@ def teste_status(self):
103103
assert_ator_status(self, porco, '☺', '✝')
104104

105105

106+
class PassaroAmareloTests(TestCase):
107+
def teste_status(self):
108+
passaro_amarelo = PassaroAmarelo(1, 1)
109+
assert_ator_status(self, passaro_amarelo, '>', '✝')
110+
111+
def teste_posicao_antes_do_lancamento(self):
112+
passaro_amarelo = PassaroAmarelo(1, 1)
113+
passaro_amarelo.lancar(90, 2) # passaro lancado a 90 graus no tempo 2 segundos
114+
#
115+
for t in range(21):
116+
self.assertEqual((1, 1), passaro_amarelo.calcular_posicao(t / 10),
117+
'Não deveria se mover até tempo %s < 2 segundtos')
118+
119+
120+
106121

0 commit comments

Comments
 (0)