Olá, Hassan. Como vai?
Parabéns pela implementação do código! A estrutura do seu laço while está lógica e funcional. Esse é um exemplo clássico e excelente para entender como o controle de fluxo funciona através de uma condição booleana.
Para agregar valor ao seu projeto e torná-lo ainda mais robusto, gostaria de sugerir alguns pontos de melhoria e boas práticas em C#:
1. Otimização da mensagem de erro
No seu código atual, a mensagem "Tente novamente" aparece mesmo quando o usuário acerta o número, logo antes da mensagem de "Parabéns". Para evitar isso, você pode utilizar uma estrutura condicional if dentro do bloco:
while (tentativa != numeroSecreto)
{
Console.WriteLine("Digite um número:");
tentativa = int.Parse(Console.ReadLine());
if (tentativa != numeroSecreto)
{
Console.WriteLine("Tente novamente!");
}
}
2. Tratamento de Erros (TryParse)
Um ponto importante em C# é que o int.Parse pode travar o programa se o usuário digitar uma letra em vez de um número. Uma prática recomendada é usar o int.TryParse, que tenta converter o valor e retorna um booleano indicando se deu certo ou não.
3. Diferença entre While e Do-While
Como este capítulo do curso aborda essas duas estruturas, vale notar que você usou o while. A principal diferença é que o while testa a condição antes de entrar no bloco, enquanto o do while garante que o código seja executado pelo menos uma vez antes de testar a condição.
No caso de um jogo de adivinhação, o do while costuma ser muito utilizado porque sabemos que o usuário terá que fazer, no mínimo, uma tentativa. O código ficaria assim:
do
{
Console.WriteLine("Digite um número:");
tentativa = int.Parse(Console.ReadLine());
if (tentativa != numeroSecreto)
{
Console.WriteLine("Errado! Tente de novo.");
}
} while (tentativa != numeroSecreto);
Continue praticando e explorando essas variações, elas são fundamentais para construir programas que interagem bem com o usuário!
Espero que possa ter lhe ajudado!