Projeto Individual 2 - Jogo de Perguntas e Respostas#
Data de Entrega: 02/12 (sexta-feira) até 21hrs
A entrega poderá ser feita através do github
Regras do jogo#
Você irá implementar um jogo de perguntas e respostas. Cada pergunta tem quatro alternativas e, conforme o jogador responde as perguntas corretamente, tem seu prêmio aumentado. Caso o jogador erre alguma resposta, perde o prêmio e sai sem nada! O jogo acaba quando o jogador atingir o prêmio de 1 milhão ou escolher parar!
Descrição geral dos passos do jogo:#
- O jogador deve informar seu nome;
- O computador exibe um pequeno manual do jogo;
- Inicia-se o jogo de perguntas e respostas;
- O computador sorteia uma pergunta aleatória inédita, exibindo a questão e as opções de resposta;
- O usuário escolhe entre as opções:
A
,B
,C
,D
,pula
,ajuda
ouparar
; - Caso o jogador opte por
ajuda
, sorteie aleatoriamente uma ou duas (quantidade aleatória) respostas sabidamente incorretas e dê a dica de que estas são sabidamente erradas! Então volte ao passo 5. - Caso o jogador opte por
pula
, se o jogador ainda tiver pulos disponíveis, volte ao passo 4, senão informe que não tem mais pulos e exiba a mesma pergunta novamente e volte ao passo 5; - Caso o jogador escolha uma resposta correta, aumente seu prêmio e volte ao passo 4. Considere que o usuário inicia com zero reais e que sua premiação aumenta conforme a lista sequencial:
- Caso o jogador escolha uma resposta errada, o jogo acaba e ele sai sem nenhum prêmio! Então, pergunte se ele quer jogar novamente e volte ao passo 3 em caso afirmativo, ou encerre o jogo em caso negativo!
- Caso o jogador escolha
parar
, o jogo acaba e ele sai com a premiação obtida até o momento! Então, pergunte se ele quer jogar novamente e volte ao passo 3 em caso afirmativo, ou encerre o jogo em caso negativo!
Observações:#
- Inicialmente, o jogador tem direito a
3
pulos e2
ajudas; - O jogo deve validar se a base de dados (perguntas) está consistente. Se não estiver, exiba mensagem de erro e impeça o jogo de começar;
- O jogo não deve sortear perguntas repetidas;
- O jogo deve fazer o controle das dificuldades das perguntas conforme o prêmio aumenta.
- no passo 5, valide se o usuário escolheu alguma opção inexistente;
- no passo 6, não é possível pedir ajuda mais de uma vez na mesma pergunta. Valide e exiba mensagem adequada;
Da vitória:#
- O jogo acaba quando o jogador atingir o prêmio de 1 milhão. Após cada pergunta correta, o jogador tem a opção de parar e sair com o prêmio já conquistado.
O que você precisa fazer#
Exemplo do Jogo
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 os seguintes exercícios:
Atenção
Para este projeto a implementação das funções descritas abaixo são obrigatórias. Utilize o botão "Resolver exercício" no final desta página para abrir o código e os testes no VS Code.
Valida Lista de Questões
Acesse o link abaixo para mais detalhes da função Valida Lista de Questões.
Sorteia Questão Inédita
Acesse o link abaixo para mais detalhes da função Sorteia Questão Inédita.
Questão para String
Acesse o link abaixo para mais detalhes da função Questão para String.
Importante
As funções acima devem ser utilizadas pelo seu programa.
Ainda, está sendo disponibilizado um arquivo com uma base de perguntas e resposta, que pode ser utilizado no Projeto. Sugestão: incremente a base de dados, criando novas perguntas!
Base de Perguntas e Respostas
Base de Perguntas e Respostas Prefira baixar o arquivo com o comando (Ctrl + s), ao invés de copiar e colar o conteúdo. Faça isso para evitar problemas com o encoding dos acentos.
Leia também a rubrica atentamente, pois ela pode te ajudar a entender o que precisa ser feito.
Rubrica#
O seu jogo vai interagir com o jogador através do terminal, então é importante sempre manter o jogador informado com relação a quantidade de tesouros encontrados ou se um perigo foi encontrado.
CONCEITO I#
- Não implementou nenhuma das regras básicas 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.
- Não entregou todas as sete funções obrigatórias (você pode, e deve, utilizar mais funções, mas as funções listadas no enunciado são obrigatórias).
- 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#
- Entregou as sete funções obrigatórias funcionando, mas o programa não funciona. (Ou seja, as funções passam em todos os testes)
- O programa funciona conforme o esperado, o jogo sempre apresenta para o jogador o estado atual do seu prêmio, é apresentada uma mensagem ao final de cada jogo indicando se o jogador ganhou ou perdeu e o jogador pode iniciar um novo jogo sem ter que executar o programa novamente.
- 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 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.
- Adicionou mais perguntas à base (pelo menos 20 perguntas extras) e implementou alguma forma de visualização mais avançada (ex: cor diferente conforme o valor do prêmio ou de acordo com a importância de cada mensagem).