• Jogos
  • Projeto

Projeto PyGame#

Datas importantes#

Entrega da proposta inicial do projeto: 14/04/2022, via Blackboard.

Primeira versão da página do jogo: 28/04/2022, via Blackboard

Entrega do projeto (feira de jogos): 05/05/2022 ao meio dia, via Blackboard.

Formulário de avaliação de trabalho em equipe: 05/05/2022 às 21:00.

Objetivo do Projeto#

Desenvolvimento de um jogo de computador em Python usando recursos da biblioteca PyGame. O programa deverá ser interativo, permitindo um ou mais jogadores interagirem em um jogo com objetivo bem definido. O desenvolvimento deverá ser feito nos grupos sorteados. O tema do jogo é livre, contudo, a proposta deve ser previamente discutida com os professores.

O objetivo é colocar em prática o que você aprendeu sobre programação com Python e desenvolver mais suas habilidade de aprender a aprender e de trabalhar em uma equipe autogerenciada de software. Por esse motivo, é esperado que você precise aprender sobre funcionalidades que não vimos em nenhuma aula.

Projetos de semestres passados da engenharia

Se estiver em busca de inspiração, confira os jogos desenvolvidos em semestres anteriores no curso de Design de Software, da engenharia:

Entrega#

Você tem duas tarefas principais: o desenvolvimento do jogo e o desenvolvimento do site do jogo. Essas tarefas possuem diversas entregas, que são apresentadas abaixo.

Envie no Blackboard (não perca o prazo):

  1. [Até 14/04/2022] Formulário com a proposta inicial do projeto (pode mudar um pouco depois, mas é importante definir uma direção);
  2. [Até 28/04/2022] Pacote (zip) com a primeira versão do site do jogo e todos os arquivos adicionais necessários (imagens, etc);
  3. [Até 05/05/2022] Pacote (zip) com o site do jogo e todos os arquivos adicionais necessários (o código do projeto, imagens, etc).

Além disso, nos dias em que trabalhar no projeto você deve preencher este formulário descrevendo de forma sucinta (uma linha) o que fez: https://forms.gle/2XbPt2u8acy8ZJPp7

Importante: Para obter nota maior do que C você deve preencher o formulário acima em pelo menos 4 dias e preencher o formulário de avaliação de trabalho em equipe. Veja mais detalhes na rubrica.

Página do jogo (competência de design)#

Seu grupo deve desenvolver uma página para o jogo. Ela deve conter, no mínimo os elementos abaixo (confira a rubrica para mais detalhes):

  1. Título do projeto;
  2. Descrição do jogo (incluindo algumas telas);
  3. Nomes dos membros do seu grupo;
  4. Log de desenvolvimento com as informações enviadas pelo formulário de acompanhamento (portanto, guarde suas respostas);
  5. Link para download do pacote (zip) do jogo;
  6. Instruções para executar o jogo;
  7. Um vídeo curto apresentando o seu jogo. Esse vídeo (pode ser de alguns poucos segundos) deve mostrar o seu projeto funcionando;
  8. Relato da avaliação heurística: problemas de usabilidade encontrados na primeira versão da página e as soluções desenvolvidas na versão final (deve incluir imagens para a comparação).

O item 8 é necessário apenas na versão final do site. Após entregarem a primeira versão, vocês devem realizar uma avaliação heurística com 3 colegas. Os problemas encontrados devem ser registrados e pelo menos 5 desses problemas precisam ser corrigidos na versão final. Neste projeto seremos flexíveis quanto ao que é considerado um problema de usabilidade e aceitaremos também modificações seguindo os princípios CRAP como melhorias.

Rubricas#

O projeto receberá duas notas separadas. Uma para a Competência de Projeto e outra para a Competência de Design.

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.

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.
  • Conceito A: Atingiu 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. Separou responsabilidades em arquivos diferentes. Código documentado com docstrings. Rotinas são eficientes e sem chamadas inúteis.

Trabalho em equipe#

Ao final de cada dia de trabalho, vocês devem registrar individualmente o que fizeram naquele dia. Esse registro (log) não deve ocupar mais do que uma linha. Além disso, você deve preencher o formulário de avaliação do trabalho em equipe (auto-avaliação e avaliação do colega de time).

Caso você não envie o registro de pelo menos 4 dias de trabalho ou não preencheu o formulário de avaliação, a nota da competência de projeto ficará limitada a C. Utilizaremos o mesmo formulário para todos os dias: https://forms.gle/2XbPt2u8acy8ZJPp7

Competência de Design#

A rubrica abaixo define a nota da competência de design. Esta nota é baseada na página do jogo.

  • Conceito I: Não entregou a página do jogo.
  • Conceito D: Página do jogo não contém os 7 primeiros itens obrigatórios.
  • Conceito C: A página do jogo contém os 7 primeiros itens obrigatórios.
  • Conceito B: A página do jogo contém todos os 8 primeiros itens obrigatórios.
  • Conceito A: Atingiu o conceito B e a página está completa e bem escrita.

Restrição: a página deve ser desenvolvida utilizando HTML e CSS puros, sem nenhuma biblioteca adicional. Caso você tenha conhecimentos de Javascript, ele deve ser limitado a adicionar interatividade à página e também não pode utilizar bibliotecas externas.

Atraso na entrega da primeira versão da página: caso o seu grupo entregue a primeira versão da página com atraso, a nota da competência de design será no máximo B+.

Aviso: integridade intelectual em atividades de programação

Os projetos serão examinados com fontes da internet e os projetos de outros alunos. Se você se basear em algum código da Internet, deixe claro de onde pegou e dê os créditos. É normal você buscar exemplos na internet para entender como funciona uma ferramenta, o que não é aceitável é copiar longos trechos de código e não dar crédito. Se forem poucas linhas, 3 ou 4 por exemplo, você não precisa referenciar, se for muito mais que isso, diga de onde pegou. Já usar projetos de colegas é mais crítico, não copie código de seus colegas, é sempre saudável conversar para ter e dar ajuda, mas não dar código pronto.

Existe um documento no Blackboard (Orientações sobre integridade intelectual em atividades de programação) com mais detalhes. Se tiver alguma dúvida pergunte para o seu professor.

Caso você utilize um trecho de código da internet, adicione um comentário no seu código:

# Código extraído de https://endereco.de.onde.voce.pegou.o.codigo.com.br