diff --git a/.gitignore b/.gitignore index 6220a9500..062f422a6 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,5 @@ coverage.xml # Sphinx documentation docs/_build/ +# Pyenv +.python-version \ No newline at end of file diff --git a/atores.py b/atores.py index cfc2ef5ea..a84002cd2 100644 --- a/atores.py +++ b/atores.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +# from __future__ import unicode_literals import math @@ -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,41 @@ def colidir(self, outro_ator, intervalo=1): :param intervalo: Intervalo a ser considerado :return: """ - pass - + if self.status == DESTRUIDO or outro_ator.status == DESTRUIDO: + return + + if abs(self.x - outro_ator.x) <= intervalo and abs( + self.y - outro_ator.y) <= intervalo: + self.status = DESTRUIDO + outro_ator.status = DESTRUIDO + + # if self.status == ATIVO and outro_ator.status == ATIVO: + # + # t_self = (self.x, self.y) + # t_outro_ator = (outro_ator.x, outro_ator.y) + # t1 = (self.x, self.y - intervalo) + # t2 = (self.x, self.y + intervalo) + # + # t3 = (self.x - intervalo, self.y - intervalo) + # t4 = (self.x - intervalo, self.y) + # t5 = (self.x - intervalo, self.y + intervalo) + # + # t6 = (self.x + intervalo, self.y - intervalo) + # t7 = (self.x + intervalo, self.y) + # t8 = (self.x + intervalo, self.y + intervalo) + # + # if t_outro_ator in [t1, t2, t3, t4, t5, t6, t7, t8] or t_self == t_outro_ator: + # self.status = DESTRUIDO + # outro_ator.status = DESTRUIDO class Obstaculo(Ator): - pass + _caracter_ativo = 'O' class Porco(Ator): - pass + _caracter_ativo = '@' + _caracter_destruido = '+' class DuploLancamentoExcecao(Exception): @@ -93,7 +118,7 @@ def foi_lancado(self): :return: booleano """ - return True + return self._tempo_de_lancamento is not None def colidir_com_chao(self): """ @@ -101,7 +126,8 @@ def colidir_com_chao(self): o status dos Passaro deve ser alterado para destruido, bem como o seu caracter """ - pass + self.status = DESTRUIDO if self.y <= 0 else ATIVO + # _ca= self.caracter def calcular_posicao(self, tempo): """ @@ -117,8 +143,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): """ @@ -129,12 +154,18 @@ def lancar(self, angulo, tempo_de_lancamento): :param tempo_de_lancamento: :return: """ - pass + if self.foi_lancado(): + raise DuploLancamentoExcecao("Pássaro já foi lançado") + self._angulo_de_lancamento = math.radians(angulo) + self._tempo_de_lancamento = 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 diff --git a/calculadora/__init__.py b/calculadora/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/calculadora/calc_procedural.py b/calculadora/calc_procedural.py new file mode 100644 index 000000000..228368a90 --- /dev/null +++ b/calculadora/calc_procedural.py @@ -0,0 +1,11 @@ +def calcular(): + operando1 = float(input("Digite o primeiro operando: ")) + operando2 = float(input("Digite o segundo operando: ")) + sinal = input("Digite o sinal da operação: ") + + if sinal == "+": + return operando1 + operando2 + elif sinal == "-": + return operando1 - operando2 + else: + return "Operação não permitida!" diff --git a/calculadora/calculadora_oo.py b/calculadora/calculadora_oo.py new file mode 100644 index 000000000..e81910dc7 --- /dev/null +++ b/calculadora/calculadora_oo.py @@ -0,0 +1,36 @@ +class Operacao(): + def calcular(self, operando1, operando2): + not NotImplementedError() + + +class Calculadora(): + """ Obter inputs de usuários e conter operações """ + def __init__(self): + self.operacoes = {} + + def adicionar_operacao(self, sinal, operacao): + self.operacoes[sinal] = operacao + + def executar(self): + operando1 = float(input("Digite o primeiro operando: ")) + operando2 = float(input("Digite o segundo operando: ")) + sinal = input("Digite o sinal da operação: ") + operacao_escolhida = self.operacoes[sinal] + return operacao_escolhida.calcular(operando1, operando2) + + +class Adicao(Operacao): + def calcular(self, operando1, operando2): + return operando1 + operando2 + + +class Resto(Operacao): + def calcular(self, operando1, operando2): + return operando1 % operando2 + + +adicao = Adicao() +resto = Resto() +calculadora = Calculadora() +calculadora.adicionar_operacao("+", adicao) +calculadora.adicionar_operacao("%", resto) diff --git a/calculadora/test_calc_oo.py b/calculadora/test_calc_oo.py new file mode 100644 index 000000000..7fb68c3ee --- /dev/null +++ b/calculadora/test_calc_oo.py @@ -0,0 +1,22 @@ +from unittest import TestCase + +import pytest +from calculadora.calculadora_oo import Adicao + + +class TesteCalc(TestCase): + def test_equal_erro(self): + self.assertNotEqual(1, 2) + + def test_equal_certo(self): + self.assertEqual(2, 2) + + def test_adicao(self): + adicao = Adicao() + resultado = adicao.calcular(1, 2) + self.assertEqual(3, resultado) + + def test_adicao_invalido(self): + adicao = Adicao() + with pytest.raises(TypeError): + adicao.calcular(1, 'a') diff --git a/calculadora/utilizando_calculadora.py b/calculadora/utilizando_calculadora.py new file mode 100644 index 000000000..2368edc67 --- /dev/null +++ b/calculadora/utilizando_calculadora.py @@ -0,0 +1,10 @@ +from calculadora.calc_procedural import calcular + +# Para calc_procedural +# print(calcular()) +# print(calcular()) +# print(calcular()) +from calculadora.calculadora_oo import Operacao, calculadora + +# print(calculadora.executar()) +# print(calculadora.executar()) diff --git a/fase.py b/fase.py index 3385175c6..032fedd6d 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): """ @@ -73,6 +73,11 @@ def status(self): :return: """ + if len(self._porcos) > 0 and len(self._passaros) == 0: + return DERROTA + + if len(self._porcos) == 0 and len(self._passaros) > 0: + return VITORIA return EM_ANDAMENTO def lancar(self, angulo, tempo): diff --git a/fases/__init__.py b/fases/__init__.py index 4a574b321..298d62a23 100644 --- a/fases/__init__.py +++ b/fases/__init__.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +# from __future__ import unicode_literals diff --git a/images/__init__.py b/images/__init__.py index 4a574b321..298d62a23 100644 --- a/images/__init__.py +++ b/images/__init__.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +# from __future__ import unicode_literals diff --git a/pricing_sem_promocode.xml b/pricing_sem_promocode.xml new file mode 100644 index 000000000..f585b6ba9 --- /dev/null +++ b/pricing_sem_promocode.xml @@ -0,0 +1,858 @@ + + + + + WebServiceSupplier + + + WebServiceClient + + G3 + ECOMPONENT + EnhancedAirBookRQ + EnhancedAirBookRS + + 2fw3he0o3 + 2023-08-28T23:46:48 + teste@e-component.com + + + + + Shared/IDL:IceSess\/SessMgr:1\.0.IDL/Common/!ICESMS\/RESG!ICESMSLB\/RES.LB!1693266400944!4913!805 + + + + + + + + + + + + + + + + + + + + + + + + + + + + BG + PRIMEIRA BAGAGEM + + UP TO 50 POUNDS/23 KILOGRAMS + + 2 + 0C3ACG3 + C + + 23 + 50 + + + + BG + FREE BAGGAGE ALLOWANCE + + 4 + 0DFAAG3 + + + BG + SEGUNDA BAGAGEM + + UP TO 50 POUNDS/23 KILOGRAMS + + + MAX LENGTH UP TO 59 INCHES/150 CENTIMETERS + + 2 + 0JTACG3 + C + + 150 + 59 + 23 + 50 + + + + BG + + CARRY ON HAND BAGGAGE + + CARRY ON HAND BAGGAGE + 4 + 0L5ACG3 + C + + + BG + + CARRY ON HAND BAGGAGE + + CARRYON HAND BAGGAGE ALLOWANCE + + 4 + 0LNABG3 + C + + + + 2023-10-23 + PRIVATE FARE APPLIED - CHECK RULES FOR CORRECT TICKETING + VALIDATING CARRIER SPECIFIED - G3 + BAG ALLOWANCE -CGHSDU-NIL/G3 + 1STCHECKED BAG FEE-CGHSDU-BRL110.00/G3/UP TO 50 POUNDS/23 KILOG + RAMS + 2NDCHECKED BAG FEE-CGHSDU-BRL135.00/G3/UP TO 50 POUNDS/23 KILOG + RAMS AND MAX LENGTH UP TO 59 INCHES/150 CENTIMETERS + BAG ALLOWANCE -SDUCGH-NIL/G3 + 1STCHECKED BAG FEE-SDUCGH-BRL110.00/G3/UP TO 50 POUNDS/23 KILOG + RAMS + 2NDCHECKED BAG FEE-SDUCGH-BRL135.00/G3/UP TO 50 POUNDS/23 KILOG + RAMS AND MAX LENGTH UP TO 59 INCHES/150 CENTIMETERS + CARRY ON ALLOWANCE + CGHSDU SDUCGH-01P/10KG/G3 + 01/CARRY ON HAND BAGGAGE + CARRY ON CHARGES + CGHSDU SDUCGH-G3-CARRY ON FEES UNKNOWN-CONTACT CARRIER + ADDITIONAL ALLOWANCES AND/OR DISCOUNTS MAY APPLY DEPENDING ON + FLYER-SPECIFIC FACTORS /E.G. FREQUENT FLYER STATUS/MILITARY/ + CREDIT CARD FORM OF PAYMENT/EARLY PURCHASE OVER INTERNET,ETC./ + ELECTRONIC TICKETING ELIGIBLE + + + + BRL + BRL + 541.80 + 83.42 + false + 0 + 625.22 + + + + + + + G3 + 1 + 2023-10-23 + + 1010 + + 2 + B + SS + + G3 + 0 + A + + 0DFAAG3 + + + + + G3 + 1 + 2023-10-23 + + 1010 + + 2 + B + SS + + G3 + N + 3 + N + 1 + 1 + + + + + 110.00 + + C + 1 + Y + + 0C3ACG3 + + + + + G3 + 1 + 2023-10-23 + + 1010 + + 2 + B + SS + + G3 + N + 3 + N + 1 + 1 + + + + + 110.00 + + P + 1 + Y + + 0C3ACG3 + + + + + G3 + 1 + 2023-10-23 + + 1010 + + 2 + B + SS + + G3 + N + 3 + N + 2 + 2 + + + + + 135.00 + + C + 1 + Y + + 0JTACG3 + + + + + G3 + 1 + 2023-10-23 + + 1010 + + 2 + B + SS + + G3 + N + 3 + N + 2 + 2 + + + + + 135.00 + + P + 1 + Y + + 0JTACG3 + + + + + G3 + 1 + 2023-10-25 + + 1003 + + 3 + O + SS + + G3 + 0 + A + + 0DFAAG3 + + + + + G3 + 1 + 2023-10-25 + + 1003 + + 3 + O + SS + + G3 + N + 3 + N + 1 + 1 + + + + + 110.00 + + C + 1 + Y + + 0C3ACG3 + + + + + G3 + 1 + 2023-10-25 + + 1003 + + 3 + O + SS + + G3 + N + 3 + N + 1 + 1 + + + + + 110.00 + + P + 1 + Y + + 0C3ACG3 + + + + + G3 + 1 + 2023-10-25 + + 1003 + + 3 + O + SS + + G3 + N + 3 + N + 2 + 2 + + + + + 135.00 + + C + 1 + Y + + 0JTACG3 + + + + + G3 + 1 + 2023-10-25 + + 1003 + + 3 + O + SS + + G3 + N + 3 + N + 2 + 2 + + + + + 135.00 + + P + 1 + Y + + 0JTACG3 + + + + + G3 + G3 + 2 + 2023-10-23 + 2023-10-25 + + + 1010 + 1003 + + + 2 + 3 + B + O + SS + SS + + G3 + 1 + 1 + B + + 0L5ACG3 + 0LNABG3 + + 10 + + + SAO G3 RIO314.90G3 SAO226.90BRL541.80END + + + + + + NONIL + 15 + 25 + 35 + + + + + + NONIL + 15 + 25 + 35 + + + + + BAG ALLOWANCE -CGHSDU-NIL/G3 + 1STCHECKED BAG FEE-CGHSDU-BRL110.00/G3/UP TO 50 POUNDS/23 KILOG + RAMS + 2NDCHECKED BAG FEE-CGHSDU-BRL135.00/G3/UP TO 50 POUNDS/23 KILOG + RAMS AND MAX LENGTH UP TO 59 INCHES/150 CENTIMETERS + BAG ALLOWANCE -SDUCGH-NIL/G3 + 1STCHECKED BAG FEE-SDUCGH-BRL110.00/G3/UP TO 50 POUNDS/23 KILOG + RAMS + 2NDCHECKED BAG FEE-SDUCGH-BRL135.00/G3/UP TO 50 POUNDS/23 KILOG + RAMS AND MAX LENGTH UP TO 59 INCHES/150 CENTIMETERS + CARRY ON ALLOWANCE + CGHSDU SDUCGH-01P/10KG/G3 + 01/CARRY ON HAND BAGGAGE + CARRY ON CHARGES + CGHSDU SDUCGH-G3-CARRY ON FEES UNKNOWN-CONTACT CARRIER + ADDITIONAL ALLOWANCES AND/OR DISCOUNTS MAY APPLY DEPENDING ON + FLYER-SPECIFIC FACTORS /E.G. FREQUENT FLYER STATUS/MILITARY/ + CREDIT CARD FORM OF PAYMENT/EARLY PURCHASE OVER INTERNET,ETC./ + + + + + + NONEND/NONTRANS/ + + + + + + + + + + LT + LIGHT + CFFG3 + GOL DOMESTIC + + Y + + NONIL + + + + LT + LIGHT + CFFG3 + GOL DOMESTIC + + Y + + NONIL + + + + + + + + + + + + + + + + + + + + + + + + + + + + BJP BJP 4A60 2046/28AUG23 + + + + + + + + + + + + + + + + + + + + + + + WPMBRL$P1ADT$BRLT$RQ + + + PRIVATE FARE APPLIED - CHECK RULES FOR CORRECT TICKETING + + + + VALIDATING CARRIER SPECIFIED - G3 + + + NONEND/NONTRANS/ + + + + + SAO G3 RIO314.90G3 SAO226.90BRL541.80END + + + + + + + + 2023-10-23 + 2023-10-23 + + + + + + + + + 2023-10-25 + 2023-10-25 + + + + + + + + + + 1 + + + + + + + 2 + + + + CORP + + + + + + + + + SAO G3 RIO314.90G3 SAO226.90BRL541.80END + + + + + + + + FARE - PRICE RETAINED + FARE USED TO CALCULATE DISCOUNT + FARE NOT GUARANTEED UNTIL TICKETED + + + + + + + + + + + + + + + + + + + + MARKETED BY GOL LINHAS AEREAS + + + OPERATED BY GOL LINHAS AEREAS + + + + GOL LINHAS AEREAS + + + 10-23T08:35 + 10-23T07:30 + + + + + + + CGH + SDU + 738 + G3 + 1010 + B + + 65 + 228 + false + false + + GOL LINHAS AEREAS + + true + 2023-10-23T07:30:00 + 2023-10-23T08:35:00 + 1010 + B + SS + 1 + false + false + false + + 0 + BJP + BR + 4 + BJP + AN + + + + + + + + + + + MARKETED BY GOL LINHAS AEREAS + + + OPERATED BY GOL LINHAS AEREAS + + + + GOL LINHAS AEREAS + + + 10-25T07:10 + 10-25T06:05 + + + + + + + SDU + CGH + 738 + G3 + 1003 + O + + 65 + 228 + false + false + + GOL LINHAS AEREAS + + true + 2023-10-25T06:05:00 + 2023-10-25T07:10:00 + 1003 + O + SS + 1 + false + false + false + + 0 + BJP + BR + 4 + BJP + AN + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/testes/atores_testes.py b/testes/atores_testes.py index f4254f29e..2355ad459 100644 --- a/testes/atores_testes.py +++ b/testes/atores_testes.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +# from __future__ import unicode_literals from os import path import sys