Projeto PyGame#
Link para o GitHub Classroom#
Neste projeto, vocês irão desenvolver um jogo em Python utilizando a biblioteca PyGame e um site para o jogo utilizando HTML e CSS.
Como o projeto possui duas partes, o jogo e a página HTML do jogo, vocês deverão criar dois repositórios no GitHub.
Acesse os dois links abaixo para criar os repositórios. Lembrando que a criação dos repositórios é feita apenas um por grupo.
Nome do grupo
Ao clicar nos links abaixo, você será direcionado para o GitHub Classroom. Lá, você deverá criar um grupo ou escolher o seu grupo, utilize o nome da cor atribuída ao seu grupo.
Datas importantes#
- Entrega da proposta inicial do projeto: (04/04), via Formuário a seguir: https://forms.gle/3ALgiqzFUcYed2HY9.
- Primeira versão da página do jogo: (a definir), via GitHub.
- Entrega da avaliação dos princípios CRAP: (a definir), via Github.
- Entrega do projeto (feira de jogos): (23/04 até 12h), via GitHub.
- Formulário de avaliação de trabalho em equipe: (Responder até o dia 25/04).
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 (não perca o prazo):
- [04/04, via Formulário] Formulário com a proposta inicial do projeto (pode mudar um pouco depois, mas é importante definir uma direção)
- [(a definir) , via GitHub] Commit com a primeira versão do site do jogo e todos os arquivos adicionais necessários (imagens, etc). Deixe explícito na mensagem de commit que essa é a versão 1 do jogo;
- [23/04 até 12h, via GitHub] Commit final, com o jogo e o site.
- [23/04 (quinta-feira) das 12h00 às 13h30] Feira de jogos.
Importante: Para obter nota maior do que C você deve possuir commits em pelo menos 5 dias diferentes, com contribuições significativas tanto no site quanto no jogo, e preencher o formulário de avaliação de trabalho em equipe. Veja mais detalhes na rubrica.
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 aos professores.
Caso você utilize um trecho de código da internet, adicione um comentário no seu código:
Rubricas#
O projeto receberá duas notas separadas. Uma para a Competência de Projeto e outra para a Competência de Design.
Existe uma rubrica para a competência de trabalho em equipe, que pode limitar a nota do projeto nas duas competências (Projeto e Design).
Rubrica Página do jogo (competência de design)#
Para mais detalhes sobre a rubrica de competência de design, acesse aqui
Rubrica Competência de Projeto#
Para mais detalhes sobre a rubrica de competência de projeto, acesse aqui
Trabalho em equipe#
O acompanhamento do trabalho em equipe será feito através dos commits. Portanto, sempre que tiver concluido uma funcionalidade, faça um commit. Além disso, ao final do projeto você deve preencher o formulário de avaliação do trabalho em equipe (auto-avaliação e avaliação do colega de time).
Presença#
Teremos diversas aulas estúdio para o desenvolvimento do projeto e a presença em aula é importante para o andamento do projeto. A nota do projeto será limitada de acordo com os itens abaixo:
- Conceito D: Faltou em mais de 8 aulas estúdio.
- Conceito C: Faltou em mais de 6 aulas estúdio.
- Conceito B: Faltou em mais de 4 aulas estúdio.
- Conceito A: Faltou em mais de 2 aulas estúdio.
Feira de Jogos: A feira de jogos é o momento em que apresentaremos os jogos desenvolvidos para a comunidade Insper. A presença é obrigatória e a falta no evento resultará em desconto de 1 conceito na nota final do projeto. Desta forma, reserve o horário da feira de jogos em sua agenda.
Commits#
Os commits são a forma de documentar o trabalho realizado. Portanto, sempre que você concluir uma funcionalidade ou parte do projeto, faça um commit. O commit deve conter uma mensagem clara e objetiva sobre o que foi feito.
Faça o commit com frequência, mas lembre de realizar o commit apenas quando a funcionalidade estiver realmente concluída. Não faça commits de funcionalidades inacabadas ou com erros. Veja um documento com boas de práticas de commits aqui.
Caso você não possua commits com trabalho significativo em pelo menos 5 dias diferentes durante o horário de aula estúdio, ou não tenha contribuido significativamente em alguma das partes do projeto (jogo ou site) ou não preencheu o formulároio de avaliação, a nota da competência de projeto ficará limitada a C.
Caso você não tenha quase nenhum commit significativo, a nota do projeto poderá ser limitada a D ou I dependente da avaliação dos professores.
Atenção: Cada integrante do grupo deve possuir participação significativa nos dois repositórios (jogo e site). Caso um dos integrantes não possua commits significativos em um dos repositórios, a nota do grupo será limitada a C.
Caso trabalhem em conjunto no mesmo computador durante as aulas estúdio, é importante realizar um commit e adicionar o nome do colega que está trabalhando junto no commit. Para realizar esta tarefa, basta adicionar o nome do colega no final da mensagem de commit da seguinte forma:
Note que é importante deixar duas linhas em branco entre a descrição do commit e o Co-authored-by
.
Para mais detalhes, veja um vídeo com um exemplo de commit com dois autores: Vídeo.
Quadro de Tarefas#
As duplas deverão ter um quadro de planejamento do projeto para documentar sua evolução.
Este quadro deve ter as colunas To Do
, Doing
e Done
.
Crie seu quadro de tarefas no repositório de código que foi criado para sua dupla pelo invite do Github Classroom.
Para criar use os comandos;
Projects -> New Project -> selecione tipo "Team Planning"
- Nota limitada a C: Sem nenhum quadro de tarefas
- Conceito B: Usaram o quadro de tarefa, toda tarefa passou pelo "To-Do", "Doing" e "Done". Há tarefas sem dimensionamento de tamanho de camiseta (XS, S, M, L, XL).
- Conceito A: Tarefas bem granulares (cada pequena atividade); Toda tarefa foi atribuída a um ou mais membros do time; Toda tarefa teve uma estimativa de size (XS, S, M, L, XL), toda tarefa tem Start Date e End Date.
Plugins de IA generativa (IAg)#
Neste projeto, pode-se utilizar ferramentas e plugins de IA generativa (IAg) desde que você entenda o que foi criado e indique claramente no projeto.
- Ao utilizar ferramentas de Inteligência Artificial, é de sua responsabilidade entender o que foi gerado e como isso se relaciona com o seu projeto.
- NÃO é responsabilidade do professor te explicar o que foi gerado pela IAg.
- Bugs gerados por ferramentas de IA a princípio devem ser resolvidos pelos membros do grupo recorrendo também a IA. Dúvidas relacionadas a problemas gerados por IA ficarão para o final da fila de dúvidas e atendidos quando houver disponibilidade.
Quando utilizar a IAg, deve-se seguir a Política de Regime Disciplinar Discente e as seguintes diretrizes:
- Utilize a ferramenta institucional de IAg disponibilizada pelo Insper. Acesse a ferramenta:.
- Cite todo o material gerado pela IAg e explique como ele foi usado. Escreva um pequeno parágrafo ao final explicando como a IAg foi usada, e inclua a sua interação com a IAg no Anexo.
- Verifique criticamente as informações geradas pela IAg, pois podem conter alucinações, erros e/ou viés e estereótipos.
Caso haja o uso de código gerado por essas ferramentas, é necessário indicar a fonte. Para isso, adicione uma explicação ao arquivo READMD.md
do repositório detalhando o quanto foi gerado por IA. (ex.: "A função desenha_sprint foi 100% retirada deste link http://abcxyzxyzzyz ") ou "a função calcula_mapa foi 90% gerada por IA e o histórico do chatGPT está exportado no link http://xyzxyzzyz ".
- Ferramentas de sugestão de código (ex.: Github Copilot) - Caso utilize ferramentas de sugestão de código, como o Github copilot, você pode aceitar linhas e até loops sem precisar dar crédito. Entretanto, a partir do nível de funções e classes é importante colocar um comentário
# feito com CoPilot
Instruções para as aulas estúdio#
- É esperado que o grupo implemente o projeto em conjunto.
- Caso surjam dúvidas/problemas, antes de chamar o professor, todos os integrantes do grupo devem tentar resolver a dúvida juntos.
- Quando os professores chegarem para tirar a dúvida, todos os integrantes do grupo devem explicar o que tentaram fazer.
- Os professores irão indicar uma direção, mas não ficarão com o grupo para resolver o problema.
- Caso o grupo tenha mais de uma dúvida, dependendo do tempo que o professor ficou para resolver a dúvida anterior, o grupo deverá adicionar o nome na fila novamente.
- Não será permitido colocar o nome mais de uma vez na fila de atendimento. Caso o grupo faça isso, o professor irá retirar os nomes da fila.
- Isso vale também para nomes diferentes, mas integrantes do mesmo grupo, pois como o grupo deve ter tentado resolver o problema em conjunto, não faz sentido colocar o nome de todos integrantes na fila.