Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Why Are You Looking For The Living One Among The Dead?

  • Heiji Hirakawa <hh>,
  • Jéssica Macêdo <jalm2>
  • Levy Dorgival <ldsa>
  • Samira Cikarele <scsms>
  • Heitor Nascimento <hnd>
  • Vitor Nascimento <vnb>

Equipe 4

Projeto de Introdução à Programação do curso de Engenharia da Computação 24.2 do Centro de Informática da UFPE.S

Arquitetura do código

Optamos por centralizar tudo em um único arquivo principal (main.py) para maior eficiência e que todos os integrantes tivessem interações com o projeto completo, sem distinções (mesmo com nossas funções designadas, tivemos livre arbítrio para analisar o código de outros integrantes e sugerir adaptações). O main.py, sendo o centro de todo o código, comporta classes, funções e conceitos importantes para que o resultado final ficasse a par com as expectativas do grupo:

Classes

  • FlashEffect: Abstração que implementa o flash da câmera.
  • Player: Todo código relacionado ao player.
  • Ghost: A classe mais complexa, que implementa a movimentação dos fantasmas e exibição de sprites diferentes para cada tipo de fantasmas com HP e pontuação diferentes.
  • Frame: O core da gameplay do jogo, implementa o frame da câmera.
  • Particula: Nesta classe foi criado o método __ init __() para criar as partículas e definir as direções por meio de valores randômicos, também foi criado o método update() para atualizar as direções a cada frame.
  • Game (principal): (inserir explicação)
  • Button: Aqui, está presente o necessário para conseguir configurar um botão. Esta classe foi requerida tanto para o Menu principal quanto para a tela de Game Over. Na função init, definimos a base retangular do botão, enquanto em draw() temos o tracking da posição do mouse, o if onde há a interpolação entre base do botão e a posição do mouse, a detecção do clique com o botão esquerdo e, por fim, o retorno de action para a função, possibilitando posteriormente nas funções menu_principal() e gameover() definir como cada botão irá agir ao ser clicado.

Funções

gameover(): Ao usuário perder suas três vidas, esta função é acionada e apresenta um botão de voltar para o menu principal. menu_principal(): A primeira função a ser executada no código apresenta o layout do menu principal, juntamente com os botões.

Divisão de trabalhos

Bibliotecas e ferramentas

Desafios e erros

Um dos maiores desafios, sem dúvida, foi se familiarizar tanto com o Github, importante para que todos da equipe acessem e modifiquem o código, quanto com o ambiente do Pygame e implementar o conceito de Orientação a Objetos.

Quanto ao Github, certos integrantes da equipe tiveram empecilhos quanto ao sistema do Github, com os repositórios, branches e forks. Com o apoio de integrantes mais experientes e vídeos educativos, todos os integrantes conseguiram se familiarizar com a ferramenta e tirar o maior proveito possível desta, tendo assim maior controle com o repositório e mantendo o código atualizado, conciso e consistente.

Quanto ao pygame, tivemos maior dificuldade com um dos assuntos novos apresentado no trabalho: orientação a objetos. Tendo experiências prévias com python e com funções ajudou na adaptação dos integrantes ao novo assunto, e com aulas educativas e encontros com os monitores conseguimos superar mais um empecilho, tendo como resultado um trabalho que agrada a todos os participantes e uma nova área de programação explorada.

Capturas de Tela

Guia de contribuição

Setup

  • Instalem o uv
  • Execute o programa com uv run main.py

Convenções

  • Utilizem o snake-case para nomear variáveis.
    minha_variavel = 0 # 🟢
    minhaVariavel = 0  # ❌
    minhavariavel = 0  # ❌
  • Executem uvx ruff format . para garantir que o código está uniforme e legível.

Criando um Fork

  • Acesse o repositório original no GitHub.
  • Clique no botão Fork no canto superior direito.

Clonando o Repositório Forkado

  • Abra o terminal e clone o repositório forkado para sua máquina:
  • git clone https://github.com/seu-usuario/nome-do-repositorio.git
  • Entre no diretório do repositório:
    • cd nome-do-repositorio
  • Adicione o repositório original como um remote upstream para poder sincronizar depois:
    • git remote add upstream https://github.com/levydsa/projeto-ip.git
  • Verifique os remotes configurados:
    • git remote -v

Criando e Trocando de Branch

  • Sempre comece na branch main ou master e atualize-a antes de criar uma nova branch:
    • git checkout main
    • git pull upstream main
  • Agora, crie e mude para uma nova branch para trabalhar na sua feature ou correção:
    • git checkout -b minha-nova-branch

Fazendo Alterações e Commitando

  • Faça suas alterações no código e adicione os arquivos modificados:
    • git add .
  • Crie um commit com uma mensagem descritiva:
    • git commit -m "Adiciona nova funcionalidade X"

Enviando as Mudanças para o GitHub

  • Envie suas mudanças para o repositório forkado:
    • git push origin minha-nova-branch

Abrindo um Pull Request (PR)

  • Vá para seu repositório no GitHub.
  • Clique no botão Compare & pull request que aparece depois do push.
  • Verifique as mudanças e preencha a descrição do PR.
  • Clique em Create pull request para enviar sua contribuição.

Atualizando sua Branch main e Criando uma Nova Branch

Depois que seu PR for revisado e aprovado, atualize sua branch main e crie uma nova branch para um novo trabalho.

  • Volte para a main:
    • git checkout main
  • Pegue as atualizações do repositório original:
    • git pull upstream main
  • Envie essas atualizações para seu repositório forkado:
    • git push origin main
  • Criando uma nova branch para o próximo trabalho
    • git checkout -b outra-nova-branch

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages