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

[Bug] O Programa encerra automaticamente sem o usuário ter acertado

Olá, terminei o jogo do número secreto, porém, quando fui testar, encontrei o seguinte bug : Insira aqui a descrição dessa imagem para ajudar na acessibilidadeConforme visto na imagem acima, o programa se encerra automaticamente, mesmo se o usuário ainda não tiver acertado, não sei o porque desse comportamento, mas se alguém souber, por favor me conte, junto com uma possível solução (se possível).

Para mais informações, o código é este:

//Gerando Número Aleatório
Random geradorDeNumeroAleatorio = new();
int numeroAleatorio = geradorDeNumeroAleatorio.Next(1, 100);

int ReceberImputDoJogador()
{
    Console.Write("\nDigite um número: ");
    string imputDoJogador = Console.ReadLine()!;
    int imputDoJogadorNumerico = int.Parse(imputDoJogador);
    return (imputDoJogadorNumerico);

}

void ExibirMensagemDeBoasVindas()
{
    Console.WriteLine(@"
  ╔╗            ╔╗    ╔═╗ ╔╗               ╔═══╗           ╔╗
  ║║            ║║    ║║╚╗║║ ╔╝            ║╔══╝          ╔╝╚╗
  ║╠══╦══╦══╗ ╔═╝╠══╗ ║╔╗╚╝╠╗╔╦╗╔╦══╦═╦══╗ ║╚══╦══╦══╦═╦══╬╗╔╬══╗
╔╗║║╔╗║╔╗║╔╗║ ║╔╗║╔╗║ ║║╚╗║║║║║╚╝║║═╣╔╣╔╗║ ╚══╗║║═╣╔═╣╔╣║═╣║║║╔╗║
║╚╝║╚╝║╚╝║╚╝║ ║╚╝║╚╝║ ║║ ║║║╚╝║║║║║═╣║║╚╝║ ║╚═╝║║═╣╚═╣║║║═╣║╚╣╚╝║
╚══╩══╩═╗╠══╝ ╚══╩══╝ ╚╝ ╚═╩══╩╩╩╩══╩╝╚══╝ ╚═══╩══╩══╩╝╚══╝╚═╩══╝
      ╔═╝║
      ╚══╝
");
    Console.WriteLine("Bem Vindo ao Jogo do número secreto");
}

Boolean VerificarImputDoJogador()
{
    int imputDoJogador = ReceberImputDoJogador();

    if (numeroAleatorio == imputDoJogador)
    {
        Console.WriteLine($"Você acertou :) O número secreto era {numeroAleatorio}");
        return (true);
    }
    else
    {
        if (numeroAleatorio < imputDoJogador)
        {
            Console.WriteLine($"Tente novamente :( O número secreto é menor que {imputDoJogador}");
            return (false);
        }
        else
        {
            if (numeroAleatorio > imputDoJogador)
            {
                Console.WriteLine($"Tente novamente :( O número secreto é maior que {imputDoJogador}");
                return (false);
            }
        }
        return (false);
    }

}

ExibirMensagemDeBoasVindas();
VerificarImputDoJogador();

if (VerificarImputDoJogador() == false!)
{
    VerificarImputDoJogador();
}
else
{
    Console.WriteLine(@"
╔╗  ╔╗      ╔╗╔╗╔╗   ╔╗
║╚╗╔╝║      ║║║║║║   ║║
╚╗╚╝╔╩═╦╗╔╗ ║║║║║╠╦═╗║║
 ╚╗╔╣╔╗║║║║ ║╚╝╚╝╠╣╔╗╬╝
  ║║║╚╝║╚╝║ ╚╗╔╗╔╣║║║╠╗
  ╚╝╚══╩══╝  ╚╝╚╝╚╩╝╚╩╝");
}
2 respostas
solução!

Boa noite,

Amigo de cara da pra ver que é um erro de lógica, se o intuito é ficar em loop até que a verificação esteja correta a lógica ficará da seguinte forma:

internal class Program
{

    private static int ReceberImputDoJogador()
    {
        Console.Write("\nDigite um número: ");
        string imputDoJogador = Console.ReadLine();
        int imputDoJogadorNumerico = int.Parse(imputDoJogador);
        return (imputDoJogadorNumerico);

    }

    private static void ExibirMensagemDeBoasVindas()
    {
        Console.WriteLine(@"
          ╔╗            ╔╗    ╔═╗ ╔╗               ╔═══╗           ╔╗
          ║║            ║║    ║║╚╗║║ ╔╝            ║╔══╝          ╔╝╚╗
          ║╠══╦══╦══╗ ╔═╝╠══╗ ║╔╗╚╝╠╗╔╦╗╔╦══╦═╦══╗ ║╚══╦══╦══╦═╦══╬╗╔╬══╗
        ╔╗║║╔╗║╔╗║╔╗║ ║╔╗║╔╗║ ║║╚╗║║║║║╚╝║║═╣╔╣╔╗║ ╚══╗║║═╣╔═╣╔╣║═╣║║║╔╗║
        ║╚╝║╚╝║╚╝║╚╝║ ║╚╝║╚╝║ ║║ ║║║╚╝║║║║║═╣║║╚╝║ ║╚═╝║║═╣╚═╣║║║═╣║╚╣╚╝║
        ╚══╩══╩═╗╠══╝ ╚══╩══╝ ╚╝ ╚═╩══╩╩╩╩══╩╝╚══╝ ╚═══╩══╩══╩╝╚══╝╚═╩══╝
              ╔═╝║
              ╚══╝
        ");
        Console.WriteLine("Bem Vindo ao Jogo do número secreto");
    }

    static void Main(string[] args)
    {
        ExibirMensagemDeBoasVindas();

        /// :: Gerando Número Aleatório
        Random geradorDeNumeroAleatorio = new Random();
        int numeroAleatorio = geradorDeNumeroAleatorio.Next(1, 100);


        while (true)
        {
            var valorRecebido = ReceberImputDoJogador();

            if (numeroAleatorio == valorRecebido)
            {
                Console.WriteLine($"Você acertou :) O número secreto era {numeroAleatorio}");
                break;
            }
            else
            {
                if (numeroAleatorio < valorRecebido)
                    Console.WriteLine($"Tente novamente :( O número secreto é menor que {valorRecebido}");
                else
                {
                    if (numeroAleatorio > valorRecebido)
                        Console.WriteLine($"Tente novamente :( O número secreto é maior que {valorRecebido}");
                }


                continue;
            }
        }


        Console.WriteLine(@"
                ╔╗  ╔╗      ╔╗╔╗╔╗   ╔╗
                ║╚╗╔╝║      ║║║║║║   ║║
                ╚╗╚╝╔╩═╦╗╔╗ ║║║║║╠╦═╗║║
                 ╚╗╔╣╔╗║║║║ ║╚╝╚╝╠╣╔╗╬╝
                  ║║║╚╝║╚╝║ ╚╗╔╗╔╣║║║╠╗
                  ╚╝╚══╩══╝  ╚╝╚╝╚╩╝╚╩╝
            ");


        Console.ReadKey();
    }
}

O Console.ReadKey() é justamente para aguardar que você pressione alguma tecla para que a aplicação feche, se você deixa sem igual você fez ele encerra da forma que mostra na sua aplicação.

Espero ter ajudado

Troquei o if no final do código por um while, e coloquei um readkey depois e funcionou direitinho agora. Obrigado.