• Projetos

Exercício Programa - Batalha Naval Simplificada

Este EP pode ser feito individualmente ou em duplas e deve utilizar o github para registrar o histórico do código e para fazer a entrega (com contribuições de ambos os membros, no caso de duplas).

Caso faça em dupla, defina quais exercícios cada integrante ficará responsável.

Caso faça individualmente, ainda é necessário utilizar o github e fazer commits ao longo do desenvolvimento do projeto.

Para exercitar nossas habilidades com programação, vamos desenvolver o jogo Batalha Naval.

Nesse jogo, o objetivo do jogador é tentar afundar todos os navios inimigos. É preciso posicionar estrategicamente os navios no começo do jogo e contar com a sorte para afundar os navios do adversário antes dele afundar os seus.

O jogo

  • O primeiro passo do jogo é posicionar um total de 10 embarcações de diversas posições em um grid de 10 por 10.

Grid

  • Nesta versão do jogo trabalharemos com 4 tipos de embarcações diferentes. Cada tipo possui um tamanho, que representa quantos espaços do grid ele ocupa. Veja as embarcações e suas descrições a seguir:

Embarcações


Embarcações e suas informações

Você deve implementar uma versão para terminal (console) do jogo, ou seja, usando print e input para interagir com o usuário por meio de texto.

Para te auxiliar nessa tarefa, foram criados exercícios no PrairieLearn que te ajudarão a implementar as funções necessárias para o jogo.

Desenvolvimento do projeto

  • Crie um repositório público no github para o seu projeto e adicione sua dupla caso haja.
  • Cada exercício feito com sucesso no PrairieLearn deve ser adicionado ao repositório em um commit separado no mesmo dia. Dica: crie um arquivo para adicionar essas funções. A cada modificação nesse arquivo, faça um novo commit. Assim, a evolução do programa fica registrada.
  • As funções enviadas no PrairieLearn devem ser utilizadas pelo seu programa no EP2. Faça um outro arquivo para o programa que será responsável pela impressão em tela e validação de entrada de dados.

Leia também a rubrica atentamente, pois ela irá te ajudar a entender o que precisa ser feito.

Rubrica

A tabela a seguir apresenta os requisitos esperados e seus respectivos conceitos associados para os objetivos de aprendizagem desenvolver de programas de computador e identificar e desenhar estratégias algorítmicas computacionais. Esta tabela deve ser considerada em conjunto com a tabela do objetivo atuar em uma equipe autogerenciada de desenvolvimento.

Conceito I

Não entregou

Conceito D

Não submeteu com sucesso no PrairieLearn ou não fez o commit de alguma das funções a seguir:

  • Define posições
  • Preenche frota
  • Faz jogada

Conceito C

Submeteu com sucesso no PrairieLearn E fez o commit das funções a seguir:

  • Define posições
  • Preenche frota
  • Faz jogada

Conceito B

Atingiu o conceito C E submeteu com sucesso no PrairieLearn E fez o commit das funções a seguir:

  • Posiciona frota
  • Afundados

Conceito A

Atingiu o conceito B E submeteu com sucesso no PrairieLearn E fez o commit das funções a seguir:

  • Posição válida
  • Pergunta posicionamento da frota
  • Jogadas do jogador
  • Jogadas do oponente

Conceito A+

Atingiu o conceito A e existem exatamente 2 arquivos no repositório (um para as funções e outro para o código do jogo. Além disso, as funções estão sendo importadas do arquivo que contém as definições das funções).


A tabela a seguir apresenta a rubrica do objetivo atuar em uma equipe autogerenciada de desenvolvimento.

Conceito Descrição
I Não entregou.
D Não possui nenhum commit próprio e nenhuma evidência de trabalho em grupo.
C O grupo enviou todo o código de uma vez para o git (em um ou poucos commits enviados em um intervalo curto de tempo).
B Todos os membros do grupo enviaram commits com partes do código, mas a evolução do código é artificial.
A O grupo fez bom uso do git, enviando commits a cada funcionalidade implementada ou bug corrigido. Os commits são distribuídos ao longo de alguns dias, mostrando a evolução do trabalho.

O conceito final do EP2 será dado pelo menor entre os conceitos obtidos para cada objetivo acima. Ou seja, se você obtiver conceito C no primeiro objetivo e A no segundo, o conceito final será C. Se você obtiver conceito A+ no primeiro objetivo, mas não possuir nenhum commit e nenhuma outra evidência de trabalho em grupo (conceito D), seu conceito final será D.

Entrega 24/10 até 23:59

Será considerado o código enviado para o github até a data de entrega.

O endereço do seu repositório deve ser enviado pelo Blackboard. Não façam commits após a data de entrega, pois será considerado como atraso.

Importante: Caso algum integrante da dupla esqueça de enviar o endereço do repositório, será descontado conceito da nota final do projeto.