• Python
  • Projetos
  • Projetos passados
  • Projeto Individual 1 2022-1

Projeto Individual - Aventura em alto mar!#

Data de Entrega: 29/03 (terça-feira) até 21hrs

A entrega do projeto deverá ser feita via Blackboard

Introdução 🌊#

Jogo Deep Sea Adventure Jogo Deep Sea Adventure

Neste projeto individual o seu objetivo é desenvolver uma versão adaptada e simplificada do jogo Deep Sea Adventure. Neste jogo, o jogador é um mergulhador em busca de tesouros escondidos no fundo do mar. Porém, o tanque de oxigênio não é grande o suficiente para possibilitar um mergulho tranquilo. Com a fonte de oxigênio escassa, os mergulhadores precisam gerenciar bem o tempo debaixo da água. Quanto mais fundo o mergulhador for, maior é a chance de encontrar tesouros mais valiosos. Além disso, a quantidade de tesouros que o mergulhador carrega afeta sua mobilidade. O objetivo do jogo é conseguir trazer para o submarino o maior valor em tesouros.

Regras#

A cada rodada o jogo deve seguir os passos descritos a seguir:

  1. Respirar: Jogo verifica se há a necessidade de reduzir o oxigênio. O oxigênio deve ser reduzido de acordo com a quantidade de tesouros que o mergulhador estiver carregando. Ou seja, se o jogador estiver carregando 2 tesouros o nível do oxigênio deve diminuir 2 níveis. Se o mergulhador não estiver carregando nenhum tesouro então não há a necessidade de reduzir o oxigênio. Se o oxigênio alcançar o nível 0 ou menor, o jogador da vez termina a rodada e o jogo acaba.

    Deep Sea Adventure - Etapa de respirar

  2. Avançar ou Retroceder?: No início da partida o jogador começa dentro do submarino. Depois de sair do submarino ele deve escolher continuar avançando para o fundo do mar ou voltar para o submarino.

    • O mergulhador não pode voltar para o submarino sem tesouros.
    • O mergulhador só pode voltar para o submarino uma única vez.
    • Quando o mergulhador decidir retornar para o submarino ele não pode avançar de volta para o fundo do mar.
    • Depois que o jogador decidir retroceder o jogador não precisa passar por este passo, pois a única opção agora será retroceder.

    Deep Sea Adventure - Avançar ou Retroceder

  3. Nadar: Jogador rola dois dados d3 (Dado de três faces.) para verificar o avanço. A soma dos dois resultados do dado d3 representa a profundidade em que o mergulhador vai nadar.

    Deep Sea Adventure - Nadar

    Se o jogador estiver carregando tesouros, então a quantidade de tesouros carregados deve ser subtraído do valor do avanço. (Exemplo: Se um dado sorteou o valor 1 e o outro dado sorteou o valor 3 e o jogador está carregando 3 tesouros, então o jogador vai avançar somente uma casa.) Note que se o valor for negativo o jogador deve ficar parado. Esse passo se aplica tanto para avançar para o fundo do mar quanto para retornar para o submarino.

    Deep Sea Adventure - Aumentando o peso

  4. Caça ao tesouro: Neste passo o jogador pode fazer uma busca por tesouros ou decidir soltar um dos tesouros que ele carrega. (Obs.: Este passo pode ser realizado independente da direção que o mergulhador estiver indo. Então se o mergulhador estiver retornando para o submarino ele pode vasculhar a área em busca de tesouros.)

    Deep Sea Adventure - Encontrando Tesouros

    • Se o mergulhador decidir soltar um tesouro, ele pode escolher qual tesouro deve ser descartado. Note que se o mergulhador estiver retornando ao submarino ele não pode soltar o tesouro se for o único que ele carrega.
    • Se o mergulhador decidir vasculhar a área:
      • O jogo deve informar o valor da recompensa. O valor da recompensa é um número aleatório que depende da profundidade do mar em que o mergulhar se encontra.
      • O jogador decide se ele deseja ficar ou não com o tesouro. Note que o jogador só pode carregar no máximo 4 tesouros. Então se ele já estiver com 4 tesouros, o jogador escolhe qual tesouro deve ser descartado.

O jogo acaba quando o mergulhador voltar para o submarino ou se o oxigênio do tanque se esgotar. O mergulhador só receberá a recompensa dos tesouros se conseguir voltar para o submarino. Caso o oxigênio se esgote antes do mergulhador chegar ao submarino os tesouros serão perdidos e os pontos não são computados.

Deep Sea Adventure - Chegando no submarino Deep Sea Adventure - Acabando o oxigênio

Oxigênio#

O jogo começa com o oxigênio cheio, marcando o nível em 25. Conforme o jogo avança, o nível do oxigênio irá reduzindo conforme as ações do jogador. Se o nível de oxigênio alcançar o valor 0 o jogador da vez termina a rodada e o jogo acaba.

Profundidade#

A profundidade máxima que o mergulhador pode alcançar em direção ao fundo do mar é representada pelo valor 32. Onde a profundidade de nível 1 representa a profundidade mais próxima do submarino e a profundidade de nível 32 representa a profundidade mais distante do submarino. E a posição de valor 0 representa o submarino.

Tesouro#

O valor da recompensa de cada tesouro varia de acordo com o nível de profundidade em que o tesouro se encontra. A tabela a seguir descreve os possíveis valores para cada nível:

Níveis Possíveis valores
1 - 8 0 - 3 pontos
9 - 16 4 - 7 pontos
17 - 24 8 - 11 pontos
25 - 32 12 - 15 pontos

Simulando o jogo#

Para auxiliá-lo no desenvolvimento deste jogo, vamos simular algumas etapas e apresentar um exemplo de como ficaria a implementação deste jogo para a versão para terminal. (Obs.: O exemplo dos vídeos utiliza um print diferente para facilitar a compreensão do exemplo. Desta forma, o seu programa não precisa seguir o mesmo comportamento.)

A seguir vamos apresentar apenas um exemplo para guiá-lo neste projeto, mas você tem a liberdade de fazer alterações no modo que o jogo e o jogador se interagem.

Iniciando o Jogo#

Ao iniciar o jogo, podemos apresentar uma mensagem de recepção ao jogar e até apresentar as regras do jogo.

Deep Sea Adventure - Iniciando o jogo

Etapa para RESPIRAR#

  • Temos o caso em que o jogador não carrega nenhum tesouro e o consumo de oxigênio é 0:

    Deep Sea Adventure - Não consumindo oxigênio

  • Temos o caso em que o jogador já carrega alguns tesouros e ocorre o consumo de oxigênio. No exemplo a seguir, o jogador carrega 4 tesouros e consequentemente ocorre o consumo de 4 unidades de oxigênio:

    Deep Sea Adventure - Consumindo oxigênio

Avançar ou Retroceder?#

Se o jogador não carregar nenhum tesouro a única opção aqui é avançar, caso contrário o jogo deve perguntar se o jogador deseja Avançar ou voltar para o submarino. Lembrando que uma vez escolhido retroceder, o mergulhador não pode mudar o sentido do avanço, ou seja, o jogador não pode mergulhar em direção ao fundo do mar.

Deep Sea Adventure - Avançar ou Retroceder?

Etapa para NADAR#

Esta etapa ocorre da mesma forma se o jogador estiver avançando ou retrocedendo. A única diferença está no sentindo que o jogador está nadando.

A seguir ilustramos alguns cenários:

  • Neste exemplo, o mergulhador está carregando 2 tesouros e tirou 4 na rolagem dos dados, resultando no avanço de 2 casas (4 - 2).

    Deep Sea Adventure - Avançando com sucesso

  • Mergulhador não avança nenhuma casa por conta do peso dos tesouros:

    Deep Sea Adventure - Sem sucesso ao avançar

  • Mergulhador não consegue avançar em direção ao submarino por conta do peso:

    Deep Sea Adventure - Sem sucesso ao retornar

Etapa da CAÇA AO TESOURO#

Nesta etapa o mergulhador pode explorar a área em busca de tesouros. Esta etapa pode ser realizada tanto se o mergulhador estiver avançando ou retrocedendo:

  • Mergulhador faz busca por tesouros e possui espaço disponível:

    Deep Sea Adventure - Vasculhando tesouro

  • Mergulhador faz busca e não possui espaço disponível:

    Deep Sea Adventure - Sem espaço para novos tesouros

  • Mergulhador deseja somente largar tesouro

    Deep Sea Adventure - Soltando tesouro

Fim da rodada#

Nesta etapa é interessante apresentar um resumo do status do jogo para o jogador:

Deep Sea Adventure - Avançando com sucesso

FIM DE JOGO#

  • Mergulhador chega no submarino

    Deep Sea Adventure - Chegando ao submarino

  • Oxigênio esgotando:

    Deep Sea Adventure - Acabando o oxigênio

Atenção

A simulação acima tem o intuito de auxiliar no desenvolvimento do jogo através de alguns exemplos. Ou seja, podem existir cenários que não foram ilustrados através dos gifs.

Rubrica#

O seu jogo vai interagir com o jogador através do terminal, então é importante sempre manter o jogador informado com relação aos momentos em que o oxigênio é consumido, quais valores o jogador rolou nos dados entre outros detalhes. Além disso, ao final de cada rodada o jogo deve mostrar o nível de oxigênio atual e a profundidade atual do jogador.

CONCEITO I#

  • Não implementou nenhum dos 4 passos principais do jogo.
  • O jogo não possui um loop principal onde é possível jogar rodadas consecutivas.

CONCEITO D#

  • Foram implementados algumas funcionalidades do jogo, porém algumas regras do jogo não foram implementadas.
  • O jogo apresenta algum erro de execução que não possibilita testá-lo.
  • O jogo apresenta comportamentos indesejados. (exemplo: não respeitar alguma escolha do jogador, atualizar as informações do jogo de forma incorreta, ou apresentar algum outro comportamento inesperado).

CONCEITO C#

  • Implementou todas as funcionalidades do jogo.
  • Jogo descreve em detalhes o que está acontecendo em cada rodada, sempre mantendo o jogador informado acerca das informações relacionadas ao nível de oxigênio, profundidade atual do jogador, números dos dados sorteados, entre outras informações.
  • Nos momentos em que o jogo pede para o jogador inserir alguma informação, o jogo sempre deixa claro as opção do jogador e o que o jogador deve digitar.

CONCEITO B#

  • Atingiu o nível C e mais os itens listados abaixo.
  • Código utiliza bons nomes de variáveis e funções facilitando a legibilidade do código.
  • Código utiliza comentários para descrever alguns trechos de código.
  • Faz a validação das entradas do usuário.
  • Ao término do jogo, o jogador tem a opção de reiniciar a jogo. (Note que o passo de reiniciar o jogo deve ser feito sem parar a execução do código.)

CONCEITO A#

  • Atingiu o nível B e mais os itens listados abaixo.
  • Implementou o modo multiplayer para 2 jogadores. (Para o modo multiplayer, todos os jogadores compartilham do mesmo oxigênio.)

CONCEITO A+#

  • Atingiu o nível A e mais os itens listados abaixo.
  • Implementou algum item avançado, tal como:
    • Implementou o modo multiplayer para mais jogadores. Para este item, o jogo deve perguntar a quantidade de jogadores desejada. (Para o modo multiplayer, todos os jogadores compartilham do mesmo oxigênio.)
    • Utilizou recursos extras (exemplo: ASCII Art) para aprimorar a interface do jogo.

Para INSPIRAR#

Abaixo podemos ver um exemplo de jogo mostrando que mesmo com poucos recursos, é possível fazer uma interface divertida:

Aventura em alto mar!