Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] [Resolução] Verificando acesso a área restrita

int _senha = 42;
int _nivelDeAcesso = 5;
int tentativasRestantes = 3;
bool acessoLiberado = false;

void MostrarLogo()
{
    Console.Clear();
    Console.WriteLine(@"
░██████╗███████╗░█████╗░██╗░░░██╗██████╗░███████╗  ██╗░░░░░░█████╗░██████╗░
██╔════╝██╔════╝██╔══██╗██║░░░██║██╔══██╗██╔════╝  ██║░░░░░██╔══██╗██╔══██╗
╚█████╗░█████╗░░██║░░╚═╝██║░░░██║██████╔╝█████╗░░  ██║░░░░░███████║██████╦╝
░╚═══██╗██╔══╝░░██║░░██╗██║░░░██║██╔══██╗██╔══╝░░  ██║░░░░░██╔══██║██╔══██╗
██████╔╝███████╗╚█████╔╝╚██████╔╝██║░░██║███████╗  ███████╗██║░░██║██████╦╝
╚═════╝░╚══════╝░╚════╝░░╚═════╝░╚═╝░░╚═╝╚══════╝  ╚══════╝╚═╝░░╚═╝╚═════╝░");
    
    if (!acessoLiberado)
        Console.WriteLine($"\nTentativas restantes: {tentativasRestantes}");
}

while (tentativasRestantes > 0 && !acessoLiberado)
{
    MostrarLogo();
    Console.Write("Digite a senha: ");
    
    if (int.TryParse(Console.ReadLine(), out int senha))
    {
        MostrarLogo();
        Console.Write("Digite o nível de acesso: ");
        if (int.TryParse(Console.ReadLine(), out int nivelDeAcesso))
        {
            if (senha == _senha && nivelDeAcesso >= _nivelDeAcesso)
            {
                acessoLiberado = true;
                // Não precisa de break aqui, a condição do while cuidará disso
            }
            else
            {
                tentativasRestantes--;
                Console.WriteLine("\nCredenciais inválidas!");
                Thread.Sleep(1500);
            }
        }
        else
        {
            Console.WriteLine("\nO nível de acesso deve ser numérico!");
            Thread.Sleep(1500);
        }
    }
    else
    {
        Console.WriteLine("\nA senha deve ser numérica!");
        Thread.Sleep(1500);
    }
}

MostrarLogo();

if (acessoLiberado)
    Console.WriteLine("Acesso liberado. Bem-vindo!");
else
    Console.WriteLine("Acesso negado. Limite de tentativas excedido.");

Console.ReadKey();
2 respostas
solução!

Oi, Gerson! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Chamou atenção o uso correto do while junto com variáveis de controle como tentativasRestantes e acessoLiberado, deixando o fluxo bem organizado. A separação do método MostrarLogo() também ajuda bastante na leitura e manutenção do código.

Uma dica interessante para o futuro é usar métodos para validar credenciais, deixando a regra isolada e mais fácil de testar. Veja este exemplo:


bool ValidarAcesso(int senhaDigitada, int nivelDigitado)
{
    return senhaDigitada == 42 && nivelDigitado >= 5;
}

Esse código verifica se a senha e o nível atendem às regras e retorna verdadeiro ou falso, simplificando a condição principal.

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

Eu fiz um método de validação depois..
Muito obrigado pelo feedback