1
1
Python Birds
2
2
===========
3
3
4
+ Essa versão é a mais simples. Ela não contém replay nem reset, de forma que o jogo não pode retroceder.
5
+
6
+ Para versão mais complexa, acesse a branch [ master] ( https://github.com/pythonprobr/pythonbirds/tree/master )
7
+
4
8
Projeto para Ensino de Programação Orientadas a Objetos em Python.
5
9
6
10
A versão utilizada para desenvolvimento foi Python 3.4
@@ -11,20 +15,20 @@ Um vídeo fala mais que 1000 palavras: [Python Birds](https://www.youtube.com/wa
11
15
12
16
Instalar [ Python 3] ( https://www.python.org/download/ ) .
13
17
14
- Baixar a versão contendo apenas a [ estrutura do projeto] ( https://github.com/pythonprobr/pythonbirds/archive/diversao.zip )
18
+ Baixar o zip do projeto (botão Download Zip)
15
19
16
20
Os testes se encontram dentro do pacote "testes" e servem para definir a dinâmica das classes. Para rodar todos testes, execute
17
21
18
22
python executor_de_testes.py
19
23
20
- Explicação detalhada sobre classes e métodos se encontram em [ Simplificação do Jogo ] ( #simplifica%C3%A7%C3%A3o-do-jogo )
24
+ Explicação detalhada sobre classes e métodos se encontram nos scripts atores.py e fase.py
21
25
22
26
## Ordem de desenvolvimento
23
27
24
28
A ordem preferida é começar pelos atores, seguindo a ordem dos testes presentes no script atores_testes.py.
25
29
Depois passar para a fase_teste.py, onde é implementada uma fase.
26
30
27
- Após o desenvolvimento é possível emular um jogo que termina em vitória rodando:
31
+ É possível emular um jogo que termina em vitória rodando:
28
32
29
33
python fase_testes.py
30
34
@@ -70,27 +74,10 @@ Classe base para todos atores do jogo.
70
74
Método que recebe o tempo (float) como parâmetro e retorna uma tupla com 2 elementos, posição horizontal (x) como
71
75
primeiro elemento e posição vertical (y) como segundo.
72
76
73
- ### Método resetar
74
-
75
- Método que ao ser executado, seta o valor de _ tempo_de_colisão para None
76
-
77
- ### Método status
78
-
79
- O ator possui os status Ativo ou Destruido. Além disso o status deve ser dependente do tempo. Ou seja, se o ator foi
80
- destruido no tempo 1, ele deve possuir status Ativo antes desse tempo, como 0.9, e Destruido após esse tempo, como em tempo 1.1.
81
-
82
77
### Método colidir
83
78
84
79
O método colidir executa a lógica de colisão. A colisão só ocorre com atores ativos e que estejam
85
80
em pontos vizinhos.
86
- O ator deve guardar o tempo de colisão para calcular corretamente seu status.
87
- Além disso, um intervalo é recebido como parâmetro indicando qual a tolerância para considerar um ponto vizinho.
88
- Por padrão, seu valor é 1.
89
-
90
- ## Método caracter
91
-
92
- O método caracter retorna 'A' quando o ator tem status Ativo e '+' caso contrário. Também é depende do tempo.
93
-
94
81
95
82
## Classe Obstaculo
96
83
@@ -111,38 +98,31 @@ representação é a o caracter "@".
111
98
112
99
Classe base de todos os passáros. Cada tipo possui uma velocidade de lançamento (v). No lançamento o jogador escolhe o
113
100
ângulo (teta), em graus, no qual o passáro deve ser lançado. O lançamento respeita as regras de lançamento oblíquo com
114
- gravidade (G ) constante e igual a 10 m/s^2.
101
+ gravidade (GRAVIDADE ) constante e igual a 10 m/s^2.
115
102
116
103
### Método lancar
117
104
118
105
O método lançar recebe o ângulo, em graus, que será feito o lançamento. Cada pássaro deve armazenar esse valor e o tempo
119
106
de lançamento para cálculo de sua posíção. Lembrar que o tempo das fórmulas é delta_t = T_final - T_inicial
120
107
121
- ### Método de resetar
122
-
123
- O método resetar deve chamar o método resetar de Ator.
124
- Além disso, deve setar como Nome os parầmetros de tempo de lançamento e ângulo de lançamento
125
-
126
108
127
109
### Método de colidir_com_chao
128
110
129
111
Todo pássaro que colidir com o chão (y<=0) deve ser destruído.
130
112
131
- ### Método foi lançado
113
+ ### Método foi_lançado
132
114
133
115
Esse método deve retornar verdadadeiro se o pássaro foi lançado (tempo de lançamento é None).
134
116
Caso contrário deve retornar falso
135
117
136
- ### Lançamentomento
118
+ ### Lançamento
137
119
138
- Se o pássaro ainda não foi lançado, ou se o tempo de jogo é menor que o tempo de lançamento,
139
- O pássaro deve permanecer na posição inicial.
120
+ Se o pássaro ainda não foi lançado, o pássaro deve permanecer na posição inicial.
140
121
141
- Calso tenha sido lançado e seu status esteja ativo, sua posição deve ser calculada de acordo com o lançamento oblíquo.
122
+ Caso tenha sido lançado e seu status esteja ativo, sua posição deve ser calculada de acordo com o lançamento oblíquo.
142
123
Nesse caso, delta_t vai ser igual ao tempo do jogo menos o tempo do lançamento.
143
124
144
- Caso contrário, ele deve retornar a posição onde colidiu. Para isso, pasta
145
- calcular o ponto em que o pássaro estava no tempo da colisão.
125
+ Caso contrário, ele deve retornar a posição onde colidiu.
146
126
147
127
#### Método posicao_horizontal
148
128
@@ -195,7 +175,8 @@ Recebe o tempo como parâmetro e retorna mensagem com status do jogo.
195
175
196
176
### Método lancar
197
177
198
- Recebe o ângulo e o tempo do lançamento. Deve delegar o lançamento ao primeiro pássaro ativo da lista de pássaros.
178
+ Recebe o ângulo e o tempo do lançamento. Deve delegar o lançamento ao primeiro pássaro ativo da lista de pássaros que
179
+ ainda não foi lançado.
199
180
200
181
### Método calcular_pontos
201
182
0 commit comments