Skip to content

Commit 19e65d5

Browse files
committed
[feat] Added features according to the 78% of the course.
1 parent ea88ad9 commit 19e65d5

10 files changed

Lines changed: 450 additions & 6 deletions

File tree

fase.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,12 @@ def status(self):
7373
7474
:return:
7575
"""
76-
return VITORIA
76+
if not self._possui_porco_ativo():
77+
return VITORIA
78+
elif self._possui_passaro_ativo():
79+
return EM_ANDAMENTO
80+
else:
81+
return DERROTA
7782

7883
def lancar(self, angulo, tempo):
7984
"""
@@ -86,7 +91,10 @@ def lancar(self, angulo, tempo):
8691
:param angulo: ângulo de lançamento
8792
:param tempo: Tempo de lançamento
8893
"""
89-
pass
94+
for passaro in self._passaros:
95+
if not passaro.foi_lancado():
96+
passaro.lancar(angulo, tempo)
97+
break
9098

9199

92100
def calcular_pontos(self, tempo):
@@ -105,3 +113,16 @@ def calcular_pontos(self, tempo):
105113
def _transformar_em_ponto(self, ator):
106114
return Ponto(ator.x, ator.y, ator.caracter())
107115

116+
def _possui_porco_ativo(self):
117+
for porco in self._porcos:
118+
if porco.status==ATIVO:
119+
return True
120+
return False
121+
122+
def _possui_passaro_ativo(self):
123+
for passaro in self._passaros:
124+
if passaro.status==ATIVO:
125+
return True
126+
return False
127+
128+

oo/carro.py

Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
"""
2+
Você deve criar uma classe carro que vai possuir
3+
butos compostos por outras duas classes:
4+
5+
Motor
6+
Direção
7+
O Motor terá a responsabilidade de controlar a velocidade.
8+
Ele oferece os seguintes atributos:
9+
10+
Atributo de dado velocidade
11+
Método acelerar, que deverá incremetar a velocidade de uma unidade
12+
Método frear que deverá decrementar a velocidade em duas unidades
13+
A Direção terá a responsabilidade de controlar a direção. Ela oferece
14+
os seguintes atributos:
15+
16+
Valor de diração com valores possíveis: Norte, Sul, Leste, Oeste.
17+
Método girar_a_direita
18+
Método girar_a_esquerda
19+
20+
N
21+
O L
22+
S
23+
24+
IMPORTANTE:
25+
Para rodar o doctest, no terminal:
26+
python -m doctest <nome_do_arquivo>.py # rodar todos os testes de uma só vez.
27+
python -m doctest -f <nome_do_arquivo>.py # rodar testes e para na primeira falha.
28+
29+
>>> # Testando motor
30+
>>> motor = Motor()
31+
>>> motor.velocidade
32+
0
33+
>>> motor.acelerar()
34+
>>> motor.velocidade
35+
1
36+
>>> motor.acelerar()
37+
>>> motor.velocidade
38+
2
39+
>>> motor.acelerar()
40+
>>> motor.velocidade
41+
3
42+
>>> motor.frear()
43+
>>> motor.velocidade
44+
1
45+
>>> motor.frear()
46+
>>> motor.velocidade
47+
0
48+
>>> # Testando Direcao
49+
>>> direcao = Direcao()
50+
>>> direcao.valor
51+
'Norte'
52+
>>> direcao.girar_a_direita()
53+
>>> direcao.valor
54+
'Leste'
55+
>>> direcao.girar_a_direita()
56+
>>> direcao.valor
57+
'Sul'
58+
>>> direcao.girar_a_direita()
59+
>>> direcao.valor
60+
'Oeste'
61+
>>> direcao.girar_a_direita()
62+
>>> direcao.valor
63+
'Norte'
64+
>>> direcao.girar_a_esquerda()
65+
>>> direcao.valor
66+
'Oeste'
67+
>>> direcao.girar_a_esquerda()
68+
>>> direcao.valor
69+
'Sul'
70+
>>> direcao.girar_a_esquerda()
71+
>>> direcao.valor
72+
'Leste'
73+
>>> direcao.girar_a_esquerda()
74+
>>> direcao.valor
75+
'Norte'
76+
>>> carro = Carro(direcao, motor)
77+
>>> carro.calcular_velocidade()
78+
0
79+
>>> carro.acelerar()
80+
>>> carro.calcular_velocidade()
81+
1
82+
>>> carro.acelerar()
83+
>>> carro.calcular_velocidade()
84+
2
85+
>>> carro.frear()
86+
>>> carro.calcular_velocidade()
87+
0
88+
>>> carro.calcular_direcao()
89+
'Norte'
90+
>>> carro.girar_a_direita()
91+
>>> carro.calcular_direcao()
92+
'Leste'
93+
>>> carro.girar_a_esquerda()
94+
>>> carro.calcular_direcao()
95+
'Norte'
96+
>>> carro.girar_a_esquerda()
97+
>>> carro.calcular_direcao()
98+
'Oeste'
99+
100+
"""
101+
102+
class Direcao:
103+
104+
def __init__(self, valor="Norte"):
105+
self.valor = valor
106+
107+
def girar_a_direita(self):
108+
if self.valor == "Norte":
109+
self.valor = "Leste"
110+
elif self.valor == "Leste":
111+
self.valor = "Sul"
112+
elif self.valor == "Sul":
113+
self.valor = "Oeste"
114+
else:
115+
self.valor = "Norte"
116+
117+
def girar_a_esquerda(self):
118+
if self.valor == "Norte":
119+
self.valor = "Oeste"
120+
elif self.valor == "Oeste":
121+
self.valor = "Sul"
122+
elif self.valor == "Sul":
123+
self.valor = "Leste"
124+
else:
125+
self.valor = "Norte"
126+
127+
128+
class Motor:
129+
130+
def __init__(self, velocidade=0):
131+
self.velocidade = velocidade
132+
133+
def acelerar(self):
134+
self.velocidade += 1
135+
136+
def frear(self):
137+
if self.velocidade-2 < 0:
138+
self.velocidade = 0
139+
else:
140+
self.velocidade -= 2
141+
142+
143+
class Carro:
144+
## Se eu tivesse deixado as classes Motor e Direcao em arquivos separados do
145+
## carro.py, as chamadas de impoortação deveriam ser colocadas.
146+
# from direcao import Direcao
147+
# from motor import Motor
148+
149+
def __init__(self, direcao=Direcao(), motor=Motor()):
150+
self.motor = motor
151+
self.direcao = direcao
152+
153+
def calcular_velocidade(self):
154+
return self.motor.velocidade
155+
156+
def acelerar(self):
157+
self.motor.acelerar()
158+
159+
def frear(self):
160+
self.motor.frear()
161+
162+
def calcular_direcao(self):
163+
return self.direcao.valor
164+
165+
def girar_a_direita(self):
166+
self.direcao.girar_a_direita()
167+
168+
def girar_a_esquerda(self):
169+
self.direcao.girar_a_esquerda()
170+
171+
172+
# if __name__ == "__main__":
173+
# from direcao import Direcao
174+
# from motor import Motor
175+
# carro = Carro(Direcao("Sul"), Motor(10))
176+
# print(carro.calcular_velocidade())
177+
# print(0)
178+
# carro.acelerar()
179+
# print(carro.calcular_velocidade())
180+
# print(1)
181+
# carro.acelerar()
182+
# print(carro.calcular_velocidade())
183+
# print(2)
184+
# carro.frear()
185+
# print(carro.calcular_velocidade())
186+
# print(0)
187+
# print(carro.calcular_direcao())
188+
# print('Norte')
189+
# carro.girar_a_direita()
190+
# print(carro.calcular_direcao())
191+
# print('Leste')
192+
# carro.girar_a_esquerda()
193+
# print(carro.calcular_direcao())
194+
# print('Norte')
195+
# carro.girar_a_esquerda()
196+
# print(carro.calcular_direcao())
197+
# print('Oeste')

oo/direcao.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
class Direcao:
2+
3+
def __init__(self, valor="Norte"):
4+
self.valor = valor
5+
6+
def girar_a_direita(self):
7+
if self.valor == "Norte":
8+
self.valor = "Leste"
9+
elif self.valor == "Leste":
10+
self.valor = "Sul"
11+
elif self.valor == "Sul":
12+
self.valor = "Oeste"
13+
else:
14+
self.valor = "Norte"
15+
16+
17+
def girar_a_esquerda(self):
18+
if self.valor == "Norte":
19+
self.valor = "Oeste"
20+
elif self.valor == "Oeste":
21+
self.valor = "Sul"
22+
elif self.valor == "Sul":
23+
self.valor = "Leste"
24+
else:
25+
self.valor = "Norte"
26+
27+
28+
if __name__ == "__main__":
29+
# Testando Direcao
30+
direcao = Direcao()
31+
print(direcao.valor)
32+
print('Norte')
33+
direcao.girar_a_direita()
34+
print(direcao.valor)
35+
print('Leste')
36+
direcao.girar_a_direita()
37+
print(direcao.valor)
38+
print('Sul')
39+
direcao.girar_a_direita()
40+
print(direcao.valor)
41+
print('Oeste')
42+
direcao.girar_a_direita()
43+
print(direcao.valor)
44+
print('Norte')
45+
direcao.girar_a_esquerda()
46+
print(direcao.valor)
47+
print('Oeste')
48+
direcao.girar_a_esquerda()
49+
print(direcao.valor)
50+
print('Sul')
51+
direcao.girar_a_esquerda()
52+
print(direcao.valor)
53+
print('Leste')
54+
direcao.girar_a_esquerda()
55+
print(direcao.valor)
56+
print('Norte')
57+

oo/motor.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
class Motor:
2+
3+
def __init__(self, velocidade=0):
4+
self.velocidade = velocidade
5+
6+
def acelerar(self):
7+
self.velocidade += 1
8+
9+
def frear(self):
10+
if self.velocidade-2 < 0:
11+
self.velocidade = 0
12+
else:
13+
self.velocidade -= 2
14+
15+
16+
17+
if __name__ == "__main__":
18+
motor = Motor()
19+
motor.velocidade
20+
print(motor.velocidade)
21+
print(0)
22+
motor.acelerar()
23+
motor.velocidade
24+
print(motor.velocidade)
25+
print(1)
26+
motor.acelerar()
27+
motor.velocidade
28+
print(motor.velocidade)
29+
print(2)
30+
motor.acelerar()
31+
motor.velocidade
32+
print(motor.velocidade)
33+
print(3)
34+
motor.frear()
35+
motor.velocidade
36+
print(motor.velocidade)
37+
print(1)
38+
motor.frear()
39+
motor.velocidade
40+
print(motor.velocidade)
41+
print(0)

0 commit comments

Comments
 (0)