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

[Projeto] Como eu fiz meu jogo

Vou deixar aqui meu código com comentários, para caso alguém que esteja fazendo o curso e queria usar como referência.

//Bem auto explicativo, mas é a função que emite o texto de introdução ao jogo
void IntroJogo()
{
    Console.WriteLine(@"
██████╗░░█████╗░███╗░░██╗██████╗░░█████╗░███╗░░░███╗░██████╗░░█████╗░███╗░░░███╗███████╗
██╔══██╗██╔══██╗████╗░██║██╔══██╗██╔══██╗████╗░████║██╔════╝░██╔══██╗████╗░████║██╔════╝
██████╔╝███████║██╔██╗██║██║░░██║██║░░██║██╔████╔██║██║░░██╗░███████║██╔████╔██║█████╗░░
██╔══██╗██╔══██║██║╚████║██║░░██║██║░░██║██║╚██╔╝██║██║░░╚██╗██╔══██║██║╚██╔╝██║██╔══╝░░
██║░░██║██║░░██║██║░╚███║██████╔╝╚█████╔╝██║░╚═╝░██║╚██████╔╝██║░░██║██║░╚═╝░██║███████╗
╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═════╝░░╚════╝░╚═╝░░░░░╚═╝░╚═════╝░╚═╝░░╚═╝╚═╝░░░░░╚═╝╚══════╝
");

    Console.WriteLine("\nBem vindo ao RandomGame, um jogo onde você tem que acertar um número aleatório, podendo ser de 0 até 100.");
}

//Para sortear o número, criei uma instância para a classe Random, após usei o .Next para sortear um número entre 1 e 100, e então retorno o seu valor inteiro
int CalcularNumeroAleatorio()
{
    Random random = new Random();
    int num = random.Next(1, 101);
    Console.WriteLine("\no número foi gerado, tente adivinhar!");
    return num;
}

//Com a função recebendo o valor e a resposta do jogador, loopei o jogo utilizando uma condição if-else
void ValidarResposta(int numero)
{
    string resposta = Console.ReadLine()!;
    int respostaNum = int.Parse(resposta);
    Console.WriteLine($"Você chutou o número {respostaNum}");
    if (respostaNum == numero)
    {
        Console.WriteLine("Você ACERTOU! Parabéns.");
    }
    if (respostaNum <= 0 || respostaNum >= 101)
    {
        Console.WriteLine("Dica: o número fica entre 1  e 100!");
        ValidarResposta(numero);
    }
    else
    {
        if (respostaNum > numero)
        {
            Console.WriteLine($"Que pena, você errou. Tente um número mais baixo!");
        }
        else if (respostaNum < numero)
        {
            Console.WriteLine($"Que pena, você errou. Tente um número mais alto!");
        }
        ValidarResposta(numero);
    }
}

//Onde as funções são executadas, note que função de sorteio é declarada em uma variável inteira, para que a validação possa utilizar o número que ela retorna
IntroJogo();
int numero = CalcularNumeroAleatorio();
ValidarResposta(numero);
3 respostas

Caso queira ver o número sorteado, e testar para ver se seu código está funcionando certinho sem ter que chutar, coloque no else:

    else
    {
        Console.WriteLine($"Que pena, você errou. Tente novamente!");
        ValidarResposta(numero);
    }

Assim você pode colocar o número correto sem esforço.

solução!

Olá, Nicolas!

Obrigada por compartilhar seu código com comentários.

Você está criando um jogo em que o programa gera um número aleatório entre 1 e 100, e o usuário deve adivinhar qual é esse número. Se o usuário acertar, o jogo acaba e é exibida uma mensagem de parabéns. Caso contrário, o usuário pode tentar novamente.

A estrutura do seu código está correta. Você tem três funções: IntroJogo(), CalcularNumeroAleatorio() e ValidarResposta(). A função IntroJogo() emite o texto de introdução ao jogo, a função CalcularNumeroAleatorio() sorteia o número aleatório e a função ValidarResposta() recebe a resposta do jogador e verifica se está correta.

Uma sugestão de melhoria para o seu código é adicionar uma condição para verificar se a resposta do jogador está dentro do intervalo válido (entre 1 e 100). Assim, você pode informar ao jogador que ele precisa digitar um número válido.

Aqui está uma possível implementação dessa verificação:

void ValidarResposta(int numero)
{
    string resposta = Console.ReadLine();
    int respostaNum;
    if (int.TryParse(resposta, out respostaNum))
    {
        if (respostaNum >= 1 && respostaNum <= 100)
        {
            Console.WriteLine($"Você chutou o número {respostaNum}");
            if (respostaNum == numero)
            {
                Console.WriteLine("Você ACERTOU! Parabéns.");
            }
            else
            {
                Console.WriteLine("Que pena, você errou. Tente novamente!");
                ValidarResposta(numero);
            }
        }
        else
        {
            Console.WriteLine("Por favor, digite um número entre 1 e 100.");
            ValidarResposta(numero);
        }
    }
    else
    {
        Console.WriteLine("Por favor, digite um número válido.");
        ValidarResposta(numero);
    }
}

Com essa verificação, o jogador será informado caso digite um número inválido e terá a chance de tentar novamente.

Espero ter ajudado! Bons estudos e continue praticando a criação de jogos em C#.

Valeu pelo feedback! Acabei de implementar a dica. Muito Obrigado!