- 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
https://github.com/Dev-JoseRonaldo/projeto-p1-equipe7
Antes de baixar o projeto você vai precisar ter instalado na sua máquina as seguintes ferramentas:
# 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.
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").
-
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.
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.
-
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.
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.
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.
-
É 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.