1
resposta

[Projeto] Número secreto

Fiz dessa forma utilizando a estrutura while para repetir a pergunta até o usuário acertar o número secreto.
No meu teste, o programa continuou solicitando um novo número enquanto o valor digitado era diferente do número secreto e, ao acertar, exibiu a mensagem de sucesso corretamente.

Também utilizei o Convert.ToInt32(Console.ReadLine()) para converter a entrada do usuário em número inteiro.Print do código funcionando após 3 tentativas

int numeroSecreto = 3;

Console.WriteLine("Tente adivinhar o número secreto entre 1 e 10: ");
int numeroDigitado = Convert.ToInt32(Console.ReadLine());

while (numeroDigitado != numeroSecreto)
{
    Console.WriteLine("Número errado, tente novamente: ");
    numeroDigitado = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("Parabéns! Você acertou o número secreto.");  
1 resposta

Olá, Bianca. Como vai?

Parabéns pela conclusão do projeto! O print do seu console do Visual Studio mostra que a aplicação está funcionando perfeitamente, seguindo exatamente o fluxo esperado para o jogo do número secreto.

A sua escolha do laço while foi ideal para esse cenário, pois nós não sabemos de antemão quantas tentativas o usuário vai precisar até acertar. A lógica de atualizar a variável numeroDigitado dentro do bloco de repetição foi aplicada de forma perfeita, evitando o risco de criar um loop infinito.

Para complementar o seu aprendizado e trazer boas práticas de desenvolvimento em C#, quero propor duas melhorias interessantes para o seu código: redução de repetição de código e proteção contra quebras.

1. Evitando a repetição de linhas com o laço do while

No seu código atual, você precisou escrever a linha de leitura Convert.ToInt32(Console.ReadLine()) duas vezes: uma antes do laço e outra dentro dele.

Podemos deixar o código mais limpo utilizando a estrutura do while. Esse laço garante que o bloco de código seja executado pelo menos uma vez antes de testar a condição. Veja como a estrutura fica mais enxuta:

int numeroSecreto = 3;
int numeroDigitado;

do
 int o
{
    Console.WriteLine("Tente adivinhar o número secreto entre 1 e 10: ");
    numeroDigitado = Convert.ToInt32(Console.ReadLine());

    if (numeroDigitado != numeroSecreto)
    {
        Console.WriteLine("Número errado, tente novamente.");
    }
} while (numeroDigitado != numeroSecreto);

Console.WriteLine("Parabéns! Você acertou o número secreto.");

2. Tornando a conversão mais segura com int.TryParse

Do jeito que o código está estruturado, se o usuário digitar uma letra por engano ou deixar o espaço em branco, o método Convert.ToInt32 vai disparar uma exceção e o programa vai fechar inesperadamente.

Em aplicações reais, usamos o int.TryParse para tentar converter o texto. Se der errado, o programa não quebra e podemos avisar o usuário de forma amigável:

int numeroSecreto = 3;
int numeroDigitado;
bool conversaoSucesso;

do
{
    Console.WriteLine("Digite o seu palpite (entre 1 e 10): ");
    
    // Tenta converter. Se conseguir, guarda o valor em numeroDigitado e retorna true
    conversaoSucesso = int.TryParse(Console.ReadLine(), out numeroDigitado);

    if (!conversaoSucesso)
    {
        Console.WriteLine("Entrada inválida! Por favor, digite apenas números inteiros.");
        continue; // Volta para o início do laço
    }

    if (numeroDigitado != numeroSecreto)
    {
        Console.WriteLine("Número errado, tente novamente!");
    }

} while (numeroDigitado != numeroSecreto);

Console.WriteLine("Parabéns! Você acertou o número secreto.");

Excelente trabalho unindo a lógica de programação com os recursos do C#. Continue praticando e explorando as variações dos laços de repetição!

Espero que possa ter lhe ajudado!