Fiz o jogo de adivinhação com valor fixo, sem olhar a opinião do instrutor por ser um curso introdutório na linguagem, conheço a lógica de programação, mas quero ver como funciona a linguagem. Encontrei essa solução, e implementei o switch bem no final por ser um requisito do programa, mas antes, os avisos se o número é maior/ou menor apareciam nos ifs, porém nesse caso o sistema ficaria sem a estrutura switch.
int numeroDigitado = 0;
void MenuPrograma()
{
Console.WriteLine("--- Menu Inicial ---");
Console.WriteLine("Jogo de adivinhação");
}
void VerificarNumero()
{
int numeroCorreto = 65;
int maiorValor = 100;
int menorValor = 1;
bool numeroDigitadoMenor = false;
bool numeroDigitadoMaior = false;
do
{
bool numeroInvalido = false;
Console.Write($"Digite um número de {menorValor} a {maiorValor}: ");
string numero = Console.ReadLine()!;
numeroDigitado = int.Parse(numero);
while(numeroDigitado < menorValor || numeroDigitado > maiorValor)
{
Console.WriteLine($"Número Inválido, digite um valor entre {menorValor} a {maiorValor}!!!");
numeroInvalido = true;
break;
}
if (numeroDigitado != numeroCorreto && numeroInvalido==false)
{
Console.WriteLine("Você não acertou o número correto, tente novamente.");
if (numeroDigitado > numeroCorreto)
{
if (numeroDigitado<maiorValor)
{
maiorValor = numeroDigitado;
}
numeroDigitadoMaior = true;
numeroDigitadoMenor = false;
}
else if (numeroDigitado < numeroCorreto)
{
// Console.WriteLine($"O número correto é maior que: {numeroDigitado}");
if (numeroDigitado>menorValor)
{
menorValor = numeroDigitado;
}
numeroDigitadoMaior = false;
numeroDigitadoMenor = true;
}
switch (numeroDigitadoMaior)
{
case true:
Console.WriteLine($"O número correto é menor que: {numeroDigitado}");
break;
case false:
Console.WriteLine($"O número correto é maior que: {numeroDigitado}");
break;
}
}
} while (numeroDigitado != numeroCorreto);
Console.WriteLine("Você acertou o número correto, parabéns!!!");
Console.WriteLine($"O número secreto era o {numeroCorreto}!!!");
}
MenuPrograma();
VerificarNumero();