Skip to content

Commit 93d890a

Browse files
committed
implementado carro.py
1 parent 997496a commit 93d890a

5 files changed

Lines changed: 160 additions & 5 deletions

File tree

‎atores.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def colidir(self, outro_ator, intervalo=1):
5757

5858

5959
class Obstaculo(Ator):
60-
pass
60+
pass
6161

6262

6363
class Porco(Ator):
@@ -137,4 +137,4 @@ class PassaroAmarelo(Passaro):
137137

138138

139139
class PassaroVermelho(Passaro):
140-
pass
140+
pass

‎fase.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,23 +43,23 @@ def adicionar_obstaculo(self, *obstaculos):
4343
4444
:param obstaculos:
4545
"""
46-
pass
46+
self._obstaculos.extend(obstaculos)
4747

4848
def adicionar_porco(self, *porcos):
4949
"""
5050
Adiciona porcos em uma fase
5151
5252
:param porcos:
5353
"""
54-
pass
54+
self._porcos.extend(porcos)
5555

5656
def adicionar_passaro(self, *passaros):
5757
"""
5858
Adiciona pássaros em uma fase
5959
6060
:param passaros:
6161
"""
62-
pass
62+
self._passaros.extend(passaros)
6363

6464
def status(self):
6565
"""

‎oo/carro.py‎

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
2+
3+
"""
4+
5+
Exemplo:
6+
>>> # Testando motor
7+
>>> motor = Motor()
8+
>>> motor.velocidade
9+
0
10+
>>> motor.acelerar()
11+
>>> motor.velocidade
12+
1
13+
>>> motor.acelerar()
14+
>>> motor.velocidade
15+
2
16+
>>> motor.acelerar()
17+
>>> motor.velocidade
18+
3
19+
>>> motor.frear()
20+
>>> motor.velocidade
21+
1
22+
>>> motor.frear()
23+
>>> motor.velocidade
24+
0
25+
>>> # Testando Direcao
26+
>>> direcao = Direcao()
27+
>>> direcao.valor
28+
'Norte'
29+
>>> direcao.girar_a_direita()
30+
>>> direcao.valor
31+
'Leste'
32+
>>> direcao.girar_a_direita()
33+
>>> direcao.valor
34+
'Sul'
35+
>>> direcao.girar_a_direita()
36+
>>> direcao.valor
37+
'Oeste'
38+
>>> direcao.girar_a_direita()
39+
>>> direcao.valor
40+
'Norte'
41+
>>> direcao.girar_a_esquerda()
42+
>>> direcao.valor
43+
'Oeste'
44+
>>> direcao.girar_a_esquerda()
45+
>>> direcao.valor
46+
'Sul'
47+
>>> direcao.girar_a_esquerda()
48+
>>> direcao.valor
49+
'Leste'
50+
>>> direcao.girar_a_esquerda()
51+
>>> direcao.valor
52+
'Norte'
53+
>>> carro = Carro(direcao, motor)
54+
>>> carro.calcular_velocidade()
55+
0
56+
>>> carro.acelerar()
57+
>>> carro.calcular_velocidade()
58+
1
59+
>>> carro.acelerar()
60+
>>> carro.calcular_velocidade()
61+
2
62+
>>> carro.frear()
63+
>>> carro.calcular_velocidade()
64+
0
65+
66+
67+
"""
68+
69+
70+
class Carro:
71+
def __init__(self, direcao, motor):
72+
self.direcao = direcao
73+
self.motor = motor
74+
75+
def calcular_velocidade(self):
76+
return self.motor.velocidade
77+
78+
def acelerar(self):
79+
return self.motor.acelerar()
80+
81+
def frear(self):
82+
return self.motor.frear()
83+
84+
def calcular_direcao(self):
85+
return self.direcao.valor
86+
87+
def girar_a_direita(self):
88+
self.direcao.girar_a_direita()
89+
90+
def girar_a_esquerda(self):
91+
self.direcao.girar_a_esquerda()
92+
93+
94+
NORTE = 'Norte'
95+
SUL = 'Sul'
96+
LESTE = 'Leste'
97+
OESTE = 'Oeste'
98+
99+
100+
class Direcao:
101+
rotacao_a_direita_dct = {
102+
NORTE: LESTE, LESTE: SUL, SUL: OESTE, OESTE: NORTE
103+
}
104+
rotacao_a_esquerda_dct = {
105+
NORTE: OESTE, OESTE: SUL, SUL: LESTE, LESTE: NORTE
106+
}
107+
108+
def __init__(self):
109+
self.valor = NORTE
110+
111+
def girar_a_direita(self):
112+
self.valor = self.rotacao_a_direita_dct[self.valor]
113+
114+
def girar_a_esquerda(self):
115+
self.valor = self.rotacao_a_esquerda_dct[self.valor]
116+
117+
118+
class Motor:
119+
def __init__(self):
120+
self.velocidade = 0
121+
122+
def acelerar(self):
123+
self.velocidade += 1
124+
125+
def frear(self):
126+
self.velocidade -= 2
127+
self.velocidade = max(0, self.velocidade)
128+
129+
130+
131+
132+

‎oo/pessoa.py‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ def __init__(self, *filhos, nome=None, idade=35):
99
def cumprimentar(self):
1010
return f'Olá {id(self)}'
1111

12+
@staticmethod
13+
def metodo_estatico():
14+
return 42
15+
16+
@classmethod
17+
def nome_e_atributos_de_classe(cls):
18+
return f'{cls} - olhos {cls.olhos}'
1219

1320
if __name__ == '__main__':
1421
weber = Pessoa(nome='weber')
@@ -29,3 +36,5 @@ def cumprimentar(self):
2936
print(luciano.olhos)
3037
print(weber.olhos)
3138
print(id(Pessoa.olhos), id(luciano.olhos), id(weber.olhos))
39+
print(Pessoa.metodo_estatico(), luciano.metodo_estatico())
40+
print(Pessoa.nome_e_atributos_de_classe(), luciano.nome_e_atributos_de_classe())

‎oo/teste_carro.py‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from unittest.case import TestCase
2+
3+
from oo.carro import Motor
4+
5+
6+
class CarroTestCase(TestCase):
7+
def teste_velocidade_inicial(self):
8+
motor = Motor()
9+
self.assertEqual(0, motor.velocidade)
10+
11+
def teste_acelerar(self):
12+
motor = Motor()
13+
motor.acelerar()
14+
self.assertEqual(1, motor.velocidade)

0 commit comments

Comments
 (0)