Skip to content

Commit 2237ea3

Browse files
author
renzon
committed
Merge remote-tracking branch 'origin/simples' into simples-solucao
2 parents 7a20adc + 3c59c28 commit 2237ea3

File tree

3 files changed

+19
-98
lines changed

3 files changed

+19
-98
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Python Birds
33

44
Essa versão é a mais simples. Ela não contém replay nem reset, de forma que o jogo não pode retroceder.
55

6-
Para versão mais complexa, acesse a branch [master](https://github.com/pythonprobr/pythonbirds/tree/master)
6+
Para versão mais complexa, acesse a branch [diversao](https://github.com/pythonprobr/pythonbirds/tree/diversao)
77

88
Projeto para Ensino de Programação Orientadas a Objetos em Python.
99

atores.py

Lines changed: 11 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def calcular_posicao(self, tempo):
3737
:param tempo: o tempo do jogo
3838
:return: posição x, y do ator
3939
"""
40-
return self.x, self.y
40+
return 1, 1
4141

4242
def colidir(self, outro_ator, intervalo=1):
4343
"""
@@ -51,25 +51,20 @@ def colidir(self, outro_ator, intervalo=1):
5151
:param intervalo: Intervalo a ser considerado
5252
:return:
5353
"""
54-
if self.status == DESTRUIDO or outro_ator.status == DESTRUIDO:
55-
return
54+
pass
5655

57-
if self.x - intervalo <= outro_ator.x <= self.x + intervalo and self.y - intervalo <= outro_ator.y <= self.y + intervalo:
58-
self.status = DESTRUIDO
59-
outro_ator.status = DESTRUIDO
6056

6157

6258
class Obstaculo(Ator):
63-
_caracter_ativo = 'O'
59+
pass
6460

6561

6662
class Porco(Ator):
67-
_caracter_ativo = '@'
68-
_caracter_destruido = '+'
63+
pass
6964

7065

7166
class Passaro(Ator):
72-
velocidade_escalar = None
67+
velocidade_escalar = 10
7368

7469
def __init__(self, x=0, y=0):
7570
"""
@@ -93,29 +88,15 @@ def foi_lancado(self):
9388
9489
:return: booleano
9590
"""
96-
return self._tempo_de_lancamento is not None
91+
return True
9792

9893
def colidir_com_chao(self):
9994
"""
10095
Método que executa lógica de colisão com o chão. Toda vez que y for menor ou igual a 0,
10196
o status dos Passaro deve ser alterado para destruido, bem como o seu caracter
10297
10398
"""
104-
if self.y <= 0:
105-
self.status = DESTRUIDO
106-
107-
def _calcular_posicao_horizontal(self, delta_t):
108-
self.x = self._x_inicial + self.velocidade_escalar * delta_t * math.cos(self._angulo_de_lancamento)
109-
110-
def _calcular_posicao_vertical(self, delta_t):
111-
self.y = (self._y_inicial +
112-
self.velocidade_escalar * delta_t * math.sin(self._angulo_de_lancamento) -
113-
(GRAVIDADE / 2) * delta_t ** 2)
114-
115-
def _calcular_posicao(self, tempo):
116-
delta_t = tempo - self._tempo_de_lancamento
117-
self._calcular_posicao_vertical(delta_t)
118-
self._calcular_posicao_horizontal(delta_t)
99+
pass
119100

120101
def calcular_posicao(self, tempo):
121102
"""
@@ -131,11 +112,7 @@ def calcular_posicao(self, tempo):
131112
:param tempo: tempo de jogo a ser calculada a posição
132113
:return: posição x, y
133114
"""
134-
if self._tempo_de_lancamento is None:
135-
return self._x_inicial, self._y_inicial
136-
if self.status == ATIVO:
137-
self._calcular_posicao(tempo)
138-
return self.x, self.y
115+
return 1, 1
139116

140117

141118
def lancar(self, angulo, tempo_de_lancamento):
@@ -147,23 +124,12 @@ def lancar(self, angulo, tempo_de_lancamento):
147124
:param tempo_de_lancamento:
148125
:return:
149126
"""
150-
self._tempo_de_lancamento = tempo_de_lancamento
151-
self._angulo_de_lancamento = math.radians(angulo)
152-
153-
def _aguardando_lancamento(self, tempo):
154-
return not self.foi_lancado() or tempo < self._tempo_de_lancamento
155-
156-
def _ja_colidiu(self):
157-
return self.foi_lancado() and self.status() == DESTRUIDO
127+
pass
158128

159129

160130
class PassaroAmarelo(Passaro):
161-
velocidade_escalar = 30 # m/s
162-
_caracter_ativo = 'A'
163-
_caracter_destruido = 'a'
131+
pass
164132

165133

166134
class PassaroVermelho(Passaro):
167-
velocidade_escalar = 20 # m/s
168-
_caracter_ativo = 'V'
169-
_caracter_destruido = 'v'
135+
pass

fase.py

Lines changed: 7 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
from itertools import chain
33
from atores import ATIVO
44

5-
# Status possíveis do jogo
65

76
VITORIA = 'VITORIA'
87
DERROTA = 'DERROTA'
@@ -37,45 +36,30 @@ def __init__(self, intervalo_de_colisao=1):
3736
self._porcos = []
3837
self._obstaculos = []
3938

40-
def _adicionar_ator(self, lista, *atores):
41-
lista.extend(atores)
4239

4340
def adicionar_obstaculo(self, *obstaculos):
4441
"""
4542
Adiciona obstáculos em uma fase
4643
4744
:param obstaculos:
4845
"""
49-
self._adicionar_ator(self._obstaculos, *obstaculos)
46+
pass
5047

5148
def adicionar_porco(self, *porcos):
5249
"""
5350
Adiciona porcos em uma fase
5451
5552
:param porcos:
5653
"""
57-
self._adicionar_ator(self._porcos, *porcos)
54+
pass
5855

5956
def adicionar_passaro(self, *passaros):
6057
"""
6158
Adiciona pássaros em uma fase
6259
6360
:param passaros:
6461
"""
65-
self._adicionar_ator(self._passaros, *passaros)
66-
67-
# def acabou(self):
68-
# """
69-
# Método que retorna verdadeiro se o jogo acabou e falso caso contrário
70-
#
71-
# O jogo pode acabar por dois motivos:
72-
#
73-
# 1. Não existem mais porcos ativos no jogo
74-
# 2. Não existem mais pássaros ativos no jogo
75-
#
76-
# :return: booleano
77-
# """
78-
# return self.status() != EM_ANDAMENTO
62+
pass
7963

8064
def status(self):
8165
"""
@@ -89,11 +73,7 @@ def status(self):
8973
9074
:return:
9175
"""
92-
if not self._existe_porco_ativo():
93-
return VITORIA
94-
if self._existe_passaro_ativo():
95-
return EM_ANDAMENTO
96-
return DERROTA
76+
return EM_ANDAMENTO
9777

9878
def lancar(self, angulo, tempo):
9979
"""
@@ -106,10 +86,7 @@ def lancar(self, angulo, tempo):
10686
:param angulo: ângulo de lançamento
10787
:param tempo: Tempo de lançamento
10888
"""
109-
for passaro in self._passaros:
110-
if not passaro.foi_lancado():
111-
passaro.lancar(angulo, tempo)
112-
return
89+
pass
11390

11491

11592
def calcular_pontos(self, tempo):
@@ -121,32 +98,10 @@ def calcular_pontos(self, tempo):
12198
:param tempo: tempo para o qual devem ser calculados os pontos
12299
:return: objeto do tipo Ponto
123100
"""
124-
pontos = [self._calcular_ponto_de_passaro(p, tempo) for p in self._passaros]
125-
obstaculos_e_porcos = chain(self._obstaculos, self._porcos)
126-
pontos.extend([self._transformar_em_ponto(ator) for ator in obstaculos_e_porcos])
101+
pontos=[]
102+
127103
return pontos
128104

129105
def _transformar_em_ponto(self, ator):
130106
return Ponto(ator.x, ator.y, ator.caracter())
131107

132-
def _calcular_ponto_de_passaro(self, passaro, tempo, ):
133-
passaro.calcular_posicao(tempo)
134-
for ator in chain(self._obstaculos, self._porcos):
135-
if ATIVO == passaro.status:
136-
passaro.colidir(ator, self.intervalo_de_colisao)
137-
passaro.colidir_com_chao()
138-
else:
139-
break
140-
return self._transformar_em_ponto(passaro)
141-
142-
def _existe_porco_ativo(self):
143-
return self._verificar_se_existe_ator_ativo(self._porcos)
144-
145-
def _verificar_se_existe_ator_ativo(self, atores):
146-
for a in atores:
147-
if a.status == ATIVO:
148-
return True
149-
return False
150-
151-
def _existe_passaro_ativo(self):
152-
return self._verificar_se_existe_ator_ativo(self._passaros)

0 commit comments

Comments
 (0)