From 63e792cf8e8c3a4055d29cc868e356328831c5ca Mon Sep 17 00:00:00 2001 From: Cleitoon1 Date: Tue, 15 Sep 2015 16:13:11 -0300 Subject: [PATCH 1/6] Atores MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Continuação da parte dos atores(só falta o método lançar) --- .settings/org.eclipse.core.resources.prefs | 2 ++ atores.py | 39 +++++++++++++--------- fase.py | 2 ++ 3 files changed, 28 insertions(+), 15 deletions(-) create mode 100644 .settings/org.eclipse.core.resources.prefs diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 000000000..4355a0e3b --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/fase.py=utf-8 diff --git a/atores.py b/atores.py index b4519a9db..b273131d9 100644 --- a/atores.py +++ b/atores.py @@ -37,7 +37,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): """ @@ -51,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: + if self.x - intervalo <= outro_ator.x <= self.x + intervalo and self.y - intervalo <= outro_ator.y <= self.y + intervalo: + self.status = DESTRUIDO + outro_ator.status = DESTRUIDO class Obstaculo(Ator): - pass + _caracter_ativo = 'O' class Porco(Ator): - pass + _caracter_ativo = '@' + _caracter_destruido = '+' class Passaro(Ator): @@ -85,10 +89,9 @@ 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 - :return: booleano """ - return True + return self._tempo_de_lancamento is not None def colidir_com_chao(self): """ @@ -96,7 +99,9 @@ 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 + self.caracter() def calcular_posicao(self, tempo): """ @@ -112,8 +117,7 @@ def calcular_posicao(self, tempo): :param tempo: tempo de jogo a ser calculada a posição :return: posição x, y """ - return 1, 1 - + return self.x, self.y def lancar(self, angulo, tempo_de_lancamento): """ @@ -123,13 +127,18 @@ def lancar(self, angulo, tempo_de_lancamento): :param angulo: :param tempo_de_lancamento: :return: - """ - pass + """ + self._angulo_de_lancamento = math.radians(angulo) + _tempo_de_lancamento = tempo_de_lancamento + return math.radians(angulo) class PassaroAmarelo(Passaro): - pass - + velocidade_escalar = 30 + _caracter_destruido = "a" class PassaroVermelho(Passaro): - pass \ No newline at end of file + velocidade_escalar = 20 + _caracter_ativo = "V" + _caracter_destruido = "v" + diff --git a/fase.py b/fase.py index ea8f9af24..a5ed8bce8 100644 --- a/fase.py +++ b/fase.py @@ -38,6 +38,8 @@ def __init__(self, intervalo_de_colisao=1): def adicionar_obstaculo(self, *obstaculos): + self ._obstaculos.extend(obstaculos) + """ Adiciona obstáculos em uma fase From 0fec0236465493becda834239ae478d59550bc41 Mon Sep 17 00:00:00 2001 From: Cleitoon1 Date: Thu, 17 Sep 2015 19:28:47 -0300 Subject: [PATCH 2/6] Update atores.py --- atores.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/atores.py b/atores.py index b273131d9..7d75f8f53 100644 --- a/atores.py +++ b/atores.py @@ -128,9 +128,9 @@ def lancar(self, angulo, tempo_de_lancamento): :param tempo_de_lancamento: :return: """ - self._angulo_de_lancamento = math.radians(angulo) + _angulo_de_lancamento = math.radians(angulo) _tempo_de_lancamento = tempo_de_lancamento - return math.radians(angulo) + class PassaroAmarelo(Passaro): From 5341b723b3e0dfa38a671aa28d6a13b1c4692339 Mon Sep 17 00:00:00 2001 From: Cleitoon1 Date: Thu, 17 Sep 2015 19:32:26 -0300 Subject: [PATCH 3/6] Update atores.py --- atores.py | 1 + 1 file changed, 1 insertion(+) diff --git a/atores.py b/atores.py index 7d75f8f53..764a8f70a 100644 --- a/atores.py +++ b/atores.py @@ -128,6 +128,7 @@ def lancar(self, angulo, tempo_de_lancamento): :param tempo_de_lancamento: :return: """ + _angulo_de_lancamento = math.radians(angulo) _tempo_de_lancamento = tempo_de_lancamento From c85b186beb9934e4c0fe7117e9be6979852b4d59 Mon Sep 17 00:00:00 2001 From: Cleitoon1 Date: Tue, 22 Sep 2015 09:42:49 -0300 Subject: [PATCH 4/6] Fase Finalizada --- atores.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/atores.py b/atores.py index 764a8f70a..01d52f6ad 100644 --- a/atores.py +++ b/atores.py @@ -56,6 +56,8 @@ def colidir(self, outro_ator, intervalo=1): if self.x - intervalo <= outro_ator.x <= self.x + intervalo and self.y - intervalo <= outro_ator.y <= self.y + intervalo: self.status = DESTRUIDO outro_ator.status = DESTRUIDO + self.caracter() + outro_ator.caracter() class Obstaculo(Ator): @@ -117,6 +119,11 @@ def calcular_posicao(self, tempo): :param tempo: tempo de jogo a ser calculada a posição :return: posição x, y """ + + if self.status == ATIVO and self.foi_lancado(): + delta_t = tempo - self._tempo_de_lancamento + self.x = self._x_inicial + self.velocidade_escalar * math.cos(self._angulo_de_lancamento) * delta_t + self.y =self._y_inicial + self.velocidade_escalar * math.sin(self._angulo_de_lancamento) * delta_t - (GRAVIDADE * delta_t ** 2)/2 return self.x, self.y def lancar(self, angulo, tempo_de_lancamento): @@ -129,9 +136,11 @@ def lancar(self, angulo, tempo_de_lancamento): :return: """ - _angulo_de_lancamento = math.radians(angulo) - _tempo_de_lancamento = tempo_de_lancamento - + self._angulo_de_lancamento = math.radians(angulo) + self._tempo_de_lancamento = tempo_de_lancamento + + + class PassaroAmarelo(Passaro): From 2b49fcb946a24185114c9f31afb9eaceab42d58a Mon Sep 17 00:00:00 2001 From: Cleitoon1 Date: Tue, 22 Sep 2015 09:43:43 -0300 Subject: [PATCH 5/6] Fase Finalizada Fase Finalizada --- fase.py | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/fase.py b/fase.py index a5ed8bce8..842762388 100644 --- a/fase.py +++ b/fase.py @@ -48,6 +48,7 @@ def adicionar_obstaculo(self, *obstaculos): pass def adicionar_porco(self, *porcos): + self ._porcos.extend(porcos) """ Adiciona porcos em uma fase @@ -56,6 +57,7 @@ def adicionar_porco(self, *porcos): pass def adicionar_passaro(self, *passaros): + self._passaros.extend(passaros) """ Adiciona pássaros em uma fase @@ -75,8 +77,16 @@ def status(self): :return: """ + porco, passaro = False, False + porco = [True for i in self._porcos if i.status == ATIVO] + passaro = [True for i in self._passaros if i.status == ATIVO] + if not porco: + return VITORIA + elif not passaro: + return DERROTA return EM_ANDAMENTO + def lancar(self, angulo, tempo): """ Método que executa lógica de lançamento. @@ -88,8 +98,11 @@ def lancar(self, angulo, tempo): :param angulo: ângulo de lançamento :param tempo: Tempo de lançamento """ - pass - + # [i.lancar(angulo,tempo) for i in self._passaros if i.status == ATIVO and not i.foi_lancado()] + for i in self._passaros: + if i.status == ATIVO and not i.foi_lancado(): + i.lancar(angulo, tempo) + break def calcular_pontos(self, tempo): """ @@ -100,10 +113,21 @@ def calcular_pontos(self, tempo): :param tempo: tempo para o qual devem ser calculados os pontos :return: objeto do tipo Ponto """ - pontos=[] - + boo = True + pontos = [] + # 1.0 Calcular a posição de cada passaro. + # 1.1 Mandar Calcular a posição passando o tempo. + for passaro in self._passaros: + passaro.calcular_posicao(tempo) + # 2.0 Verificar se colidiu com porcos ou obstaculo + for ator in self._porcos + self._obstaculos: + passaro.colidir(ator, self.intervalo_de_colisao) + passaro.colidir_com_chao() + # 3.0 Transformar tudo em pontos (atores, obstaculos e passaros) + # 3.1 Passar tudo para a lista e retorna-la + for ator in self._porcos + self._obstaculos + self._passaros: + pontos.append(self._transformar_em_ponto(ator)) return pontos - def _transformar_em_ponto(self, ator): - return Ponto(ator.x, ator.y, ator.caracter()) - + def _transformar_em_ponto(self, c): + return Ponto(c.x, c.y, c.caracter()) From f84286a4f5c2543ddaa2e6c9cd083dec20e3a5da Mon Sep 17 00:00:00 2001 From: Cleitoon1 Date: Tue, 22 Sep 2015 09:44:15 -0300 Subject: [PATCH 6/6] Atores Finalizado Atores Finalizado --- atores.py | 1 - 1 file changed, 1 deletion(-) diff --git a/atores.py b/atores.py index 01d52f6ad..2f87f0540 100644 --- a/atores.py +++ b/atores.py @@ -7,7 +7,6 @@ ATIVO = 'Ativo' GRAVIDADE = 10 # m/s^2 - class Ator(): """ Classe que representa um ator. Ele representa um ponto cartesiano na tela.