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!