diff --git a/fase.py b/fase.py index 3385175c6..6e8f5894b 100644 --- a/fase.py +++ b/fase.py @@ -36,14 +36,13 @@ def __init__(self, intervalo_de_colisao=1): self._porcos = [] self._obstaculos = [] - def adicionar_obstaculo(self, *obstaculos): """ Adiciona obstáculos em uma fase :param obstaculos: """ - pass + self._obstaculos.extend(obstaculos) def adicionar_porco(self, *porcos): """ @@ -51,7 +50,7 @@ def adicionar_porco(self, *porcos): :param porcos: """ - pass + self._porcos.extend(porcos) def adicionar_passaro(self, *passaros): """ @@ -59,7 +58,7 @@ def adicionar_passaro(self, *passaros): :param passaros: """ - pass + self._passaros.extend(passaros) def status(self): """ @@ -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,27 @@ 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] + 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 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 diff --git a/oo/Carro.py b/oo/Carro.py new file mode 100644 index 000000000..2b62608a8 --- /dev/null +++ b/oo/Carro.py @@ -0,0 +1,149 @@ +""" +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() + 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): + self.velocidade = 0 + def acelerar(self): + self.velocidade += 1 + + def frear(self): + if self.velocidade == 1: + 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 = 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): + self.direcao.girar_a_direita() + + def girar_a_esquerda(self): + self.direcao.girar_a_esquerda() \ No newline at end of file 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 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