Skip to content

Um jogo de desviar de obstáculos controlando a capivara Filó, este foi um projeto final da cadeira Programação 1 (P1) do curso de Sistemas de Informação (SI) do CIn da UFPE, cadeira realizada no final do segundo semestre de 2022 e primeiro semestre de 2023.

License

Notifications You must be signed in to change notification settings

luiz-linkezio/A_Fuga_de_Filo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto: A fuga de Filó

1) Integrantes da Equipe 7:


  • Cleandson Lopes de Albuquerque
  • Dayane Camile Bezerra de Lima
  • José Ronaldo de Souza Silva
  • Luiz Henrique Brito
  • Mariana Marinho da Silva Andrade
  • Vitória Beatriz Alexandre Silva

2) Link para repositório git

https://github.com/Dev-JoseRonaldo/projeto-p1-equipe7


3) Como rodar o projeto

Pré-requisitos

Antes de baixar o projeto você vai precisar ter instalado na sua máquina as seguintes ferramentas:

Em seguida:

# Clone o repositório
$ git clone https://github.com/Dev-JoseRonaldo/projeto-p1-equipe7.git

# Abrir o projeto
Abra a pasta clonada em seu editor de código favorito.

# Iniciar o jogo
Execute o arquivo main.py presente na raiz do repositório.

# O seu editor de código rodará o jogo em uma nova janela.

4) A organização do código;


Para a organização do código, seguimos uma estrutura com arquivo main.py, arquivo README.md e pastas. O arquivo main.py foi utilizado para ser o arquivo principal do código, com todos os elementos e funcionalidades sendo chamados dentro do mesmo.

O arquivo main.py está estruturado da seguinte forma:

    1. Importações 

    2. Parâmetros Tela geral do pygame 

    3. Variáveis para telas a serem abertas 

    4. Variáveis tela menu  

    5. Variáveis tela game over 

    6. Vidas 

    7. Powerups 

    8. While rodando o jogo  

As pastas armazenam as diferentes classes e imagens. Dentro da pasta “assets”, também temos subpastas onde temos as classes das telas ("screens"), classes de funcionalidades/POO ("scripts") e imagens ("sprites").


5) Ferramentas, bibliotecas, frameworks utilizados com as respectivas justificativas para o uso;

  • pygame: Utilizamos o pygame pois ele fornece diversas ferramentas e recursos integrados para a criação dos jogos 2D. Além de sua facilidade de uso para a criação de jogos por iniciantes em programação.

  • time: Utilizamos a biblioteca time para funções como medir o tempo de início do jogo e armazená-lo em uma variável para uso posterior, controlar a taxa de atualização da tela do jogo e para medir o tempo desde a última atualização e controlar o intervalo de tempo entre as atualizações do sprite do jogador.

  • random: A biblioteca random foi utilizada para gerar aleatoriamente os itens a serem coletados pelo jogador, como também os itens dos quais o jogador deve desviar.

  • scrum e kanban: Utilizamos essas metodologias ágeis para o gerenciamento e monitoramento da equipe, foram 5 sprints de 4 dias cada.


6) A divisão de trabalho dentro do grupo (quem fez o que);

Luiz: Classe de animação (Animacao), classe de texto(text) e relatório

Dayane: Classe Game Over, Classe Menu, Classe Botão e slides do grupo

Ronaldo: Sistema de spawn de inimigos e powerups, sistema de paralax, sistema de coleta de powerups, organização e controle do repositório do github e do código da equipe

Cleandson: Sistemas de colisão, sistemas de vida e arte do background

Mariana: Sistema de movimentação do usuário, sistema de pontuação, sistema de aumento de dificuldade, organização do Notion

Vitória: Artes do personagem, artes dos elementos, sons do jogo e relatório


7) Conceitos que foram apresentados durante a disciplina e utilizados no projeto (indicando onde foram usados);

Programação orientada a objetos, condicionais, estruturas de repetição, funções, listas, dicionarios.

Usamos POO, e seus 3 principais conceitos (encapsulamento, herança e polimorfismo) para definir entidades importantes do nosso jogo, como por exemplo o Player, os Enemys, os Pawerups, etc. Dessa forma, conseguimos instaciar diversos elementos com caracteríscias e ações semelhantes. O conhecimento sobre funções também foi essencial para a construção dos métodos dessas classes, onde tentamos sempre usar funções para modificar propriedades das classes (encapsulamento). Condicionais e estruturas de repetição foram usadas em diversas partes do código para limitar certas funcionalidades a certas situações, em geral, foram estruturas indispensáveis para a construção de toda a lógica do jogo.

8) Os desafios e erros enfrentados no decorrer do projeto e as lições aprendidas.

  • Falta de conhecimento de git/github; Enfrentamos algumas dificuldades para usar e entender os comandos do git. Entretanto, com a prática, tudo foi ficando mais fácil ao decorrer do projeto. Ou seja, a prática é fundamental para fixar esses comandos.

  • Programar em equipe: Como era uma coisa nova para a grande parte do grupo, foi algo novo para nós e um pouco difícil no começo, com coisas como por exemplo ter que esperar o outro terminar para poder dar início na sua tarefa e também respeitar o tempo de trabalho e de aprendizado de cada pessoa. Com o tempo fomos nos adaptando e a comunicação ficou cada vez melhor entre nós, o que facilitou bastante nesse quesito.

  • Trabalhar com Sprints muito curtas (em torno de 4 dias), gera uma pressão de entraga imediata, somado às demais atividades academicas, dificulta bastante o sucesso nas entragas da Sprint.


9) Qual foi o maior erro cometido durante o projeto? Como vocês lidaram com ele?

Organização e distribuição de tarefas de acordo com o tempo que tinhamos para desenvolver o projeto e com a quantidade de tarefas a serem distribuídas para as pessoas do grupo, o que gerou um pouco de atrasos no andamento inicial do projeto. Tentamos distribuir as tarefas de acordo com a disponibilidade de cada um e nos ajudamos quando alguma tarefa do projeto estava pendente.


10) Qual foi o maior desafio enfrentado durante o projeto? Como vocês lidaram com ele?

Estruturar o código em POO: Assistimos vários vídeos no youtube que pudessem nos ajudar com a refatoração do código e também conversávamos entre nós para implementar o código da melhor forma possível.


11) Quais as lições aprendidas durante o projeto?

  • É muito importante planejar um projeto com antecedência, dividir nosso projeto em sprints e tarefas de cada pessoa foi muito importante para que pudéssemos concluir o projeto no prazo determinado.

  • A comunicação é indispensável em trabalhos em equipe e projetos como esse, então nos comunicávamos diariamente para saber como estava o andamento do projeto e se iríamos conseguir as tarefas das sprints no prazo.

  • Todo mundo tem algo a ensinar e algo a aprender. No processo de construção do jogo pudemos trocar muito conhecimento entre nós a respeito das ferramentas que utilizamos nesse projeto.

  • Aprender a identificar e corrigir os erros do código é crucial para o desenvolvimento do jogo e andamento do projeto.

  • Aprender a escutar a opinião dos outros e implementar aquilo em seu código é importante para melhorar o jogo e tornar a experiência a melhor possível para o usuário final.

  • Colaborar com outros programadores compartilhando códigos e ideias desenvolve habilidades muito importantes para os desenvolvedores.

  • É importante ter paciência e persistência para superar os obstáculos e dificuldades que possam surgir no processo de criação do projeto.

  • A principal e mais importante foi o verdadeiro trabalho em equipe, pois se não programássemos em conjunto, o projeto não daria certo.



12) Capturas de tela do sistema funcionando para compor a galeria de projetos


Tela de Menu

Banner menu



Tela do Jogo

Banner game



Tela de Game Over

Banner gameover

About

Um jogo de desviar de obstáculos controlando a capivara Filó, este foi um projeto final da cadeira Programação 1 (P1) do curso de Sistemas de Informação (SI) do CIn da UFPE, cadeira realizada no final do segundo semestre de 2022 e primeiro semestre de 2023.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%