Skip to content

Commit 0a78dca

Browse files
author
renzon
committed
Escrevendo Readme
1 parent e805afb commit 0a78dca

File tree

1 file changed

+118
-20
lines changed

1 file changed

+118
-20
lines changed

README.md

Lines changed: 118 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,59 @@
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

2064
Mé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

3579
O 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

4084
Classe 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

4589
Um 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

5094
Classe 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

5599
Classe 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
57101
gravidade (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.
70114
Fó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

Comments
 (0)