• Jogos
  • Projeto

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 e update.
    • Implementou classes para todos os objetos do jogo, seguindo a organização proposta pelos professores.
      • Cada classe possui pelo menos os métodos __init__ e draw.
      • As classes extendem a classe Sprite do Pygame.
      • Utilizou colisões entre objetos utilizando spritecollide ou groupcollide do Pygame.
    • As responsabilidades de cada classe estão bem definidas e separadas.
  • Separou responsabilidades em arquivos diferentes. Código documentado com docstrings.
  • Rotinas são eficientes e sem chamadas inúteis.