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 AdventureJogo 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. Deep Sea Adventure - Etapa de respirarRespirar: 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.
  2. Deep Sea Adventure - Avançar ou RetrocederAvanç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.
  3. Deep Sea Adventure - NadarNadar: 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 - Aumentando o pesoSe 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 valor3 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.
  4. Deep Sea Adventure - Encontrando TesourosCaç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).
    • 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 submarinoDeep 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 valor32. 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 valor0 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íveisPossíveis valores
1 - 80 - 3 pontos
9 - 164 - 7 pontos
17 - 248 - 11 pontos
25 - 3212 - 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 tesouroDeep 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 submarinoDeep 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!