/crew

Primary LanguagePythonMIT LicenseMIT

Crew

Equipe

Esdras Albino Maria Fernanda Amorim Matheus Borges Tulio Oliveira Welton Felix
Esdras Albino Maria Fernanda Amorim Matheus Borges Tulio Araujo Welton Felix

Iniciando o projeto

Crie o virtual environment

python3 -m venv venv

Ative o virtual environment

source venv/bin/activate

Instale as dependências

pip install -r requirements.txt

No Windows

Crie o virtual environment

python -m venv venv

Ative o virtual environment

venv\Scripts\activate.bat

Instale as dependências

pip install -r requirements.txt

Instalando novas Dependências

Sempre que instalar uma nova dependência, atualize o arquivo requirements.txt.

pip freeze > requirements.txt

Estrutura de Pastas

Arquitetura de pastas do projeto

entities

Classes das entidades do jogo. Ex.: Player, Asteroid, Bullet, Throttle etc.

entities/
├── ammo_entity.py
├── asteroid_entity.py
├── bullet_entity.py
├── credits_screen_entity.py
├── crew_entity.py
├── entity.py
├── game_entity.py
├── initial_screen_entity.py
├── inventory_entity.py
├── item_entity.py
├── life_entity.py
├── player_entity.py
├── racetrack_entity.py
├── throttle_entity.py

util

Arquivos de utilidades do jogo. Funções que podem ser usadas em qualquer lugar do projeto.

util/
├── change_window_size_util.py
├── colors.py
├── image_render.py
├── update_coords..py

assets

Arquivos de assets do jogo. Imagens, sons, etc.

assets/

├── asteroid.png
├── bullet.png
├── player.png
├── background.png
├── commet.png
├── propellant.png
├── theme.mp3

Capturas de tela

Bibliotecas utilizadas

pygame==2.5.1

Divisão de tarefas do projeto

Time Tarefas
Esdras Albino Desenvolveu estados de controle do jogo e lógica envolvendo itens e inventário
Maria Fernanda Amorim Desenvolveu todas as responsividades do jogo
Matheus Borges Desenvolveu telas iniciais, créditos, game over e mecânica de tiros com o mouse
Tulio Oliveira Desenvolveu colisões entre todas os objetos do projeto
Welton Felix Principal code reviewer, desenvolveu a classe base de entidades e movimentação do player

Conceitos utilizados

Aplicamos desde os fundamentos como listas e estruturas de repetição, até os tópicos avançados, incluindo os princípios iniciais da Programação Orientada a Objetos (POO).

A utiilização de funções, loops e condicionais foram cruciais para o desenvolvimento do jogo, visto que, contribuem imensamente para a escalabilidade e organização do código.

Além disso Orientação a objetos nos permitiu a estruturação e construção do código em torno da organização em classes e suas funções associadas, a capacidade de gerenciar cada objeto de forma independente simplificou o processo de escrita do código e significativamente aprimorou a sua legibilidade.

Desafios e Erros

Enfrentamos alguns desafios durante o projeto, especialmente relacionados ao planejamento e à priorização de tarefas dentro da equipe. Sendo o principal problema a falta de priorização nas tarefas fundamentais, o que nos levou a gastar um tempo considerável reescrevendo parte da base do código, juntamente com as implementações que já tínhamos concluído. Como resultado, enfrentamos diversos problemas de conflito e integração entre diferentes branches.

Todos do time com certeza levaram como maior lição que um bom planejamento com priorizações certas são tão cruciais quanto bons conhecimentos técnicos.

Licença

Este projeto está licenciado sob a licença MIT - consulte o arquivo LICENSE para obter detalhes.


Projeto desenvolvido para a disciplina Introdução à Programação (IF669) do curso de Ciência da Computação do CIn - UFPE cin-logo.