Um jogo 2D em que o jogador precisa coletar operações matemáticas com o intuito de alcanças uma determinada meta gerada aleatoriamente, tudo isso em 90 segundos.
- Intruções
- Membros da equipe e suas atribuições
- Estrutura do projeto
- Bibliotecas
- Conceitos utilizados
- Desafios, erros e aprendizados
- Galeria do projeto
- Instalação do python e dos pacotes listados em requirements.txt
- Download da branch Main deste repositório
- Extraia o arquivo .zip
- Execute o arquivo main.py
A movimentação do personagem é feita pelas setas do teclado
Vitor Negromonte: Mecânica da geração dos coletáveis, Mecânica das operações, Slides, Relatório
Adna Farias: Implementação do timer, Organização do código, Criação da Main
Danielly Santos: Organização do projeto no Notion, Criação do scoreboard/coletaveis, Implementação do scoreboard/coletaveis, Ajuste de Slide
Natália Albuquerque: Organização do projeto no Notion, Criação do player, Mecânicas do player, Ajuste de Slide
-
Main.py: Controle do loop principal do jogo, responsável pelas telas de começo e fim da partida e configuração da interface.
-
Coletaveis.py: Responsável pela geração dos objetos coletáveis, fluxo de operações e mecânica de queda dos objetos.
-
Player.py: Responsável pelas mecânicas de movimentação e colisão do jogador com as operações.
-
Timer.py: Definição do sistema de temporizador da partida (90 segundos).
-
Assets: diretório que contém os recursos visual do projeto (imagens, sprites, fontes e etc).
Foi utilizado o Pygame para o desenvolvimento, sobretudo, devido a sua extensa documentação e implementação em projetos na comunidade open source.
Condicionais: Os condicionais são utilizados para determinar o cálculo da operação matemática nos objetos coletáveis com base em operadores aleatórios, bem como para verificar colisões entre objetos no jogo e gerenciar as regras de jogo.
Laços: o jogo é executado dentro de um laço infinito (while True).
Orientação a objetos: O código segue o paradigma de Orientação a Objetos (POO), estruturando cada componente do jogo, como "Coletavel", "ScoreBoard", “Timer”, “Player” e a classe principal, em classes independentes. Isso resulta em um design de código modular, favorecendo a reutilização de código e simplificando a manutenção do projeto.
Listas: Listas são utilizadas para gerenciar os objetos coletáveis em queda no jogo.
Desafios: Inicialmente, o maior desafio foi organizar um cronograma adaptável à rotina de cada membro da equipe. Depois, estruturar a base para iniciar o desenvolvimento do projeto. Erros: Demoramos para juntar as classes na main. Problemas para juntar as classes. Aprendizados: Usar GitHub ajudou o grupo a construir o código coletivamente.