1
resposta

[Sugestão] Resolução da atividade. Gostaria de sugestões para melhorar o codigo!

using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
Dictionary<string, string> quiz = new Dictionary<string, string>();
int numeroDeVidas = 5;

void ExibirLogo()
{
    Console.WriteLine(@"

    ██╗░░░░░██╗███████╗███████╗████████╗██╗███╗░░░███╗███████╗  ░██████╗░░█████╗░███╗░░░███╗███████╗
    ██║░░░░░██║██╔════╝██╔════╝╚══██╔══╝██║████╗░████║██╔════╝  ██╔════╝░██╔══██╗████╗░████║██╔════╝
    ██║░░░░░██║█████╗░░█████╗░░░░░██║░░░██║██╔████╔██║█████╗░░  ██║░░██╗░███████║██╔████╔██║█████╗░░
    ██║░░░░░██║██╔══╝░░██╔══╝░░░░░██║░░░██║██║╚██╔╝██║██╔══╝░░  ██║░░╚██╗██╔══██║██║╚██╔╝██║██╔══╝░░
    ███████╗██║██║░░░░░███████╗░░░██║░░░██║██║░╚═╝░██║███████╗  ╚██████╔╝██║░░██║██║░╚═╝░██║███████╗
    ╚══════╝╚═╝╚═╝░░░░░╚══════╝░░░╚═╝░░░╚═╝╚═╝░░░░░╚═╝╚══════╝  ░╚═════╝░╚═╝░░╚═╝╚═╝░░░░░╚═╝╚══════╝");
}
    
void Vidas()
{
    ExibirLogo();
    Console.WriteLine("\nSeja bem vindo ao Lifetime Game!");
    Console.WriteLine(@"A cada resposta certa você ganha uma vida, e a cada erro você perde uma vida.");
    Console.Write("\nPara iniciar o jogo aperte qualquer botão!");
    Console.ReadKey();
}

void PerguntasDoQuiz()
{
    quiz.Add("Em que país está o Cristo Redentor", "Brasil");
    quiz.Add("Em qual cidade fica a Torre Eiffel", "Paris");
    quiz.Add("Onde fica a Estátua da Liberdade", "Estados Unidos");
    quiz.Add("As ruínas de Machu Picchu ficam em qual país", "Peru");
    quiz.Add("Em qual cidade está o Coliseu", "Roma");
}

void Perguntas()
{
    
    foreach(string pergunta in quiz.Keys)
    {
        Console.Clear();
        Console.Write($"{pergunta}? ");
        string resposta = Console.ReadLine()!;

        if(resposta.Equals(quiz[pergunta], StringComparison.OrdinalIgnoreCase))
        {
        numeroDeVidas++;
        Console.WriteLine($"Resposta CERTA! Você tem {numeroDeVidas} vidas!");
        Thread.Sleep(2000);
        }
        else 
        {
        numeroDeVidas--;
        Console.WriteLine($"Resposta ERRADA! Você tem {numeroDeVidas} vidas!");
        Thread.Sleep(2000);
        }
        
        if(numeroDeVidas <= 0)
        {
            Console.WriteLine("GAME OVER! VOCÊ PERDEU!");
            break;
        }
        else
        {            
            Console.WriteLine("PARABÉNS! VOCÊ GANHOU O DESAFIO!");
        }
            
    }
    
       

}


Vidas();
PerguntasDoQuiz();
Perguntas();
1 resposta

Olá, Edla, como vai?

O código que você compartilhou demonstra um ótimo domínio no uso de dicionários e na estrutura de repetição para percorrer as perguntas do quiz. É interessante notar como você expandiu a lógica inicial do exercício para criar uma aplicação funcional e interativa, o que ajuda muito na fixação dos conceitos de incremento e decremento. O uso do StringComparison para ignorar letras maiúsculas ou minúsculas na resposta é uma excelente prática para melhorar a experiência do usuário.

Como ponto de melhoria, notei que a mensagem de parabéns está dentro do laço de repetição. Isso faz com que ela seja exibida após cada pergunta respondida (e apagada logo após com o clear()), mesmo que o jogo ainda não tenha terminado. Você pode mover essa verificação para fora do bloco foreach para que ela apareça apenas quando todas as perguntas forem respondidas e o jogador ainda tiver vidas.

Agradeço por compartilhar sua resolução no fórum e incentivo você a continuar explorando novas funcionalidades em seus projetos. O fórum está à disposição para qualquer outra dúvida ou troca de conhecimentos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!