From 5a5430ea1e6928d47d01c511f6ab756abea5da02 Mon Sep 17 00:00:00 2001 From: m41b3c Date: Thu, 7 Mar 2019 15:49:40 -0300 Subject: [PATCH 01/16] Criado a classe Pessoa. --- OO/__init__.py | 0 OO/pessoa.py | 3 +++ 2 files changed, 3 insertions(+) create mode 100644 OO/__init__.py create mode 100644 OO/pessoa.py diff --git a/OO/__init__.py b/OO/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/OO/pessoa.py b/OO/pessoa.py new file mode 100644 index 000000000..8ecd3b081 --- /dev/null +++ b/OO/pessoa.py @@ -0,0 +1,3 @@ +class Pessoa: + pass + From a4afcb22182c7f2e49133ab9a3f3e7f52b0613e4 Mon Sep 17 00:00:00 2001 From: m41b3c Date: Thu, 7 Mar 2019 16:08:32 -0300 Subject: [PATCH 02/16] =?UTF-8?q?Criado=20m=C3=A9todo=20Pessoa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OO/pessoa.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/OO/pessoa.py b/OO/pessoa.py index 8ecd3b081..f9cc586bb 100644 --- a/OO/pessoa.py +++ b/OO/pessoa.py @@ -1,3 +1,10 @@ class Pessoa: - pass + def cumprimentar(self): + return f'Olá {id(self)}' + +if __name__ == '__main__': + p = Pessoa() + print(Pessoa.cumprimentar(p)) + print(id(p)) + print(p.cumprimentar()) From 6baf75eb46d352fed0e26856734f4ee1444644dc Mon Sep 17 00:00:00 2001 From: m41b3c Date: Thu, 7 Mar 2019 16:24:32 -0300 Subject: [PATCH 03/16] =?UTF-8?q?Criado=20atributos=20de=20inst=C3=A2ncia?= =?UTF-8?q?=20nome=20e=20idade.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OO/pessoa.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/OO/pessoa.py b/OO/pessoa.py index f9cc586bb..2127c056a 100644 --- a/OO/pessoa.py +++ b/OO/pessoa.py @@ -1,10 +1,18 @@ class Pessoa: + def __init__(self, nome=None, idade=35): + self.idade = idade + self.nome = nome + def cumprimentar(self): return f'Olá {id(self)}' if __name__ == '__main__': - p = Pessoa() + p = Pessoa('Jacir') print(Pessoa.cumprimentar(p)) print(id(p)) print(p.cumprimentar()) + print(p.nome) + p.nome = 'Pieniak' + print(p.nome) + print(p.idade) \ No newline at end of file From 05d1eefacbe5617581bb22bdba4ae660d41717cd Mon Sep 17 00:00:00 2001 From: m41b3c Date: Thu, 7 Mar 2019 16:41:44 -0300 Subject: [PATCH 04/16] Criado atributos complexos filhos. --- OO/pessoa.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/OO/pessoa.py b/OO/pessoa.py index 2127c056a..789f02732 100644 --- a/OO/pessoa.py +++ b/OO/pessoa.py @@ -1,18 +1,22 @@ class Pessoa: - def __init__(self, nome=None, idade=35): + def __init__(self, *filhos, nome=None, idade=35): self.idade = idade self.nome = nome + self.filhos = list(filhos) def cumprimentar(self): return f'Olá {id(self)}' if __name__ == '__main__': - p = Pessoa('Jacir') - print(Pessoa.cumprimentar(p)) - print(id(p)) - print(p.cumprimentar()) - print(p.nome) - p.nome = 'Pieniak' - print(p.nome) - print(p.idade) \ No newline at end of file + sofia = Pessoa(nome='Sofia') + valentina = Pessoa(nome="Valentina") + jacir = Pessoa(sofia, nome='Jacir') + jacir = Pessoa(valentina, nome = 'Jacir') + print(Pessoa.cumprimentar(jacir)) + print(id(jacir)) + print(jacir.cumprimentar()) + print(jacir.nome) + + for filho in jacir.filhos: + print(filho.nome) \ No newline at end of file From fb8b78f4627311530aa70f39e161916860314287 Mon Sep 17 00:00:00 2001 From: m41b3c Date: Wed, 13 Mar 2019 16:39:36 -0300 Subject: [PATCH 05/16] Criado atributos complexos filhos. --- OO/pessoa.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/OO/pessoa.py b/OO/pessoa.py index 789f02732..01e26f9a7 100644 --- a/OO/pessoa.py +++ b/OO/pessoa.py @@ -18,5 +18,14 @@ def cumprimentar(self): print(jacir.cumprimentar()) print(jacir.nome) + + # atributos dinâmicos - criados em tempo de execução + + jacir.sobrenome = 'Pieniak' + print(jacir.sobrenome) + del jacir.sobrenome + + + for filho in jacir.filhos: - print(filho.nome) \ No newline at end of file + print(filho.nome) From ba9544f7e2b55f7101c33132a7f5c610bdfeecd5 Mon Sep 17 00:00:00 2001 From: m41b3c Date: Wed, 13 Mar 2019 16:41:57 -0300 Subject: [PATCH 06/16] =?UTF-8?q?Criado=20atributos=20din=C3=A2micos.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OO/pessoa.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/OO/pessoa.py b/OO/pessoa.py index 01e26f9a7..f64e69bfe 100644 --- a/OO/pessoa.py +++ b/OO/pessoa.py @@ -18,14 +18,19 @@ def cumprimentar(self): print(jacir.cumprimentar()) print(jacir.nome) + for filho in jacir.filhos: + print(filho.nome) + # atributos dinâmicos - criados em tempo de execução jacir.sobrenome = 'Pieniak' print(jacir.sobrenome) + + # deleta o atributo dinâmico em tempo de execução del jacir.sobrenome - for filho in jacir.filhos: - print(filho.nome) + + From af41db483f33c00004e9dbbe822b81fa02a9a4a1 Mon Sep 17 00:00:00 2001 From: m41b3c Date: Wed, 13 Mar 2019 16:47:58 -0300 Subject: [PATCH 07/16] =?UTF-8?q?Criado=20atributos=20din=C3=A2micos.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OO/pessoa.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OO/pessoa.py b/OO/pessoa.py index f64e69bfe..f3ec6051e 100644 --- a/OO/pessoa.py +++ b/OO/pessoa.py @@ -26,9 +26,11 @@ def cumprimentar(self): jacir.sobrenome = 'Pieniak' print(jacir.sobrenome) - + print(jacir.__dict__) # deleta o atributo dinâmico em tempo de execução del jacir.sobrenome + print(jacir.__dict__) + From 1c4b86daed47b566cf207ab1137d3bc35b0bdc5e Mon Sep 17 00:00:00 2001 From: m41b3c Date: Wed, 13 Mar 2019 16:57:10 -0300 Subject: [PATCH 08/16] Criado atributo de classe. --- OO/pessoa.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/OO/pessoa.py b/OO/pessoa.py index f3ec6051e..f15120ecc 100644 --- a/OO/pessoa.py +++ b/OO/pessoa.py @@ -1,4 +1,7 @@ class Pessoa: + + olhos = 2 + def __init__(self, *filhos, nome=None, idade=35): self.idade = idade self.nome = nome @@ -31,6 +34,11 @@ def cumprimentar(self): del jacir.sobrenome print(jacir.__dict__) + print(Pessoa.olhos) + print(jacir.olhos) + + + From 1fe0ca8293e137e55c724a89dbffec4cab3ffef1 Mon Sep 17 00:00:00 2001 From: m41b3c Date: Wed, 13 Mar 2019 16:58:16 -0300 Subject: [PATCH 09/16] Criado atributo de classe. --- OO/pessoa.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OO/pessoa.py b/OO/pessoa.py index f15120ecc..661161dde 100644 --- a/OO/pessoa.py +++ b/OO/pessoa.py @@ -36,6 +36,8 @@ def cumprimentar(self): print(Pessoa.olhos) print(jacir.olhos) + jacir.olhos = 3 + print(jacir.__dict__) From b51427c4f98d6b59795a1e03f353093df58ea041 Mon Sep 17 00:00:00 2001 From: m41b3c Date: Wed, 13 Mar 2019 17:13:33 -0300 Subject: [PATCH 10/16] =?UTF-8?q?Criado=20m=C3=A9todo=20de=20classe.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OO/pessoa.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/OO/pessoa.py b/OO/pessoa.py index 661161dde..ffe63d8bc 100644 --- a/OO/pessoa.py +++ b/OO/pessoa.py @@ -10,6 +10,14 @@ def __init__(self, *filhos, nome=None, idade=35): def cumprimentar(self): return f'Olá {id(self)}' + #metodos de Classe + @staticmethod + def metodo_estatico(): + return 42 + + @classmethod + def nome_e_atributos_de_classe(cls): + return f'{cls} - olhos {cls.olhos}' if __name__ == '__main__': sofia = Pessoa(nome='Sofia') @@ -34,11 +42,22 @@ def cumprimentar(self): del jacir.sobrenome print(jacir.__dict__) +#teste atributos de classe + print(Pessoa.olhos) print(jacir.olhos) jacir.olhos = 3 print(jacir.__dict__) +#teste metodos de classe + + print(id(Pessoa.olhos), id(jacir.olhos)) + print(Pessoa.metodo_estatico(), jacir.metodo_estatico()) + print(Pessoa.nome_e_atributos_de_classe(), jacir.nome_e_atributos_de_classe()) + + + + From bfc39b4346cf23c4735cead7a48314e5d3a27259 Mon Sep 17 00:00:00 2001 From: m41b3c Date: Thu, 14 Mar 2019 18:06:38 -0300 Subject: [PATCH 11/16] Composicao carro --- OO/carro.py | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 OO/carro.py diff --git a/OO/carro.py b/OO/carro.py new file mode 100644 index 000000000..cfb6a7701 --- /dev/null +++ b/OO/carro.py @@ -0,0 +1,154 @@ + +""" +Você deve criar uma classe carro que vai possuir +dois atributos compostos por outras duas classes: + +1) Motor +2) Direção + +O Motor terá a responsabilidade de controlar a velocidade. +Ele oferece os seguintes atributos: +1) Atributo de dado velocidade +2) Método acelerar, que deverá incrementar a velocidade de uma unidade +3) Método frear que deverá decrementar a velociade em duas unidades + +A Direção terá responsabilidade de controlar a direção. Ela oferecec +os seguintes atributos: +1) Valor de direção com valores possíveis: Norte, Sul, Leste, Oeste. +2) Método girar_a_direita +3) Método girar_a_esquerda + + N +O L + S + + +Exemplo: + +>>>#Testando motor +>>>motor = Motor() +>>>motor.velocidade +0 +>>>motor.acelerar() +>>>motor.velocidade +1 +>>>motor.acelerar() +>>>motor.velocidade +2 +>>>motor.acelerar() +>>>motor.velocidade +3 +>>>motor.frear() +>>>motor.velocidade +1 +>>>motor.frear() +>>>motor.velocidade +0 +>>>#Testando Direcao +>>>direcao = Direcao() +>>>direcao.valor +'Norte' +>>>direcao.girar_a_direita() +>>>direcao.valor +'Leste' +>>>direcao.girar_a_direita() +>>>direcao.valor +'Sul' +>>>direcao.girar_a_direita() +>>>direcao.valor +'Oeste' +>>>direcao.girar_a_direita() +>>>direcao.valor +'Norte' +>>>direcao.girar_a_esquerda() +>>>direcao.valor +'Oeste' +>>>direcao.girar_a_esquerda() +>>>direcao.valor +'Sul' +>>>direcao.girar_a_esquerda() +>>>direcao.valor +'Leste' +>>>direcao.girar_a_esquerda() +>>>direcao.valor +'Norte' +>>>carro = Carro(direcao, motor) +>>>carro = calcular_velocidade() +0 +>>>carro.acelerar() +>>>carro = calcular_velocidade() +1 +>>>carro.acelerar() +>>>carro = calcular_velocidade() +2 +>>>carro.frear() +>>>carro = calcular_velocidade() +0 +>>>carro.calcular_direcao() +'Norte' +>>>carro.girar a direita() +>>>carro.calcular_direcao() +'Leste' +>>>carro.girar a esquerda() +>>>carro.calcular_direcao() +'Norte' +>>>carro.girar a direita() +>>>carro.calcular_direcao() +'Oeste' + +""" +class Motor: + def __init__(self): + self.velocidade = None + + def acelerar(self): + self.velocidade +=1 + + + def frear(self): + self.velocidade -=1 + self.velocidade=max(0, self.velocidade) + +#PEP-8 +NORTE='Norte' +SUL='Sul' +LESTE='Leste' +OESTE='Oeste' + +class Direcao: + rotacao_a_direita_dct = {NORTE: LESTE, LESTE: SUL, SUL: OESTE, OESTE: NORTE} + rotacao_a_esquerda_dct = {NORTE: OESTE, LESTE: NORTE, SUL: LESTE, OESTE: SUL} + + def __init__(self): + self.valor = NORTE + + def girar_a_direita(self): + self.valor = self.rotacao_a_direita_dct[self.valor] + + def girar_a_esquerda(self): + self.valor = self.rotacao_a_esquerda_dct[self.valor] + +class Carro: + def __init__(self, direcao, motor): + self.direcao = direcao + self.motor = motor + + def calcular_velociade(self): + return self.motor.velocidade + + def acelerar(self): + self.motor.acelerar() + + def frear(self): + self.motor.frear() + + def calcular_direcao(self): + return self.direcao.valor + + def girar_a_direita(self): + self.direcao.girar_a_direita() + + def girar_a_esquerda(self): + self.direcao.girar_a_esquerda() + + From 0c9bcceb3ce8f7304230408f83e39546fee97283 Mon Sep 17 00:00:00 2001 From: m41b3c Date: Tue, 19 Mar 2019 23:09:42 -0300 Subject: [PATCH 12/16] =?UTF-8?q?Heran=C3=A7a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OO/pessoa.py | 29 +++++++++++++---------------- fase.py | 6 +++--- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/OO/pessoa.py b/OO/pessoa.py index ffe63d8bc..651f3f39c 100644 --- a/OO/pessoa.py +++ b/OO/pessoa.py @@ -1,5 +1,4 @@ class Pessoa: - olhos = 2 def __init__(self, *filhos, nome=None, idade=35): @@ -10,7 +9,7 @@ def __init__(self, *filhos, nome=None, idade=35): def cumprimentar(self): return f'Olá {id(self)}' - #metodos de Classe + # metodos de Classe @staticmethod def metodo_estatico(): return 42 @@ -19,11 +18,16 @@ def metodo_estatico(): def nome_e_atributos_de_classe(cls): return f'{cls} - olhos {cls.olhos}' + +class Homem(Pessoa): + pass + + if __name__ == '__main__': sofia = Pessoa(nome='Sofia') valentina = Pessoa(nome="Valentina") - jacir = Pessoa(sofia, nome='Jacir') - jacir = Pessoa(valentina, nome = 'Jacir') + jacir = Homem(sofia, nome='Jacir') + jacir = Pessoa(valentina, nome='Jacir') print(Pessoa.cumprimentar(jacir)) print(id(jacir)) print(jacir.cumprimentar()) @@ -32,7 +36,6 @@ def nome_e_atributos_de_classe(cls): for filho in jacir.filhos: print(filho.nome) - # atributos dinâmicos - criados em tempo de execução jacir.sobrenome = 'Pieniak' @@ -42,26 +45,20 @@ def nome_e_atributos_de_classe(cls): del jacir.sobrenome print(jacir.__dict__) -#teste atributos de classe + # teste atributos de classe print(Pessoa.olhos) print(jacir.olhos) jacir.olhos = 3 print(jacir.__dict__) -#teste metodos de classe + # teste metodos de classe print(id(Pessoa.olhos), id(jacir.olhos)) print(Pessoa.metodo_estatico(), jacir.metodo_estatico()) print(Pessoa.nome_e_atributos_de_classe(), jacir.nome_e_atributos_de_classe()) + # teste Herança - - - - - - - - - + print(isinstance(sofia, Pessoa)) + print(isinstance()) diff --git a/fase.py b/fase.py index 3385175c6..1c8fd161f 100644 --- a/fase.py +++ b/fase.py @@ -43,7 +43,7 @@ def adicionar_obstaculo(self, *obstaculos): :param obstaculos: """ - pass + self._obstaculos.extend(obstaculos) def adicionar_porco(self, *porcos): """ @@ -51,7 +51,7 @@ def adicionar_porco(self, *porcos): :param porcos: """ - pass + self._porcos.extend(porcos) def adicionar_passaro(self, *passaros): """ @@ -59,7 +59,7 @@ def adicionar_passaro(self, *passaros): :param passaros: """ - pass + self._passaros.extend(passaros) def status(self): """ From 9ff4f257b5d92d97014d6e4dafeb8a2905a62ddb Mon Sep 17 00:00:00 2001 From: m41b3c Date: Wed, 20 Mar 2019 17:54:18 -0300 Subject: [PATCH 13/16] =?UTF-8?q?at=C3=A9=20sobrescrita=20de=20atributos?= =?UTF-8?q?=20de=20dados.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OO/carro.py | 109 +++++++++--------- OO/pessoa.py | 12 +- OO/test_carro.py | 14 +++ atores.py | 1 + testes/{atores_testes.py => testes_atores.py} | 0 testes/{fase_testes.py => testes_fase.py} | 0 .../{integracao.py => testes_integracao.py} | 0 7 files changed, 80 insertions(+), 56 deletions(-) create mode 100644 OO/test_carro.py rename testes/{atores_testes.py => testes_atores.py} (100%) rename testes/{fase_testes.py => testes_fase.py} (100%) rename testes/{integracao.py => testes_integracao.py} (100%) diff --git a/OO/carro.py b/OO/carro.py index cfb6a7701..06ed620d2 100644 --- a/OO/carro.py +++ b/OO/carro.py @@ -1,3 +1,59 @@ +class Motor: + def __init__(self): + self.velocidade = 0 + + def acelerar(self): + self.velocidade += 1 + + def frear(self): + self.velocidade -= 1 + self.velocidade = max(0, self.velocidade) + + +# PEP-8 +NORTE = 'Norte' +SUL = 'Sul' +LESTE = 'Leste' +OESTE = 'Oeste' + + +class Direcao: + rotacao_a_direita_dct = {NORTE: LESTE, LESTE: SUL, SUL: OESTE, OESTE: NORTE} + rotacao_a_esquerda_dct = {NORTE: OESTE, LESTE: NORTE, SUL: LESTE, OESTE: SUL} + + def __init__(self): + self.valor = NORTE + + def girar_a_direita(self): + self.valor = self.rotacao_a_direita_dct[self.valor] + + def girar_a_esquerda(self): + self.valor = self.rotacao_a_esquerda_dct[self.valor] + + +class Carro: + def __init__(self, direcao, motor): + self.direcao = direcao + self.motor = motor + + def calcular_velociade(self): + return self.motor.velocidade + + def acelerar(self): + self.motor.acelerar() + + def frear(self): + self.motor.frear() + + def calcular_direcao(self): + return self.direcao.valor + + def girar_a_direita(self): + self.direcao.girar_a_direita() + + def girar_a_esquerda(self): + self.direcao.girar_a_esquerda() + """ Você deve criar uma classe carro que vai possuir @@ -97,58 +153,5 @@ 'Oeste' """ -class Motor: - def __init__(self): - self.velocidade = None - - def acelerar(self): - self.velocidade +=1 - - - def frear(self): - self.velocidade -=1 - self.velocidade=max(0, self.velocidade) - -#PEP-8 -NORTE='Norte' -SUL='Sul' -LESTE='Leste' -OESTE='Oeste' - -class Direcao: - rotacao_a_direita_dct = {NORTE: LESTE, LESTE: SUL, SUL: OESTE, OESTE: NORTE} - rotacao_a_esquerda_dct = {NORTE: OESTE, LESTE: NORTE, SUL: LESTE, OESTE: SUL} - - def __init__(self): - self.valor = NORTE - - def girar_a_direita(self): - self.valor = self.rotacao_a_direita_dct[self.valor] - - def girar_a_esquerda(self): - self.valor = self.rotacao_a_esquerda_dct[self.valor] - -class Carro: - def __init__(self, direcao, motor): - self.direcao = direcao - self.motor = motor - - def calcular_velociade(self): - return self.motor.velocidade - - def acelerar(self): - self.motor.acelerar() - - def frear(self): - self.motor.frear() - - def calcular_direcao(self): - return self.direcao.valor - - def girar_a_direita(self): - self.direcao.girar_a_direita() - - def girar_a_esquerda(self): - self.direcao.girar_a_esquerda() diff --git a/OO/pessoa.py b/OO/pessoa.py index 651f3f39c..07a3417a1 100644 --- a/OO/pessoa.py +++ b/OO/pessoa.py @@ -22,12 +22,15 @@ def nome_e_atributos_de_classe(cls): class Homem(Pessoa): pass +class Mutante(Pessoa): + olhos = 3 + if __name__ == '__main__': sofia = Pessoa(nome='Sofia') valentina = Pessoa(nome="Valentina") jacir = Homem(sofia, nome='Jacir') - jacir = Pessoa(valentina, nome='Jacir') + jacir = Mutante(nome='Jacir') print(Pessoa.cumprimentar(jacir)) print(id(jacir)) print(jacir.cumprimentar()) @@ -41,6 +44,7 @@ class Homem(Pessoa): jacir.sobrenome = 'Pieniak' print(jacir.sobrenome) print(jacir.__dict__) + # deleta o atributo dinâmico em tempo de execução del jacir.sobrenome print(jacir.__dict__) @@ -49,7 +53,6 @@ class Homem(Pessoa): print(Pessoa.olhos) print(jacir.olhos) - jacir.olhos = 3 print(jacir.__dict__) # teste metodos de classe @@ -61,4 +64,7 @@ class Homem(Pessoa): # teste Herança print(isinstance(sofia, Pessoa)) - print(isinstance()) + print(isinstance(jacir, Homem)) + + #teste de sobrescrita de atributo de dados + print(jacir.olhos) diff --git a/OO/test_carro.py b/OO/test_carro.py new file mode 100644 index 000000000..745eea938 --- /dev/null +++ b/OO/test_carro.py @@ -0,0 +1,14 @@ +from unittest import TestCase + +from OO.carro import Motor + + +class CarroTestCase(TestCase): + def test_velocidade_inicial(self): + motor = Motor() + self.assertEqual(0, motor.velocidade) + + def test_acelerar(self): + motor = Motor() + motor.acelerar() + self.assertEqual(1, motor.velocidade) \ No newline at end of file diff --git a/atores.py b/atores.py index cfc2ef5ea..952492ea7 100644 --- a/atores.py +++ b/atores.py @@ -133,6 +133,7 @@ def lancar(self, angulo, tempo_de_lancamento): class PassaroAmarelo(Passaro): + pass diff --git a/testes/atores_testes.py b/testes/testes_atores.py similarity index 100% rename from testes/atores_testes.py rename to testes/testes_atores.py diff --git a/testes/fase_testes.py b/testes/testes_fase.py similarity index 100% rename from testes/fase_testes.py rename to testes/testes_fase.py diff --git a/testes/integracao.py b/testes/testes_integracao.py similarity index 100% rename from testes/integracao.py rename to testes/testes_integracao.py From fbc6bfb990c99258d35240327360d2f5ece3b3d2 Mon Sep 17 00:00:00 2001 From: m41b3c Date: Thu, 21 Mar 2019 16:37:27 -0300 Subject: [PATCH 14/16] =?UTF-8?q?sobrescrita=20de=20m=C3=A9todos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OO/pessoa.py | 13 ++++++++++--- atores.py | 9 ++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/OO/pessoa.py b/OO/pessoa.py index 07a3417a1..c720fc05f 100644 --- a/OO/pessoa.py +++ b/OO/pessoa.py @@ -7,7 +7,7 @@ def __init__(self, *filhos, nome=None, idade=35): self.filhos = list(filhos) def cumprimentar(self): - return f'Olá {id(self)}' + return f'Olá, meu nome é {self.nome}' # metodos de Classe @staticmethod @@ -20,7 +20,9 @@ def nome_e_atributos_de_classe(cls): class Homem(Pessoa): - pass + def cumprimentar(self): + cumprimentar_da_classe = super().cumprimentar() + return f'{cumprimentar_da_classe}. Aperto de mão' class Mutante(Pessoa): olhos = 3 @@ -30,7 +32,7 @@ class Mutante(Pessoa): sofia = Pessoa(nome='Sofia') valentina = Pessoa(nome="Valentina") jacir = Homem(sofia, nome='Jacir') - jacir = Mutante(nome='Jacir') + #jacir = Mutante(nome='Jacir') print(Pessoa.cumprimentar(jacir)) print(id(jacir)) print(jacir.cumprimentar()) @@ -67,4 +69,9 @@ class Mutante(Pessoa): print(isinstance(jacir, Homem)) #teste de sobrescrita de atributo de dados + print(jacir.olhos) + + # Teste sobrescrita de métodos. + print(sofia.cumprimentar()) + print(jacir.cumprimentar()) \ No newline at end of file diff --git a/atores.py b/atores.py index 952492ea7..8ce18f3f3 100644 --- a/atores.py +++ b/atores.py @@ -57,11 +57,11 @@ def colidir(self, outro_ator, intervalo=1): class Obstaculo(Ator): - pass + _caracter_ativo = 'O' class Porco(Ator): - pass + _caracter_ativo = '@' class DuploLancamentoExcecao(Exception): @@ -133,9 +133,8 @@ def lancar(self, angulo, tempo_de_lancamento): class PassaroAmarelo(Passaro): - - pass + pass class PassaroVermelho(Passaro): - pass \ No newline at end of file + _caracter_ativo = 'V' \ No newline at end of file From 06d5b5fd199e6d07ddf11e3f02391d9861ed8782 Mon Sep 17 00:00:00 2001 From: m41b3c Date: Thu, 21 Mar 2019 18:02:06 -0300 Subject: [PATCH 15/16] =?UTF-8?q?at=C3=A9=20exception?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fase.py | 28 ++++++++++++++++++++++++++-- testes/testes_fase.py | 1 + 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/fase.py b/fase.py index 1c8fd161f..922a63c6d 100644 --- a/fase.py +++ b/fase.py @@ -73,7 +73,14 @@ def status(self): :return: """ - return EM_ANDAMENTO + if not self._possui_porco_ativo(): + return VITORIA + elif self._possui_passaros_ativos(): + return EM_ANDAMENTO + else: + return DERROTA + + def lancar(self, angulo, tempo): """ @@ -86,7 +93,10 @@ def lancar(self, angulo, tempo): :param angulo: ângulo de lançamento :param tempo: Tempo de lançamento """ - pass + for passaro in self._passaros: + if not passaro.foi_lancado(): + passaro.lancar(angulo, tempo) + break def calcular_pontos(self, tempo): @@ -105,3 +115,17 @@ def calcular_pontos(self, tempo): def _transformar_em_ponto(self, ator): return Ponto(ator.x, ator.y, ator.caracter()) + def _possui_porco_ativo(self): + for porco in self._porcos: + if porco.status == ATIVO: + return True + return False + + def _possui_passaros_ativos(self): + for passaro in self._passaros: + if passaro.status == ATIVO: + return True + return False + + + diff --git a/testes/testes_fase.py b/testes/testes_fase.py index 8158a43f5..58ec823ec 100644 --- a/testes/testes_fase.py +++ b/testes/testes_fase.py @@ -8,6 +8,7 @@ project_dir = path.dirname(__file__) project_dir = path.join('..') sys.path.append(project_dir) + from placa_grafica_tkinter import rodar_fase project_dir = os.path.join(os.path.dirname(__file__), '..') From 158feafbfa4c22a6a20d1874e11c1b770c5a7e72 Mon Sep 17 00:00:00 2001 From: m41b3c Date: Mon, 1 Apr 2019 20:55:17 -0300 Subject: [PATCH 16/16] Finalizado! --- atores.py | 49 ++++++++++++++++++++++++++++++++++++++++--------- fase.py | 5 +++++ 2 files changed, 45 insertions(+), 9 deletions(-) diff --git a/atores.py b/atores.py index 8ce18f3f3..123652b0d 100644 --- a/atores.py +++ b/atores.py @@ -38,7 +38,7 @@ def calcular_posicao(self, tempo): :param tempo: o tempo do jogo :return: posição x, y do ator """ - return 1, 1 + return self.x, self.y def colidir(self, outro_ator, intervalo=1): """ @@ -52,8 +52,11 @@ def colidir(self, outro_ator, intervalo=1): :param intervalo: Intervalo a ser considerado :return: """ - pass - + if self.status == ATIVO and outro_ator.status == ATIVO: + delta_x = abs(self.x - outro_ator.x) + delta_y = abs(self.y - outro_ator.y) + if delta_x <= intervalo and delta_y <= intervalo: + self.status=outro_ator.status=DESTRUIDO class Obstaculo(Ator): @@ -62,6 +65,7 @@ class Obstaculo(Ator): class Porco(Ator): _caracter_ativo = '@' + _caracter_destruido = '+' class DuploLancamentoExcecao(Exception): @@ -93,7 +97,8 @@ def foi_lancado(self): :return: booleano """ - return True + + return not self._tempo_de_lancamento is None def colidir_com_chao(self): """ @@ -101,7 +106,8 @@ def colidir_com_chao(self): o status dos Passaro deve ser alterado para destruido, bem como o seu caracter """ - pass + if self.y <= 0: + self.status = DESTRUIDO def calcular_posicao(self, tempo): """ @@ -117,7 +123,11 @@ def calcular_posicao(self, tempo): :param tempo: tempo de jogo a ser calculada a posição :return: posição x, y """ - return 1, 1 + if self._esta_voando(): + delta_t = tempo - self._tempo_de_lancamento + self._calcular_posicao_vertical(delta_t) + self._calcular_posicao_horizontal(delta_t) + return super().calcular_posicao(tempo) def lancar(self, angulo, tempo_de_lancamento): @@ -129,12 +139,33 @@ def lancar(self, angulo, tempo_de_lancamento): :param tempo_de_lancamento: :return: """ - pass + self._angulo_de_lancamento = math.radians(angulo) + self._tempo_de_lancamento = tempo_de_lancamento + + def _calcular_posicao_vertical(self, delta_t): + y_atual = self._y_inicial + angulo_radianos = self._angulo_de_lancamento + y_atual += self.velocidade_escalar * delta_t * math.sin(angulo_radianos) + y_atual -= (GRAVIDADE * (delta_t ** 2)) / 2 + self.y = y_atual + + def _calcular_posicao_horizontal(self, delta_t): + x_atual = self._x_inicial + angulo_radianos = self._angulo_de_lancamento + x_atual += self.velocidade_escalar * delta_t * math.cos(angulo_radianos) + self.x = x_atual + + def _esta_voando(self): + return self.foi_lancado() and self.status == ATIVO class PassaroAmarelo(Passaro): - pass + _caracter_ativo = 'A' + _caracter_destruido = 'a' + velocidade_escalar = 30 class PassaroVermelho(Passaro): - _caracter_ativo = 'V' \ No newline at end of file + _caracter_ativo = 'V' + _caracter_destruido = 'v' + velocidade_escalar = 20 \ No newline at end of file diff --git a/fase.py b/fase.py index 922a63c6d..bdab86a2b 100644 --- a/fase.py +++ b/fase.py @@ -108,6 +108,11 @@ def calcular_pontos(self, tempo): :param tempo: tempo para o qual devem ser calculados os pontos :return: objeto do tipo Ponto """ + for passaro in self._passaros: + passaro.calcular_posicao(tempo) + for alvo in self._obstaculos + self._porcos: + passaro.colidir(alvo, self.intervalo_de_colisao) + passaro.colidir_com_chao() pontos=[self._transformar_em_ponto(a) for a in self._passaros+self._obstaculos+self._porcos] return pontos