From da96dcdcf648f4cbc42312c490d34760efee3555 Mon Sep 17 00:00:00 2001 From: Felipe Bavuso Date: Sun, 17 Apr 2022 10:01:27 -0300 Subject: [PATCH 1/8] Criando a primeira classe --- oo/Pessoa.py | 2 ++ oo/__init__.py | 0 2 files changed, 2 insertions(+) create mode 100644 oo/Pessoa.py create mode 100644 oo/__init__.py 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 diff --git a/oo/__init__.py b/oo/__init__.py new file mode 100644 index 000000000..e69de29bb From dbf28335000dfb163449975554ac2e8c00daa498 Mon Sep 17 00:00:00 2001 From: Felipe Bavuso Date: Mon, 25 Apr 2022 10:36:27 -0300 Subject: [PATCH 2/8] Criando a Classe Carro e Doctest --- oo/Carro.py | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 oo/Carro.py diff --git a/oo/Carro.py b/oo/Carro.py new file mode 100644 index 000000000..250f772ae --- /dev/null +++ b/oo/Carro.py @@ -0,0 +1,101 @@ +""" +Voçê deve criar uma classe carro que vai possuir dois atributos compostos por outras duas classes: + +1) Motor +2) Direcao + +O Motor terá a responsabilidade de controlar a velocidade. +ele oferece os seguintes atributos: +1) atributo de dado valocidade +2) metodo acelerar, que devera incrementar na velocidade uma unidade +3) metodo frear, que devera decrementar a velocidade em duas unidades + +A Direcao tera a responsabilidade de controlar a direcao. +ela oferece os seguintes atributos: +1) valor de direçao com valores possiveis : Norte, Sul, Leste , Oeste +2) metodo girar_a_direita +3) metodo 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() + 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' + + + +""" \ No newline at end of file From 8594c356809bfb778d5c6d9a63ecf7ceda597d9e Mon Sep 17 00:00:00 2001 From: Felipe Bavuso Date: Mon, 25 Apr 2022 10:58:48 -0300 Subject: [PATCH 3/8] =?UTF-8?q?Criando=20a=20Classe=20Motor=20e=20Dire?= =?UTF-8?q?=C3=A7=C3=A3o=20em=20Carro.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/Carro.py | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/oo/Carro.py b/oo/Carro.py index 250f772ae..297d908cc 100644 --- a/oo/Carro.py +++ b/oo/Carro.py @@ -40,7 +40,7 @@ >>> motor.frear() >>> motor.velocidade 0 - >>># Testando Direcao + >>> #Testando Direcao >>> direcao = Direcao() >>> direcao.valor 'Norte' @@ -98,4 +98,27 @@ -""" \ No newline at end of file +""" + +class Motor: + def __init__(self): + self.velocidade = 0 + def acelerar(self): + self.velocidade += 1 + + def frear(self): + if self.velocidade == 1: + self.velocidade -= 1 + else: + self.velocidade -= 2 + + +class Direcao: + def __init__(self): + self.valor = str + + def girar_a_direita(self): + pass + + def girar_a_esquerda(self): + pass \ No newline at end of file From 047f00a13aff75f16641edd76274d4ffb9608a3a Mon Sep 17 00:00:00 2001 From: Felipe Bavuso Date: Tue, 26 Apr 2022 09:43:08 -0300 Subject: [PATCH 4/8] Finalizada Carro.py --- oo/Carro.py | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/oo/Carro.py b/oo/Carro.py index 297d908cc..2b62608a8 100644 --- a/oo/Carro.py +++ b/oo/Carro.py @@ -77,9 +77,6 @@ 1 >>> carro.acelerar() >>> carro.calcular_velocidade() - 1 - >>> carro.acelerar() - >>> carro.calcular_velocidade() 2 >>> carro.frear() >>> carro.calcular_velocidade() @@ -111,14 +108,42 @@ def frear(self): self.velocidade -= 1 else: self.velocidade -= 2 - +NORTE = 'Norte' +SUL = 'Sul' +LESTE = 'Leste' +OESTE = 'Oeste' class Direcao: + rodar_a_direita_dct = {NORTE: LESTE, LESTE: SUL, SUL: OESTE, OESTE: NORTE} + rodar_a_esquerda_dct = {NORTE: OESTE, LESTE: NORTE, SUL: LESTE, OESTE: SUL} def __init__(self): - self.valor = str + self.valor = NORTE + + def girar_a_direita(self): + self.valor = self.rodar_a_direita_dct[self.valor] + + def girar_a_esquerda(self): + self.valor = self.rodar_a_esquerda_dct[self.valor] + +class Carro: + def __init__(self, direcao, motor): + self.direcao = direcao + self.motor = motor + + 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): - pass + self.direcao.girar_a_direita() def girar_a_esquerda(self): - pass \ No newline at end of file + self.direcao.girar_a_esquerda() \ No newline at end of file From 75d7cbb390be30184eea96f7a610c5815561ff08 Mon Sep 17 00:00:00 2001 From: Felipe Bavuso Date: Tue, 26 Apr 2022 09:49:11 -0300 Subject: [PATCH 5/8] Adicionado porcos, obstaculos, passaros a fase.py --- fase.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 d190ea85ca744cbe7458bebe1aa977507f130127 Mon Sep 17 00:00:00 2001 From: Felipe Bavuso Date: Wed, 27 Apr 2022 08:18:58 -0300 Subject: [PATCH 6/8] corrigindo nome dos testes --- testes/{atores_testes.py => testes_atores.py} | 0 testes/{fase_testes.py => testes_fase.py} | 0 testes/{integracao.py => testes_integracao.py} | 0 3 files changed, 0 insertions(+), 0 deletions(-) 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/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 e3a8e80f4c615a10052e9736d6b0962c87e6153b Mon Sep 17 00:00:00 2001 From: Felipe Bavuso Date: Wed, 27 Apr 2022 08:51:27 -0300 Subject: [PATCH 7/8] atualizando classe --- fase.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/fase.py b/fase.py index 1c8fd161f..2dd01ff10 100644 --- a/fase.py +++ b/fase.py @@ -36,7 +36,6 @@ def __init__(self, intervalo_de_colisao=1): self._porcos = [] self._obstaculos = [] - def adicionar_obstaculo(self, *obstaculos): """ Adiciona obstáculos em uma fase @@ -73,7 +72,12 @@ 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,8 +90,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): """ @@ -98,10 +104,21 @@ def calcular_pontos(self, tempo): :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] + pontos = [self._transformar_em_ponto(a) for a in self._passaros+self._obstaculos+self._porcos] return pontos 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 passaros in self._passaros: + if passaros.status == ATIVO: + return True + return False From 653a02d62540475ccfdd06f6da42ef71553e9768 Mon Sep 17 00:00:00 2001 From: Felipe Bavuso Date: Wed, 27 Apr 2022 09:31:02 -0300 Subject: [PATCH 8/8] atualizando calcular_pontos --- fase.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fase.py b/fase.py index 2dd01ff10..6e8f5894b 100644 --- a/fase.py +++ b/fase.py @@ -104,6 +104,12 @@ 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