From a847d6d1aad134c010d0367539557142e04ef6d0 Mon Sep 17 00:00:00 2001 From: cesarfnt Date: Fri, 13 Mar 2020 23:10:09 -0300 Subject: [PATCH 01/21] Criada a classe Pessoa --- oo/__init__.py | 0 oo/pessoa.py | 2 ++ 2 files changed, 2 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..e1da50e22 --- /dev/null +++ b/oo/pessoa.py @@ -0,0 +1,2 @@ +class Pessoa: + pass \ No newline at end of file From bde21ed5fa06c527406490418b16fce2c6648c15 Mon Sep 17 00:00:00 2001 From: cesarfnt Date: Fri, 13 Mar 2020 23:33:57 -0300 Subject: [PATCH 02/21] =?UTF-8?q?Criado=20m=C3=A9todo=20cumprimentar?= 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 e1da50e22..f9cc586bb 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,2 +1,10 @@ class Pessoa: - pass \ No newline at end of file + def cumprimentar(self): + return f'Olá {id(self)}' + + +if __name__ == '__main__': + p = Pessoa() + print(Pessoa.cumprimentar(p)) + print(id(p)) + print(p.cumprimentar()) From dda9edf75d242458d10ea4fa78a53c25f8016223 Mon Sep 17 00:00:00 2001 From: cesarfnt Date: Fri, 27 Mar 2020 22:33:32 -0300 Subject: [PATCH 03/21] =?UTF-8?q?Criados=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 --- fase.py | 4 ---- oo/pessoa.py | 10 +++++++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/fase.py b/fase.py index 3385175c6..dd294011b 100644 --- a/fase.py +++ b/fase.py @@ -26,11 +26,7 @@ def __repr__(self, *args, **kwargs): class Fase(): def __init__(self, intervalo_de_colisao=1): - """ - Método que inicializa uma fase. - :param intervalo_de_colisao: - """ self.intervalo_de_colisao = intervalo_de_colisao self._passaros = [] self._porcos = [] diff --git a/oo/pessoa.py b/oo/pessoa.py index f9cc586bb..cb0765d3e 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('Luciano') print(Pessoa.cumprimentar(p)) print(id(p)) print(p.cumprimentar()) + print(p.nome) + p.nome = 'Renzo' + print(p.nome) + print(p.idade) From eb7ec22e3ea3ac5e475cd5f3f658e548227ebc68 Mon Sep 17 00:00:00 2001 From: cesarfnt Date: Sat, 28 Mar 2020 13:59:22 -0300 Subject: [PATCH 04/21] Criado atributo complexo filhos --- oo/pessoa.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index cb0765d3e..3509e917e 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,18 +1,20 @@ 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('Luciano') - print(Pessoa.cumprimentar(p)) - print(id(p)) - print(p.cumprimentar()) - print(p.nome) - p.nome = 'Renzo' - print(p.nome) - print(p.idade) + luciano = Pessoa(nome='Luciano') + print(Pessoa.cumprimentar(luciano)) + print(id(luciano)) + print(luciano.cumprimentar()) + print(luciano.nome) + print(luciano.idade) + for filho in luciano.filhos: + print(filho.nome) + print(luciano.filhos) From 4dc91f289fe1b9570665cafe454a72807956740e Mon Sep 17 00:00:00 2001 From: cesarfnt Date: Sat, 28 Mar 2020 14:00:58 -0300 Subject: [PATCH 05/21] Criado atributo complexo filhos --- oo/pessoa.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index 3509e917e..0b4cbe23a 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -9,7 +9,8 @@ def cumprimentar(self): if __name__ == '__main__': - luciano = Pessoa(nome='Luciano') + renzo = Pessoa(nome='Renzo') + luciano = Pessoa(renzo, nome='Luciano') print(Pessoa.cumprimentar(luciano)) print(id(luciano)) print(luciano.cumprimentar()) @@ -17,4 +18,3 @@ def cumprimentar(self): print(luciano.idade) for filho in luciano.filhos: print(filho.nome) - print(luciano.filhos) From dbfd06e030e8cf1df8a0d3918589ab6cbb8f526c Mon Sep 17 00:00:00 2001 From: cesarfnt Date: Sat, 28 Mar 2020 14:11:58 -0300 Subject: [PATCH 06/21] =?UTF-8?q?Criado=20e=20removido=20atributo=20din?= =?UTF-8?q?=C3=A2mico=20de=20objeto=20do=20tipo=20Pessoa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/pessoa.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/oo/pessoa.py b/oo/pessoa.py index 0b4cbe23a..3ce39b2c9 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -18,3 +18,7 @@ def cumprimentar(self): print(luciano.idade) for filho in luciano.filhos: print(filho.nome) + luciano.sobrenome = 'Ramalho' + del luciano.filhos + print(luciano.__dict__) + print(renzo.__dict__) From ffe0d1a2badfa3e5f4ca6ebf90127f54aed65c8e Mon Sep 17 00:00:00 2001 From: cesarfnt Date: Mon, 30 Mar 2020 15:46:06 -0300 Subject: [PATCH 07/21] Criado atributo de classe olhos --- oo/pessoa.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/oo/pessoa.py b/oo/pessoa.py index 3ce39b2c9..32aed2dde 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,4 +1,6 @@ class Pessoa: + olhos = 2 + def __init__(self, *filhos, nome=None, idade=35): self.idade = idade self.nome = nome @@ -20,5 +22,12 @@ def cumprimentar(self): print(filho.nome) luciano.sobrenome = 'Ramalho' del luciano.filhos + luciano.olhos = 1 + del luciano.olhos print(luciano.__dict__) print(renzo.__dict__) + Pessoa.olhos = 3 + print(Pessoa.olhos) + print(luciano.olhos) + print(renzo.olhos) + print(id(Pessoa.olhos), id(luciano.olhos), id(renzo.olhos)) From e182ac4503c1631afee16ea68d318faeaccb1f90 Mon Sep 17 00:00:00 2001 From: "cesarfnt@protonmail.com" <1995#izipizi> Date: Wed, 1 Apr 2020 14:56:43 -0300 Subject: [PATCH 08/21] =?UTF-8?q?Implementada=20a=20dire=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/carro.py | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++ oo/pessoa.py | 10 ++++ 2 files changed, 136 insertions(+) create mode 100644 oo/carro.py diff --git a/oo/carro.py b/oo/carro.py new file mode 100644 index 000000000..546150c55 --- /dev/null +++ b/oo/carro.py @@ -0,0 +1,126 @@ +""" +Você deve criar uma classe de carro que vai possuir dois atributos compostos por outroas duas calsses: + +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á incremetar a velocidade de uma unidade +3) Método frear que deverá decrementar a velocidade em duas unidades + +A Direção terá a responsabilidade de controlar a direção. Ela oferece 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 - Carri(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_esquerda() + >>> carro.calcular_direcao() + >>> 'Oeste' +""" +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 Motor: + def __init__(self): + self.velocidade = 0 + + def acelerar(self): + self.velocidade += 1 + + def frear(self): + self.velocidade -= 2 + self.velocidade = max(0, self.velocidade) diff --git a/oo/pessoa.py b/oo/pessoa.py index 32aed2dde..4cd735165 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -9,6 +9,14 @@ def __init__(self, *filhos, nome=None, idade=35): def cumprimentar(self): return f'Olá {id(self)}' + @staticmethod + def metodo_estatico(): + return 42 + + @classmethod + def nome_e_atributos_de_classe(cls): + return f'{cls} - olhos {cls.olhos}' + if __name__ == '__main__': renzo = Pessoa(nome='Renzo') @@ -31,3 +39,5 @@ def cumprimentar(self): print(luciano.olhos) print(renzo.olhos) print(id(Pessoa.olhos), id(luciano.olhos), id(renzo.olhos)) + print(Pessoa.metodo_estatico(), luciano.metodo_estatico()) + print(Pessoa.nome_e_atributos_de_classe(), luciano.nome_e_atributos_de_classe()) From 5352f20053bec4f13c37abb02c0d6cc8744b7f23 Mon Sep 17 00:00:00 2001 From: "cesarfnt@protonmail.com" <1995#izipizi> Date: Wed, 1 Apr 2020 14:57:54 -0300 Subject: [PATCH 09/21] =?UTF-8?q?Implementada=20a=20dire=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/carro.py | 1 + 1 file changed, 1 insertion(+) diff --git a/oo/carro.py b/oo/carro.py index 546150c55..e6c908a9b 100644 --- a/oo/carro.py +++ b/oo/carro.py @@ -112,6 +112,7 @@ 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] + #titulo class Motor: From 5f84c123b9fbce6a749eb8ee572ef2842817d009 Mon Sep 17 00:00:00 2001 From: "cesarfnt@protonmail.com" <1995#izipizi> Date: Wed, 1 Apr 2020 15:00:59 -0300 Subject: [PATCH 10/21] Implementada Direcao --- oo/carro.py | 1 - 1 file changed, 1 deletion(-) diff --git a/oo/carro.py b/oo/carro.py index e6c908a9b..546150c55 100644 --- a/oo/carro.py +++ b/oo/carro.py @@ -112,7 +112,6 @@ 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] - #titulo class Motor: From b67fcd0faeb5be71780ebaf7c3b22f07c645efac Mon Sep 17 00:00:00 2001 From: "cesarfnt@protonmail.com" <1995#izipizi> Date: Wed, 1 Apr 2020 15:02:52 -0300 Subject: [PATCH 11/21] Implementada Direcao --- oo/carro.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oo/carro.py b/oo/carro.py index 546150c55..679e65554 100644 --- a/oo/carro.py +++ b/oo/carro.py @@ -112,7 +112,7 @@ 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] - + #titulo class Motor: def __init__(self): From b420894cbf8f2f826531375fb1759816f53607a7 Mon Sep 17 00:00:00 2001 From: cesarfnt Date: Wed, 1 Apr 2020 15:03:30 -0300 Subject: [PATCH 12/21] Implementada Direcao --- oo/carro.py | 1 - 1 file changed, 1 deletion(-) diff --git a/oo/carro.py b/oo/carro.py index 679e65554..ae54e07b5 100644 --- a/oo/carro.py +++ b/oo/carro.py @@ -112,7 +112,6 @@ 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] - #titulo class Motor: def __init__(self): From 218f0a29f50ead3e567828ec48e67019c33d2d33 Mon Sep 17 00:00:00 2001 From: cesarfnt Date: Wed, 1 Apr 2020 15:05:07 -0300 Subject: [PATCH 13/21] Implementada Direcao --- oo/carro.py | 1 + 1 file changed, 1 insertion(+) diff --git a/oo/carro.py b/oo/carro.py index ae54e07b5..27c5117af 100644 --- a/oo/carro.py +++ b/oo/carro.py @@ -112,6 +112,7 @@ 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] + #direcao class Motor: def __init__(self): From b79f0daab6f78358abd3ebd57ee7f4a247d913e9 Mon Sep 17 00:00:00 2001 From: "cesarfnt@protonmail.com" <1995#izipizi> Date: Sat, 11 Apr 2020 21:56:12 -0300 Subject: [PATCH 14/21] =?UTF-8?q?Implementada=20do=20metodo=20de=20colis?= =?UTF-8?q?=C3=A3o=20entre=20atores?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- atores.py | 15 ++++---- fase.py | 35 ++++++++++++++++--- oo/carro.py | 35 +++++++++++++++---- oo/pessoa.py | 26 +++++++++++--- oo/teste_carro.py | 14 ++++++++ testes/{integracao.py => teste_integracao.py} | 0 testes/{atores_testes.py => testes_atores.py} | 0 testes/{fase_testes.py => testes_fase.py} | 2 +- 8 files changed, 105 insertions(+), 22 deletions(-) create mode 100644 oo/teste_carro.py rename testes/{integracao.py => teste_integracao.py} (100%) rename testes/{atores_testes.py => testes_atores.py} (100%) rename testes/{fase_testes.py => testes_fase.py} (99%) diff --git a/atores.py b/atores.py index cfc2ef5ea..11ed7fe5e 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,16 +52,19 @@ 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): - pass + _caracter_ativo = 'O' class Porco(Ator): - pass + _caracter_ativo = '@' class DuploLancamentoExcecao(Exception): @@ -137,4 +140,4 @@ class PassaroAmarelo(Passaro): class PassaroVermelho(Passaro): - pass \ No newline at end of file + _caracter_ativo = 'V' \ No newline at end of file diff --git a/fase.py b/fase.py index dd294011b..0afeeea53 100644 --- a/fase.py +++ b/fase.py @@ -39,7 +39,7 @@ def adicionar_obstaculo(self, *obstaculos): :param obstaculos: """ - pass + self._obstaculos.extend(obstaculos) def adicionar_porco(self, *porcos): """ @@ -47,7 +47,7 @@ def adicionar_porco(self, *porcos): :param porcos: """ - pass + self._porcos.extend(porcos) def adicionar_passaro(self, *passaros): """ @@ -55,7 +55,7 @@ def adicionar_passaro(self, *passaros): :param passaros: """ - pass + self._passaros.extend(passaros) def status(self): """ @@ -69,7 +69,12 @@ def status(self): :return: """ - return EM_ANDAMENTO + if not self._possui_porco_ativo(): + return VITORIA + elif self._possui_passaros_ativo(): + return EM_ANDAMENTO + else: + return DERROTA def lancar(self, angulo, tempo): """ @@ -82,7 +87,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): @@ -94,6 +102,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 @@ -101,3 +114,15 @@ 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_ativo(self): + for passaro in self._passaros: + if passaro.status == ATIVO: + return True + return False + diff --git a/oo/carro.py b/oo/carro.py index 27c5117af..0e438759d 100644 --- a/oo/carro.py +++ b/oo/carro.py @@ -67,7 +67,7 @@ >>> direcao.girar_a_esquerda() >>> direcao.valor 'Norte' - >>> carro - Carri(direcao, motor) + >>> carro = Carro(direcao, motor) >>> carro.calcular_velocidade() 0 >>> carro.acelerar() @@ -80,17 +80,41 @@ >>> carro.calcular_velocidade() 0 >>> carro.calcular_direcao() - >>> 'Norte' + 'Norte' >>> carro.girar_a_direita() >>> carro.calcular_direcao() - >>> 'Leste' + 'Leste' >>> carro.girar_a_esquerda() >>> carro.calcular_direcao() - >>> 'Norte' + 'Norte' >>> carro.girar_a_esquerda() >>> carro.calcular_direcao() - >>> 'Oeste' + 'Oeste' """ + +class Carro: + def __init__(self, direcao, motor): + self.motor = motor + self.direcao = direcao + + def calcular_velocidade(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() + NORTE = 'Norte' SUL = 'Sul' LESTE = 'Leste' @@ -112,7 +136,6 @@ 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] - #direcao class Motor: def __init__(self): diff --git a/oo/pessoa.py b/oo/pessoa.py index 4cd735165..cb488d978 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}' @staticmethod def metodo_estatico(): @@ -18,9 +18,20 @@ def nome_e_atributos_de_classe(cls): return f'{cls} - olhos {cls.olhos}' +class Homem(Pessoa): + def cumprimentar(self): + cumprimentar_da_classe = super().cumprimentar() + return f'{cumprimentar_da_classe}. Aperto de mão' + + +class Mutante(Pessoa): + olhos = 3 + + + if __name__ == '__main__': - renzo = Pessoa(nome='Renzo') - luciano = Pessoa(renzo, nome='Luciano') + renzo = Mutante(nome='Renzo') + luciano = Homem(renzo, nome='Luciano') print(Pessoa.cumprimentar(luciano)) print(id(luciano)) print(luciano.cumprimentar()) @@ -34,10 +45,17 @@ def nome_e_atributos_de_classe(cls): del luciano.olhos print(luciano.__dict__) print(renzo.__dict__) - Pessoa.olhos = 3 print(Pessoa.olhos) print(luciano.olhos) print(renzo.olhos) print(id(Pessoa.olhos), id(luciano.olhos), id(renzo.olhos)) print(Pessoa.metodo_estatico(), luciano.metodo_estatico()) print(Pessoa.nome_e_atributos_de_classe(), luciano.nome_e_atributos_de_classe()) + pessoa=Pessoa('Anonimo') + print(isinstance(pessoa, Pessoa)) + print(isinstance(pessoa, Homem)) + print(isinstance(renzo, Pessoa)) + print(isinstance(renzo, Homem)) + print(renzo.olhos) + print(luciano.cumprimentar()) + print(renzo.cumprimentar()) diff --git a/oo/teste_carro.py b/oo/teste_carro.py new file mode 100644 index 000000000..1b61c11c9 --- /dev/null +++ b/oo/teste_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 teste_acelerar(self): + motor = Motor() + motor.acelerar() + self.assertEqual(1, motor.velocidade) diff --git a/testes/integracao.py b/testes/teste_integracao.py similarity index 100% rename from testes/integracao.py rename to testes/teste_integracao.py 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 99% rename from testes/fase_testes.py rename to testes/testes_fase.py index 8158a43f5..666aa9d52 100644 --- a/testes/fase_testes.py +++ b/testes/testes_fase.py @@ -53,7 +53,7 @@ def __init__(self, x=0, y=0): self._lancado = False self.colidir_com_chao_executado = False - def foi_lancado(self): + def foi_lancado(self) -> object: return self._lancado def lancar(self, angulo, tempo): From e54208c003201cc20a8d1f0c463164dd581ad9f3 Mon Sep 17 00:00:00 2001 From: "cesarfnt@protonmail.com" <1995#izipizi> Date: Sat, 11 Apr 2020 21:57:14 -0300 Subject: [PATCH 15/21] =?UTF-8?q?Implementada=20do=20metodo=20de=20colis?= =?UTF-8?q?=C3=A3o=20entre=20atores?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- testes/testes_atores.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testes/testes_atores.py b/testes/testes_atores.py index f4254f29e..5c1898e6f 100644 --- a/testes/testes_atores.py +++ b/testes/testes_atores.py @@ -133,7 +133,7 @@ def assert_nao_colisao(self, ator, ator2): """ # Armazenando status antes da colisão status_inicial_ator = ator.status - status_inicial_ator_2 = ator2.status + status_inicial_ator_2 = ator2.status # ator.colidir(ator2) From 34bf69807f62d126d850a0ae2d4ce109a13e2ab0 Mon Sep 17 00:00:00 2001 From: cesarfnt Date: Sat, 11 Apr 2020 21:58:20 -0300 Subject: [PATCH 16/21] =?UTF-8?q?Implementada=20do=20metodo=20de=20colis?= =?UTF-8?q?=C3=A3o=20entre=20atores?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- testes/testes_atores.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testes/testes_atores.py b/testes/testes_atores.py index 5c1898e6f..f4254f29e 100644 --- a/testes/testes_atores.py +++ b/testes/testes_atores.py @@ -133,7 +133,7 @@ def assert_nao_colisao(self, ator, ator2): """ # Armazenando status antes da colisão status_inicial_ator = ator.status - status_inicial_ator_2 = ator2.status # + status_inicial_ator_2 = ator2.status ator.colidir(ator2) From 1933a9885b9ad68e63cb22d7b4bb6e016799667f Mon Sep 17 00:00:00 2001 From: "cesarfnt@protonmail.com" <1995#izipizi> Date: Sat, 18 Apr 2020 19:40:03 -0300 Subject: [PATCH 17/21] Finalizado --- atores.py | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/atores.py b/atores.py index 11ed7fe5e..e122faf22 100644 --- a/atores.py +++ b/atores.py @@ -65,6 +65,7 @@ class Obstaculo(Ator): class Porco(Ator): _caracter_ativo = '@' + _caracter_destruido = '+' class DuploLancamentoExcecao(Exception): @@ -96,7 +97,7 @@ def foi_lancado(self): :return: booleano """ - return True + return not self._tempo_de_lancamento is None def colidir_com_chao(self): """ @@ -104,7 +105,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): """ @@ -120,7 +122,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): @@ -132,12 +138,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 From 7924307aff8a217190e461f261d44ac1e2251464 Mon Sep 17 00:00:00 2001 From: cesarfnt Date: Sat, 18 Apr 2020 19:40:29 -0300 Subject: [PATCH 18/21] Finalizado --- atores.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/atores.py b/atores.py index e122faf22..3ea0e41f1 100644 --- a/atores.py +++ b/atores.py @@ -149,7 +149,7 @@ def _calcular_posicao_vertical(self, delta_t): self.y = y_atual def _calcular_posicao_horizontal(self, delta_t): - x_atual = self._x_inicial + 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 From a6cae706e78c0f1a954697e51e7bae187db734b8 Mon Sep 17 00:00:00 2001 From: cesarfnt Date: Fri, 24 Apr 2020 17:17:41 -0300 Subject: [PATCH 19/21] Finalizado --- atores.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/atores.py b/atores.py index 3ea0e41f1..e122faf22 100644 --- a/atores.py +++ b/atores.py @@ -149,7 +149,7 @@ def _calcular_posicao_vertical(self, delta_t): self.y = y_atual def _calcular_posicao_horizontal(self, delta_t): - x_atual = self._x_inicial # + 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 From 9ad5a014153056bc0a494d32bd476ea8de1ae6ff Mon Sep 17 00:00:00 2001 From: cesarfnt Date: Fri, 24 Apr 2020 17:18:18 -0300 Subject: [PATCH 20/21] Finalizado --- atores.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/atores.py b/atores.py index e122faf22..1a4f78d03 100644 --- a/atores.py +++ b/atores.py @@ -154,7 +154,7 @@ def _calcular_posicao_horizontal(self, delta_t): x_atual += self.velocidade_escalar * delta_t * math.cos(angulo_radianos) self.x = x_atual - def _esta_voando(self): + def _esta_voando(self): # return self.foi_lancado() and self.status == ATIVO From 01fc2d60159a885201122028376015c50c763c17 Mon Sep 17 00:00:00 2001 From: cesarfnt Date: Fri, 24 Apr 2020 17:19:00 -0300 Subject: [PATCH 21/21] Finalizado --- atores.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/atores.py b/atores.py index 1a4f78d03..e122faf22 100644 --- a/atores.py +++ b/atores.py @@ -154,7 +154,7 @@ def _calcular_posicao_horizontal(self, delta_t): x_atual += self.velocidade_escalar * delta_t * math.cos(angulo_radianos) self.x = x_atual - def _esta_voando(self): # + def _esta_voando(self): return self.foi_lancado() and self.status == ATIVO