11# -*- coding: utf-8 -*-
2- from itertools import chain
32from atores import ATIVO
43
54
@@ -15,73 +14,3 @@ def __eq__(self, other):
1514 def __repr__ (self , * args , ** kwargs ):
1615 return "Ponto(%s,%s,'%s')" % (self .x , self .y , self .caracter )
1716
18-
19- class Fase ():
20- def __init__ (self , intervalo_de_colisao = 1 ):
21- self .intervalo_de_colisao = intervalo_de_colisao
22- self ._passaros = []
23- self ._porcos = []
24- self ._obstaculos = []
25-
26- def _adicionar_ator (self , lista , * atores ):
27- lista .extend (atores )
28-
29- def adicionar_obstaculo (self , * obstaculos ):
30- self ._adicionar_ator (self ._obstaculos , * obstaculos )
31-
32- def adicionar_porco (self , * porcos ):
33- self ._adicionar_ator (self ._porcos , * porcos )
34-
35- def adicionar_passaro (self , * passaros ):
36- self ._adicionar_ator (self ._passaros , * passaros )
37-
38- def acabou (self , tempo ):
39- return not self ._existe_porco_ativo (tempo ) or not self ._existe_passaro_ativo (tempo )
40-
41- def status (self , tempo ):
42- if not self ._existe_porco_ativo (tempo ):
43- return 'Jogo em encerrado. Você ganhou!'
44- if self ._existe_passaro_ativo (tempo ):
45- return 'Jogo em andamento.'
46- return 'Jogo em encerrado. Você perdeu!'
47-
48- def lancar (self , angulo , tempo ):
49- for passaro in self ._passaros :
50- if not passaro .foi_lancado ():
51- passaro .lancar (angulo , tempo )
52- return
53-
54- def resetar (self ):
55- for ator in chain (self ._passaros ,self ._obstaculos ,self ._porcos ):
56- ator .resetar ()
57-
58- def calcular_pontos (self , tempo ):
59- pontos = [self ._calcular_ponto_de_passaro (p , tempo ) for p in self ._passaros ]
60- obstaculos_e_porcos = chain (self ._obstaculos , self ._porcos )
61- pontos .extend ([self ._transformar_em_ponto (ator , tempo ) for ator in obstaculos_e_porcos ])
62- return pontos
63-
64- def _transformar_em_ponto (self , ator , tempo ):
65- return Ponto (ator .x , ator .y , ator .caracter (tempo ))
66-
67- def _calcular_ponto_de_passaro (self , passaro , tempo , ):
68- passaro .calcular_posicao (tempo )
69- for ator in chain (self ._obstaculos , self ._porcos ):
70- if ATIVO == passaro .status (tempo ):
71- passaro .colidir (ator , tempo , self .intervalo_de_colisao )
72- passaro .colidir_com_chao (tempo )
73- else :
74- break
75- return self ._transformar_em_ponto (passaro , tempo )
76-
77- def _existe_porco_ativo (self , tempo ):
78- return self ._verificar_se_existe_ator_ativo (self ._porcos , tempo )
79-
80- def _verificar_se_existe_ator_ativo (self , atores , tempo ):
81- for a in atores :
82- if a .status (tempo ) == ATIVO :
83- return True
84- return False
85-
86- def _existe_passaro_ativo (self , tempo ):
87- return self ._verificar_se_existe_ator_ativo (self ._passaros , tempo )
0 commit comments