From 9f97154c3ecb967ac88596d458a71ac499da7708 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Fri, 8 Feb 2019 11:41:20 -0200 Subject: [PATCH 01/22] Created Pessoa Class --- 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 5e562b3a291ea2830dad422cfcc6e7094928709b Mon Sep 17 00:00:00 2001 From: BarthJr Date: Fri, 8 Feb 2019 11:50:19 -0200 Subject: [PATCH 02/22] Created cumprimentar method --- oo/pessoa.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index e1da50e22..c4bbdba13 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,2 +1,9 @@ class Pessoa: - pass \ No newline at end of file + def cumprimentar(self): + return f'Hello {id(self)}' + +if __name__ == '__main__': + p = Pessoa() + print(Pessoa.cumprimentar(p)) + print(id(p)) + print(p.cumprimentar()) \ No newline at end of file From f839633773ee8fdd9a1275f5a9be69cafff7dd59 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Fri, 8 Feb 2019 12:07:06 -0200 Subject: [PATCH 03/22] Created name and age instance attributes --- oo/pessoa.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index c4bbdba13..0a6e79b07 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,9 +1,15 @@ class Pessoa: + def __init__(self, nome=None, idade=25): + self.idade = idade + self.nome = nome + def cumprimentar(self): return f'Hello {id(self)}' if __name__ == '__main__': - p = Pessoa() + p = Pessoa('Barth') print(Pessoa.cumprimentar(p)) print(id(p)) - print(p.cumprimentar()) \ No newline at end of file + print(p.cumprimentar()) + print(p.nome) + print(p.idade) From a0f281dc6ec73f12102ebab01f0c2a1ff104a9f8 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Fri, 8 Feb 2019 12:20:13 -0200 Subject: [PATCH 04/22] Created complex attribute filhos --- oo/pessoa.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index 0a6e79b07..8ae58552b 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,15 +1,19 @@ class Pessoa: - def __init__(self, nome=None, idade=25): + def __init__(self, *filhos, nome=None, idade=25): self.idade = idade self.nome = nome + self.filhos = list(filhos) def cumprimentar(self): return f'Hello {id(self)}' if __name__ == '__main__': - p = Pessoa('Barth') - print(Pessoa.cumprimentar(p)) - print(id(p)) - print(p.cumprimentar()) - print(p.nome) - print(p.idade) + barth = Pessoa(nome='Barth') + joao = Pessoa(barth, nome='João') + print(Pessoa.cumprimentar(joao)) + print(id(joao)) + print(joao.cumprimentar()) + print(joao.nome) + print(joao.idade) + for filho in joao.filhos: + print(filho.nome) From 7e2892b29af3b4e8585d2624798b3b4d2d50095d Mon Sep 17 00:00:00 2001 From: BarthJr Date: Fri, 8 Feb 2019 12:25:50 -0200 Subject: [PATCH 05/22] Created and removed dynamic attribute of object Pessoa --- oo/pessoa.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/oo/pessoa.py b/oo/pessoa.py index 8ae58552b..ec2e0c8c4 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -17,3 +17,7 @@ def cumprimentar(self): print(joao.idade) for filho in joao.filhos: print(filho.nome) + joao.sobrenome = 'Barth' + del joao.filhos + print(barth.__dict__) + print(joao.__dict__) From 27eb53ad314b1328016a50598ec59a721fa08985 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Fri, 8 Feb 2019 12:41:19 -0200 Subject: [PATCH 06/22] Created class attribute olhos --- oo/pessoa.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/oo/pessoa.py b/oo/pessoa.py index ec2e0c8c4..a3f90f8c7 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,4 +1,5 @@ class Pessoa: + olhos = 2 def __init__(self, *filhos, nome=None, idade=25): self.idade = idade self.nome = nome @@ -19,5 +20,12 @@ def cumprimentar(self): print(filho.nome) joao.sobrenome = 'Barth' del joao.filhos + joao.olhos = 1 print(barth.__dict__) print(joao.__dict__) + Pessoa.olhos = 1 + print(Pessoa.olhos) + print(barth.olhos) + print(joao.olhos) + print(id(Pessoa.olhos), id(barth.olhos), id(joao.olhos), id(1)) + From 2902abbd8b5f815e44285a1569ace908b739f36e Mon Sep 17 00:00:00 2001 From: BarthJr Date: Fri, 8 Feb 2019 16:21:48 -0200 Subject: [PATCH 07/22] Implemented the Motor and Direcao classes --- oo/carro.py | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 oo/carro.py diff --git a/oo/carro.py b/oo/carro.py new file mode 100644 index 000000000..c5379e426 --- /dev/null +++ b/oo/carro.py @@ -0,0 +1,126 @@ +""" +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á 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 diração com valores possíveis: Norte, Sul, Leste, Oeste. +2) Método girar_a_direita +2) 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_esquerda() + >>> carro.calcular_direcao() + 'Oeste' +""" + + +class Motor: + def __init__(self, velocidade=0): + self.velocidade = velocidade + + def acelerar(self): + self.velocidade += 1 + + def frear(self): + self.velocidade -= 2 + self.velocidade = max(0, self.velocidade) + + +class Direcao: + NORTE = 'Norte' + LESTE = 'Leste' + SUL = 'Sul' + OESTE = 'Oeste' + direcoes_possiveis = [NORTE, LESTE, SUL, OESTE] + + def __init__(self, valor=NORTE): + self.valor = valor + self.pos = 0 + + def girar_a_direita(self): + self.pos = (self.pos + 1) % len(self.direcoes_possiveis) + self.valor = self.direcoes_possiveis[self.pos] + + def girar_a_esquerda(self): + self.pos = (self.pos - 1) % len(self.direcoes_possiveis) + self.valor = self.direcoes_possiveis[self.pos] + + +if __name__ == '__main__': + carro = Carro() From aad4d8a20f8071b544f7978015992cacaa6128d2 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Fri, 8 Feb 2019 16:29:49 -0200 Subject: [PATCH 08/22] Implemented Carro class --- oo/carro.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/oo/carro.py b/oo/carro.py index c5379e426..72bc6703b 100644 --- a/oo/carro.py +++ b/oo/carro.py @@ -122,5 +122,28 @@ def girar_a_esquerda(self): self.valor = self.direcoes_possiveis[self.pos] +class Carro: + def __init__(self, direcao, motor): + self.motor = motor + self.direcao = direcao + + def calcular_velocidade(self): + return self.motor.velocidade + + def acelerar(self): + return self.motor.acelerar() + + def frear(self): + return self.motor.frear() + + def calcular_direcao(self): + return self.direcao.valor + + def girar_a_direita(self): + return self.direcao.girar_a_direita() + + def girar_a_esquerda(self): + return self.direcao.girar_a_esquerda() + if __name__ == '__main__': carro = Carro() From 450086a8feed771666e4787bb0e2d5ea95b5b0b7 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Sun, 17 Mar 2019 22:35:55 -0300 Subject: [PATCH 09/22] Correct grammatical errors --- atores.py | 2 +- testes/atores_testes.py | 2 +- testes/fase_testes.py | 2 +- testes/{integracao.py => integracao_testes.py} | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename testes/{integracao.py => integracao_testes.py} (98%) diff --git a/atores.py b/atores.py index cfc2ef5ea..538a11c37 100644 --- a/atores.py +++ b/atores.py @@ -89,7 +89,7 @@ def __init__(self, x=0, y=0): def foi_lancado(self): """ - Método que retorna verdaeira se o pássaro já foi lançado e falso caso contrário + Método que retorna verdadeiro se o pássaro já foi lançado e falso caso contrário :return: booleano """ diff --git a/testes/atores_testes.py b/testes/atores_testes.py index f4254f29e..e833eb43a 100644 --- a/testes/atores_testes.py +++ b/testes/atores_testes.py @@ -113,7 +113,7 @@ def test_caracter(self): def assert_colisao_atores_ativos(self, ator, ator2, intervalo=1): """ Se certifica que há colisão entre atores ativos - Atenção: Esse não é método de teste porque nao se inicia com prefixo "text". + Atenção: Esse não é método de teste porque nao se inicia com prefixo "test". Ele serve apenas para encapsular toda lógica de teste de colisão entre dois atores ativos """ # Conferindo status dos dois atores antes da colisão diff --git a/testes/fase_testes.py b/testes/fase_testes.py index 8158a43f5..074863f16 100644 --- a/testes/fase_testes.py +++ b/testes/fase_testes.py @@ -173,7 +173,7 @@ def teste_lancar_passaro_sem_erro_quando_nao_existe_passaro(self): fase.lancar(90, 1) fase.lancar(45, 3) fase.lancar(31, - 5) # testando que lançar passaros depios de todos + 5) # testando que lançar passaros depois de todos # lançados não causa erro self.assertTrue(passaros[0].foi_lancado()) diff --git a/testes/integracao.py b/testes/integracao_testes.py similarity index 98% rename from testes/integracao.py rename to testes/integracao_testes.py index 11f2f0178..dbab6ad50 100644 --- a/testes/integracao.py +++ b/testes/integracao_testes.py @@ -85,7 +85,7 @@ def teste_lancar_passaro_sem_erro_quando_nao_existe_passaro(self): self.assertFalse(passaro_amarelo.foi_lancado()) fase.lancar(90, 1) fase.lancar(45, 3) - fase.lancar(31, 5) # testando que lançar passaros depios de todos lançados não causa erro + fase.lancar(31, 5) # testando que lançar passaros depois de todos lançados não causa erro self.assertTrue(passaro_vermelho.foi_lancado()) self.assertEqual(math.radians(90), passaro_vermelho._angulo_de_lancamento) From d7b4354289fa3964b6ed8f61851fe46aaa13132a Mon Sep 17 00:00:00 2001 From: BarthJr Date: Sun, 17 Mar 2019 22:42:56 -0300 Subject: [PATCH 10/22] Implements characters for Obstaculo and Porco classes --- atores.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/atores.py b/atores.py index 538a11c37..45f511137 100644 --- a/atores.py +++ b/atores.py @@ -9,7 +9,7 @@ GRAVIDADE = 10 # m/s^2 -class Ator(): +class Ator: """ Classe que representa um ator. Ele representa um ponto cartesiano na tela. """ @@ -57,11 +57,12 @@ def colidir(self, outro_ator, intervalo=1): class Obstaculo(Ator): - pass + _caracter_ativo = 'O' class Porco(Ator): - pass + _caracter_ativo = '@' + _caracter_destruido = '+' class DuploLancamentoExcecao(Exception): From 7a6996eea6d927cbbd5de80a309328fa07a30b54 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Sun, 17 Mar 2019 22:45:30 -0300 Subject: [PATCH 11/22] Implements calcular_posicao method of the class Ator --- atores.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/atores.py b/atores.py index 45f511137..b0829ebf5 100644 --- a/atores.py +++ b/atores.py @@ -38,7 +38,8 @@ 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): """ From 79b267593b1201948f3e8f496128d9284f1ad328 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Sun, 17 Mar 2019 22:48:36 -0300 Subject: [PATCH 12/22] Implements PassaroAmarelo and PassaroVermelho classes --- atores.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/atores.py b/atores.py index b0829ebf5..832c43252 100644 --- a/atores.py +++ b/atores.py @@ -135,8 +135,11 @@ def lancar(self, angulo, tempo_de_lancamento): class PassaroAmarelo(Passaro): - pass + _caracter_destruido = 'a' + velocidade_escalar = 30 class PassaroVermelho(Passaro): - pass \ No newline at end of file + _caracter_ativo = 'V' + _caracter_destruido = 'v' + velocidade_escalar = 20 From a4fd973c0fcf78fbbaf430a294325f5cacfa330e Mon Sep 17 00:00:00 2001 From: BarthJr Date: Sun, 17 Mar 2019 22:50:48 -0300 Subject: [PATCH 13/22] Implements foi_lancado method of the class Passaro --- atores.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/atores.py b/atores.py index 832c43252..b3245af30 100644 --- a/atores.py +++ b/atores.py @@ -89,13 +89,14 @@ def __init__(self, x=0, y=0): self._tempo_de_lancamento = None self._angulo_de_lancamento = None # radianos - def foi_lancado(self): + def foi_lancado(self) -> bool: """ Método que retorna verdadeiro se o pássaro já foi lançado e falso caso contrário - :return: booleano """ - return True + if self._tempo_de_lancamento is not None and self._angulo_de_lancamento is not None: + return True + return False def colidir_com_chao(self): """ From 4577566dce72488bd83394262f21ba3368ee2de2 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Sun, 17 Mar 2019 22:52:12 -0300 Subject: [PATCH 14/22] Implements colidir_com_chao method of the class Passaro --- atores.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/atores.py b/atores.py index b3245af30..1369b63cf 100644 --- a/atores.py +++ b/atores.py @@ -104,7 +104,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): """ From 12afc7f3123786991580768546a560f6cb1bbdb6 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Sun, 17 Mar 2019 22:53:59 -0300 Subject: [PATCH 15/22] Implements colidir method of the class Ator --- atores.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/atores.py b/atores.py index 1369b63cf..67af9f2d2 100644 --- a/atores.py +++ b/atores.py @@ -53,8 +53,12 @@ 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 = DESTRUIDO + outro_ator.status = DESTRUIDO class Obstaculo(Ator): From 64dcf6b03b86a7a89bf482e987e1131e34076225 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Sun, 17 Mar 2019 22:56:05 -0300 Subject: [PATCH 16/22] Implements calcular_posicao method of the class Passaro --- atores.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/atores.py b/atores.py index 67af9f2d2..623f393e6 100644 --- a/atores.py +++ b/atores.py @@ -125,8 +125,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): """ @@ -137,7 +140,20 @@ 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): + formula_y = self._y_inicial + self.velocidade_escalar * math.sin(self._angulo_de_lancamento) * delta_t + formula_y -= (GRAVIDADE * delta_t ** 2) / 2 + self.y = formula_y + + def _calcular_posicao_horizontal(self, delta_t): + formula_x = self._x_inicial + self.velocidade_escalar * math.cos(self._angulo_de_lancamento) * delta_t + self.x = formula_x + + def _esta_voando(self): + return self.foi_lancado() and self.status == ATIVO class PassaroAmarelo(Passaro): From 84691a9ae8493a9c4918cc3a87a8e5464f4feca7 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Sun, 17 Mar 2019 23:03:22 -0300 Subject: [PATCH 17/22] Adds obstacles in one phase --- fase.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fase.py b/fase.py index 3385175c6..70c3ca767 100644 --- a/fase.py +++ b/fase.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -from itertools import chain from atores import ATIVO @@ -43,7 +42,7 @@ def adicionar_obstaculo(self, *obstaculos): :param obstaculos: """ - pass + self._obstaculos.extend(obstaculos) def adicionar_porco(self, *porcos): """ From 22200081437b4f6ddc7c1154ab46e79946943069 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Sun, 17 Mar 2019 23:04:32 -0300 Subject: [PATCH 18/22] Adds pigs in one phase --- fase.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fase.py b/fase.py index 70c3ca767..c29a4800f 100644 --- a/fase.py +++ b/fase.py @@ -50,7 +50,7 @@ def adicionar_porco(self, *porcos): :param porcos: """ - pass + self._porcos.extend(porcos) def adicionar_passaro(self, *passaros): """ From 54067d8bf7ef53233a79bcf5d139e2ae42e28f87 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Sun, 17 Mar 2019 23:04:48 -0300 Subject: [PATCH 19/22] Adds birds in one phase --- fase.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fase.py b/fase.py index c29a4800f..681dad114 100644 --- a/fase.py +++ b/fase.py @@ -58,7 +58,7 @@ def adicionar_passaro(self, *passaros): :param passaros: """ - pass + self._passaros.extend(passaros) def status(self): """ From 66ca6d3baf63db7e5b629ed29d3a7b87d4130ff7 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Sun, 17 Mar 2019 23:06:40 -0300 Subject: [PATCH 20/22] adds phase status --- fase.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/fase.py b/fase.py index 681dad114..8c6782193 100644 --- a/fase.py +++ b/fase.py @@ -72,7 +72,25 @@ def status(self): :return: """ - return EM_ANDAMENTO + + if self._tem_porco_ativo() and self._tem_passaro_ativo(): + return EM_ANDAMENTO + elif not self._tem_porco_ativo(): + return VITORIA + elif self._tem_porco_ativo(): + return DERROTA + + def _tem_porco_ativo(self) -> bool: + for porco in self._porcos: + if porco.status == ATIVO: + return True + return False + + def _tem_passaro_ativo(self) -> bool: + for passaro in self._passaros: + if passaro.status == ATIVO: + return True + return False def lancar(self, angulo, tempo): """ From 1c3586893c0bde6b9f842ee00f8ecf88b3ecd189 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Sun, 17 Mar 2019 23:07:48 -0300 Subject: [PATCH 21/22] adds launch logic --- fase.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fase.py b/fase.py index 8c6782193..d2640d416 100644 --- a/fase.py +++ b/fase.py @@ -103,7 +103,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): From 0769dda74ed640b95f37afa3ed83ef45dd8909a2 Mon Sep 17 00:00:00 2001 From: BarthJr Date: Sun, 17 Mar 2019 23:11:28 -0300 Subject: [PATCH 22/22] Logic that returns the Cartesian points to be displayed on the screen --- fase.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/fase.py b/fase.py index d2640d416..c9819fd77 100644 --- a/fase.py +++ b/fase.py @@ -108,17 +108,20 @@ def lancar(self, angulo, tempo): passaro.lancar(angulo, tempo) break - - def calcular_pontos(self, tempo): + def calcular_pontos(self, tempo) -> Ponto: """ Lógica que retorna os pontos a serem exibidos na tela. Cada ator deve ser transformado em um Ponto. :param tempo: tempo para o qual devem ser calculados os pontos - :return: objeto do tipo Ponto """ - pontos=[self._transformar_em_ponto(a) for a in self._passaros+self._obstaculos+self._porcos] + 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