Competência de Projeto#
O conceito de projeto é definido pelas funcionalidades implementadas, mas pode ser limitado pela qualidade de código e pelo trabalho em grupo.
Funcionalidades#
- Conceito I:
- Jogo não apresenta uma jogabilidade mínima.
- Não há interações que funcionem como esperado para um jogo 2D ou 3D.
- Conceito D: Possível visualizar uma cena de jogo, porém não possui nenhum recurso de interação incorporado. Basicamente é um passeio em um cenário.
- Conceito C:
- Foi criado um jogo que possui apenas uma ou duas telas.
- O jogo possui algumas formas de interação, mas não em tempo real (ou seja, não são ações instantâneas com fazer um personagem pular ou clicar em um botão).
- Conceito B:
- O programa desenvolvido permite a interação com vários objetos (gráficos) na cena de forma coerente com a proposta do jogo.
- Mais de uma tela é apresentada para o usuário, incluindo telas informativas e tela de início e fim.
- Possui um som ambiente e/ou de efeito sonoro de personagens. Diferentes interações em tempo real são possíveis.
- Aplicativo está fluido.
- Conceito A:
- Atingiu o conceito B.
- Cenário elaborado com riqueza de detalhes e objetos do jogo possuem animações.
- O jogo possui um bom acabamento, se aproximando de um produto.
- Serão aceitos jogos menos acabados no caso de utilização de algum recurso avançado como comunicação por rede ou outros dispositivos externos (ex: controles, câmeras, etc.). Som presente no jogo de diversas formas. Jogo está fluido e não trava em momento algum.
- Implementou um esquema de pontuação/ranking, onde ao fim do jogo o jogador possui uma pontuação que será salva e mostrará em uma tela de ranking.
- Implementou uma tela com rankings de pontuação.
- Os dados são salvos em um arquivo.
Importante:
- Caso o grupo não entregue os storyboards das duas propostas de jogo, o conceito de projeto será limitado ao conceito B.
- Caso o grupo mude a ideia do jogo sem avisar os professores, o conceito de projeto será limitado ao conceito C.
Qualidade de Código#
O conceito obtido em qualidade de código limita o conceito do projeto. Ou seja, se as funcionalidades desenvolvidas atingem o conceito A, mas a qualidade de código for B, o conceito da competência de projeto será B. Por outro lado, se as funcionalidades desenvolvidas atingem o conceito B, mas a qualidade de código for A, o conceito da competência de projeto será B.
- Conceito I:
- Código não roda, mesmo havendo algumas rotinas sem erros de sintaxe, não é possível uma execução completa.
- Documentação basicamente nula, nem no código, nem externa.
- Conceito D:
- Código apresenta erros que inviabilizam o uso do programa de forma completa. Embora haja alguns comentários no código, esses não permitem minimamente entendê-lo.
- Conceito C:
- O código é funcional e faz o que se propõe fazer, código não apresenta erros de sintaxe.
- Apesar de funcionar, não seguiu a divisão de código em funções proposta nos handouts.
- Conceito B:
- Código organizado em uma série de funções, seguindo a divisão proposta nos handouts, que permitem uma clara compreensão da estratégia do jogo.
- Os principais blocos de código estão documentados de forma clara.
- Repositório está bem organizado. Não possui arquivos desnecessários ou com nomes confusos.
- Repositório possui um README.md com informações sobre o projeto, integrantes do grupo, como rodar o projeto, etc.
- Realizou commits para cada funcionalidade implementada, com mensagens claras e objetivas.
- Conceito A: A
- tingiu o conceito B.
- Código organizado de forma apropriada em orientação a objetos (classes) de forma que auxilia a compreensão, reuso e manutenção do código.
- Implementou classes para cada tela do jogo, seguindo a organização proposta pelos professores.
- Cada classe de tela possui pelo menos os métodos
__init__
,draw
eupdate
.
- Cada classe de tela possui pelo menos os métodos
- Implementou classes para todos os objetos do jogo, seguindo a organização proposta pelos professores.
- Cada classe possui pelo menos os métodos
__init__
edraw
. - As classes extendem a classe
Sprite
do Pygame. - Utilizou colisões entre objetos utilizando
spritecollide
ougroupcollide
do Pygame.
- Cada classe possui pelo menos os métodos
- As responsabilidades de cada classe estão bem definidas e separadas.
- Implementou classes para cada tela do jogo, seguindo a organização proposta pelos professores.
- Separou responsabilidades em arquivos diferentes. Código documentado com docstrings.
- Rotinas são eficientes e sem chamadas inúteis.