1- pythonbirds
1+ Python Birds
22===========
33
4- Projeto para Ensino de Programação Orientadas a Objetos em Python
4+ Projeto para Ensino de Programação Orientadas a Objetos em Python.
55
6- ## Simplificação do Jogo
6+ A versão utilizada para desenvolvimento foi Python 3.4
77
8- 1 . O jogo será feito considerando que os atores são pontos no plano cartesiano.
9- 2 . A velocidade dos pontos e pequena, de tal forma que a cada passo os pontos se movam apenas para pixels vizinhos.
10- 3 . A colisão entre entre pontos ocorre quando eles estão em pixel vizinho
8+ # Abordagem
119
12- # Classes do Jogo
10+ Baixar a versão apenas com estrutura do projeto (branch diversao) em:
11+
12+
13+
14+ Os testes se encontram dentro do pacote "testes" e servem para definir a dinâmica das classes. Para rodar todos testes, execute
15+
16+ python executor_de_testes.py
17+
18+ Explicação detalhada sobre classes e métodos se encontram em [ # Simplificação do Jogo]
19+
20+ ## Ordem de desenvolvimento
21+
22+ A ordem preferida é começar pelos atores, seguindo a ordem dos testes presentes no script atores_testes.py.
23+ Depois passar para a fase_teste.py, onde é implementada uma fase.
24+
25+ Após o desenvolvimento é possível emular um jogo que termina em vitória rodando:
26+
27+ python fase_testes.py
28+
29+ É possível jogar a fase rodando:
30+
31+ python python_birds.py
32+
33+ Para jogar, aperte enter, digite o ângulo de lançamento e aperte enter novamente.
34+ Demonstração no vídeo:
35+
36+ [ link para vídeo aki]
37+
38+ ## script atores.py
39+
40+ Contém todos atores do projeto.
41+
42+ ## script fase.py
43+
44+ Contém classes respectivas a fase e ponto do plano cartesiano
45+
46+ ## script placa_grafica.py
47+
48+ Contém lógica para rodar jogo e exibir no console.
49+
50+ # Simplificação do Jogo
51+
52+ 1 . Atores são pontos (um caracter) no plano cartesiano.
53+ 2 . A velocidade dos pontos e pequena, de tal forma que a cada passo os pontos se movam apenas para pontos vizinhos.
54+ 3 . A colisão entre pontos ocorre quando eles estão em ponto vizinho
55+
56+ A seguir segue a especificação detalhada do jogo.
1357
1458## Classe Ator
1559
@@ -18,48 +62,48 @@ Classe base para todos os atores do jogo.
1862### Método calcular_posicao
1963
2064Método que recebe o tempo (float) como parâmetro e retorna uma tupla com 2 elementos, posição horizontal (x) como
21- primeiro elemento e posição vertical (y) como segundo
65+ primeiro elemento e posição vertical (y) como segundo.
2266
23- ### Método Status
67+ ### Método status
2468
25- O ator possui os status Ativo e Destruido. Além disso o status deve ser dependente do tempo. Ou seja, se o ator foi
26- destruido no tempo t, ele deve possuir status ativo antes desse tempo e Destruido após esse tempo .
69+ O ator possui os status Ativo ou Destruido. Além disso o status deve ser dependente do tempo. Ou seja, se o ator foi
70+ destruido no tempo t, ele deve possuir status Ativo antes desse tempo e Destruido após.
2771
2872
2973## Método sinal
3074
31- O método sinal retorna 'A' quando o ator tem status Ativo e '✝ ' caso contrário.
75+ O método sinal retorna 'A' quando o ator tem status Ativo e '+ ' caso contrário. Também é depende do tempo .
3276
3377### Método colidir
3478
3579O método colidir deve ser executada para executar a ação de colisão. Colisão só ocorre com atores ativos e que estejam
36- em pixels vizinhos
80+ em pontos vizinhos. O ator deve guardar o tempo de colisão para calcular corretamente seu status.
3781
3882## Classe Obstaculo
3983
4084Classe que representa obstáculos na fase e que podem ser destruidos por pássaros. Herda de ator. Seu caracter de
41- representação é a letra "O"
85+ representação é a letra "O" quando Ativo.
4286
4387### Status
4488
4589Um obstáculo ao ter seu status alterado para DESTRUIDO deve ter seu caracter de apresentação alterado para " " (vazio).
46- Assim ele vai "sumir" da tela
90+ Assim ele vai "sumir" da tela.
4791
4892## Classe Porco
4993
5094Classe que representa porcos na fase e que podem ser destruidos por pássaros. Herda de ator. Seu caracter de
51- representação é a letra "☺"
95+ representação é a o caracter "@".
5296
5397## Passaro
5498
5599Classe base de todos os passáros. Cada tipo possui uma velocidade de lançamento (v). No lançamento o jogador escolhe o
56- â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
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
57101gravidade (G) constante e igual a 10 m/s^2.
58102
59- ### Método Lancar
103+ ### Método lancar
60104
61- O método lançar recebe o ângulo, em graus, que será feito o lançamento. Cada pássaro deve armazenar esse valor e tempo
62- de lançamento para cálculo de sua posíção. Lembrar que o tempo das fórmulas é delta_t= Tfinal-Tinicialself
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
106+ de lançamento para cálculo de sua posíção. Lembrar que o tempo das fórmulas é delta_t = Tfinal - Tinicial
63107
64108### Método posicao_horizontal
65109
@@ -70,5 +114,59 @@ Fórmula X=X0+v*cos(teta)*delta_t.
70114Fórmula Y=Y0+v* sen(teta)delta_t-(G* delta_t^2)/2.
71115
72116
117+ ### Método de colidir_com_chaoo
118+
119+ Toda vez que o pássaro colidir com o chão (y=0) ele deve ser destruido.
120+
121+ ## Classe Passaro Vermelho
122+
123+ Tipo de Pássaro que representa o pássaro vermelho. Possui velocidade de lançamento igual a 20 m/s. Seu caracter é "D".
124+
125+ ## Classe Passaro Amarelo
126+
127+ Tipo de Pássaro que representa o pássaro amarelo. Possui velocidade de lançamento igual a 30 m/s. Seu caracter é ">".
128+
129+ ## Classe Fase
130+
131+ Classe responsável por organizar atores e transformarem os dados em pontos a serem representados na tela.
132+
133+ ### Método adicionar_obstaculo
134+
135+ Método que adiciona um ou mais obstáculos na fase
136+
137+ ### Método adicionar_porco
138+
139+ Método que adiciona um ou mais porcos na fase
140+
141+ ### Método adicionar_passaro
142+
143+ Método que adiciona um ou mais pássaros na fase
144+
145+ ### Método acabou
146+
147+ Método que recebe o tempo do jogo e retorna verdadeiro (True) se o jogo acabou e (False) caso contrário.
148+ O jogo pode acabar por duas razôes:
149+
150+ 1 . Todos porcos foram destruidos
151+ 2 . Não há mais pássaros a serem lançados
152+
153+ ### Método status
154+
155+ Recebe o tempo como parâmetro e retorna mensagem com status do jogo.
156+
157+ 1 . Se o jogo está em andamento, retorna mensagem "Jogo em andamento."
158+ 2 . Se o jogo acabou e não existem porcos ativos, retorna a mensagem "Jogo em encerrado. Você ganhou!"
159+ 3 . Se o jogo acabou e existem porcos ativos, retorna a mensagem "Jogo em encerrado. Você perdeu!"
160+
161+ ### Método lancar
162+
163+ Recebe o ângulo e o tempo do lançamento. Deve delegar o lançamento ao primeiro pássaro ativo da lista de pássaros.
164+
165+ ### Método calcular_pontos
166+
167+ Método que executa a lógica do jogo a cada passo (tempo), retornando pontos a serem exibidos na tela.
73168
169+ Ele deve:
74170
171+ 1 . Calcular a posição de cada pássaro, verificando se ele colidiu com algum obstáculo, porco ou chão.
172+ 2 . Retornar instâncias da classe Ponto, informando x,y e caracter respectivo a cada ator.
0 commit comments