Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

giovaneliberato/pythonbirds

Open more actions menu
 
 

Repository files navigation

Python Birds

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

A versão utilizada para desenvolvimento foi Python 3.4

Um vídeo fala mais que 1000 palavras: Python Birds

Abordagem

Instalar Python 3.

Baixar a versão apenas a estrutura do projeto

Os testes se encontram dentro do pacote "testes" e servem para definir a dinâmica das classes. Para rodar todos testes, execute

python executor_de_testes.py

Explicação detalhada sobre classes e métodos se encontram em Simplificação do Jogo

Ordem de desenvolvimento

A ordem preferida é começar pelos atores, seguindo a ordem dos testes presentes no script atores_testes.py. Depois passar para a fase_teste.py, onde é implementada uma fase.

Após o desenvolvimento é possível emular um jogo que termina em vitória rodando:

python fase_testes.py

É possível jogar a fase rodando:

python python_birds.py

Para jogar, aperte enter, digite o ângulo de lançamento e aperte enter novamente. Demonstração no vídeo:

Python Birds

script atores.py

Contém todos atores do projeto.

script fase.py

Contém classes respectivas a fase e ponto do plano cartesiano

script placa_grafica.py

Contém lógica para rodar jogo e exibir no console.

Simplificação do Jogo

  1. Atores são pontos (um caracter) no plano cartesiano.
  2. A velocidade dos pontos e pequena, de tal forma que a cada passo os pontos se movam apenas para pontos vizinhos.
  3. A colisão entre pontos ocorre quando eles estão em ponto vizinho

A seguir segue a especificação detalhada do jogo.

Classe Ator

Classe base para todos os atores do jogo.

Método calcular_posicao

Método que recebe o tempo (float) como parâmetro e retorna uma tupla com 2 elementos, posição horizontal (x) como primeiro elemento e posição vertical (y) como segundo.

Método status

O ator possui os status Ativo ou Destruido. Além disso o status deve ser dependente do tempo. Ou seja, se o ator foi destruido no tempo t, ele deve possuir status Ativo antes desse tempo e Destruido após.

Método sinal

O método sinal retorna 'A' quando o ator tem status Ativo e '+' caso contrário. Também é depende do tempo.

Método colidir

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 em pontos vizinhos. O ator deve guardar o tempo de colisão para calcular corretamente seu status.

Classe Obstaculo

Classe que representa obstáculos na fase e que podem ser destruidos por pássaros. Herda de ator. Seu caracter de representação é a letra "O" quando Ativo.

Status

Um obstáculo ao ter seu status alterado para DESTRUIDO deve ter seu caracter de apresentação alterado para " " (vazio). Assim ele vai "sumir" da tela.

Classe Porco

Classe que representa porcos na fase e que podem ser destruidos por pássaros. Herda de ator. Seu caracter de representação é a o caracter "@".

Passaro

Classe base de todos os passáros. Cada tipo possui uma velocidade de lançamento (v). No lançamento o jogador escolhe o â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 gravidade (G) constante e igual a 10 m/s^2.

Método lancar

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 de lançamento para cálculo de sua posíção. Lembrar que o tempo das fórmulas é delta_t = Tfinal - Tinicial

Método posicao_horizontal

Fórmula X=X0+v*cos(teta)*delta_t.

Método posicao_vertical

Fórmula Y=Y0+vsen(teta)delta_t-(Gdelta_t^2)/2.

Método de colidir_com_chaoo

Toda vez que o pássaro colidir com o chão (y=0) ele deve ser destruido.

Classe Passaro Vermelho

Tipo de Pássaro que representa o pássaro vermelho. Possui velocidade de lançamento igual a 20 m/s. Seu caracter é "D".

Classe Passaro Amarelo

Tipo de Pássaro que representa o pássaro amarelo. Possui velocidade de lançamento igual a 30 m/s. Seu caracter é ">".

Classe Fase

Classe responsável por organizar atores e transformarem os dados em pontos a serem representados na tela.

Método adicionar_obstaculo

Método que adiciona um ou mais obstáculos na fase

Método adicionar_porco

Método que adiciona um ou mais porcos na fase

Método adicionar_passaro

Método que adiciona um ou mais pássaros na fase

Método acabou

Método que recebe o tempo do jogo e retorna verdadeiro (True) se o jogo acabou e (False) caso contrário. O jogo pode acabar por duas razôes:

  1. Todos porcos foram destruidos
  2. Não há mais pássaros a serem lançados

Método status

Recebe o tempo como parâmetro e retorna mensagem com status do jogo.

  1. Se o jogo está em andamento, retorna mensagem "Jogo em andamento."
  2. Se o jogo acabou e não existem porcos ativos, retorna a mensagem "Jogo em encerrado. Você ganhou!"
  3. Se o jogo acabou e existem porcos ativos, retorna a mensagem "Jogo em encerrado. Você perdeu!"

Método lancar

Recebe o ângulo e o tempo do lançamento. Deve delegar o lançamento ao primeiro pássaro ativo da lista de pássaros.

Método calcular_pontos

Método que executa a lógica do jogo a cada passo (tempo), retornando pontos a serem exibidos na tela.

Ele deve:

  1. Calcular a posição de cada pássaro, verificando se ele colidiu com algum obstáculo, porco ou chão.
  2. Retornar instâncias da classe Ponto, informando x,y e caracter respectivo a cada ator.

Divirta-se!!!!

Powered by Python Pro

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.