Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
4
respostas

[Projeto] Solução proposta ao Faça como eu fiz: primeiro jogo com C#

Console.WriteLine(@"
░█████╗░██████╗░██╗██╗░░░██╗██╗███╗░░██╗██╗░░██╗███████╗  ░█████╗░
██╔══██╗██╔══██╗██║██║░░░██║██║████╗░██║██║░░██║██╔════╝  ██╔══██╗
███████║██║░░██║██║╚██╗░██╔╝██║██╔██╗██║███████║█████╗░░  ██║░░██║
██╔══██║██║░░██║██║░╚████╔╝░██║██║╚████║██╔══██║██╔══╝░░  ██║░░██║
██║░░██║██████╔╝██║░░╚██╔╝░░██║██║░╚███║██║░░██║███████╗  ╚█████╔╝
╚═╝░░╚═╝╚═════╝░╚═╝░░░╚═╝░░░╚═╝╚═╝░░╚══╝╚═╝░░╚═╝╚══════╝  ░╚════╝░
//███╗░░██╗██╗░░░██╗███╗░░░███╗███████╗██████╗░░█████╗░
//████╗░██║██║░░░██║████╗░████║██╔════╝██╔══██╗██╔══██╗
//██╔██╗██║██║░░░██║██╔████╔██║█████╗░░██████╔╝██║░░██║
//██║╚████║██║░░░██║██║╚██╔╝██║██╔══╝░░██╔══██╗██║░░██║
//██║░╚███║╚██████╔╝██║░╚═╝░██║███████╗██║░░██║╚█████╔╝
//╚═╝░░╚══╝░╚═════╝░╚═╝░░░░░╚═╝╚══════╝╚═╝░░╚═╝░╚════╝░");

Console.WriteLine("Olá amiguinho, bem vindo ao jogo de adivinhação");
Console.WriteLine("Eu vou pensar num numero de 1 a 100 e você precisa adivinhar qual é, ok?");

int numeroSorteado = new Random().Next(1, 101);

int resposta = 0;

do
{
    Console.WriteLine("Digite um numero: ");
    resposta = int.Parse(Console.ReadLine()!);

    if (resposta < numeroSorteado)
    {
        Console.WriteLine($"Erroooou, {resposta} é MENOR que o numero que pensei, tente outro numero");
    }
    else if (resposta > numeroSorteado)
    {
        Console.WriteLine($"Erroooou, {resposta} é MAIOR que o numero que pensei, tente outro numero");
    }
    else
    {
        Console.WriteLine($"Parabéns, você acertou o numero que eu pensei é {numeroSorteado}");
    }
}
while (resposta != numeroSorteado);
4 respostas

Oi, Jefferson! Como vai?

Gostei bastante da forma como você montou a abertura do jogo com a arte em texto no Console.WriteLine e também da escolha do do...while, que funciona muito bem nesse desafio porque garante pelo menos uma tentativa antes da verificação final.

Sua lógica de comparar se o número digitado é maior ou menor que o valor sorteado ficou organizada e fácil de acompanhar.

Uma dica interessante para o futuro é usar o método int.TryParse() para validar o que a pessoa digitou e evitar que o programa pare caso ela escreva algo que não seja número Veja este exemplo:


string entrada = Console.ReadLine()!;
if (int.TryParse(entrada, out int numero))
{
    Console.WriteLine($"Voce digitou {numero}");
}
else
{
    Console.WriteLine("Digite apenas numeros.");
}

Esse código verifica se a entrada pode ser convertida em número antes de continuar o programa.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Muito obrigado pela dica Armano,
Vou ler sobre esse metodo hoje e incorporar ele na atividade pra ver em funcionamento.

Boa, já aproveitei e fiz outra versão.
Ficou assim:


//Chegou a hora de você seguir todos os passos realizados durante esta aula e criar um jogo com os conhecimentos adquiridos.

//Neste jogo, o programa gera um número aleatório entre 1 e 100 e o usuário deve adivinhar qual é esse número. 
//O programa utiliza o if-else e switch case para verificar se o número digitado pelo usuário é maior ou menor do que o número gerado pelo programa.

//O programa também utiliza o conceito de laço de repetição do-while para permitir que o usuário faça várias tentativas até acertar o número. 
//Quando o usuário acertar o número, o jogo acaba e o programa exibe uma mensagem indicando que o jogo acabou. 

string jogar = "1";
void menuSuperior()
{
    Console.WriteLine(@"
██████╗░███████╗░██████╗░█████╗░██╗░░░██╗██████╗░██████╗░░█████╗░  
██╔══██╗██╔════╝██╔════╝██╔══██╗██║░░░██║██╔══██╗██╔══██╗██╔══██╗  
██║░░██║█████╗░░╚█████╗░██║░░╚═╝██║░░░██║██████╦╝██████╔╝███████║  
██║░░██║██╔══╝░░░╚═══██╗██║░░██╗██║░░░██║██╔══██╗██╔══██╗██╔══██║  
██████╔╝███████╗██████╔╝╚█████╔╝╚██████╔╝██████╦╝██║░░██║██║░░██║  
╚═════╝░╚══════╝╚═════╝░░╚════╝░░╚═════╝░╚═════╝░╚═╝░░╚═╝╚═╝░░╚═╝  

░█████╗░  ███╗░░██╗██╗░░░██╗███╗░░░███╗███████╗██████╗░░█████╗░
██╔══██╗  ████╗░██║██║░░░██║████╗░████║██╔════╝██╔══██╗██╔══██╗
██║░░██║  ██╔██╗██║██║░░░██║██╔████╔██║█████╗░░██████╔╝██║░░██║
██║░░██║  ██║╚████║██║░░░██║██║╚██╔╝██║██╔══╝░░██╔══██╗██║░░██║
╚█████╔╝  ██║░╚███║╚██████╔╝██║░╚═╝░██║███████╗██║░░██║╚█████╔╝
░╚════╝░  ╚═╝░░╚══╝░╚═════╝░╚═╝░░░░░╚═╝╚══════╝╚═╝░░╚═╝░╚════╝░
    ");
    Console.WriteLine("Bem-vindo ao Jogo de Adivinhação!");
    Console.WriteLine("O computador gerou aleatoriamente um número entre 1 e 100. Tente adivinhar!\n\n");
}
do {
    Console.Clear();
    int numeroAleatorio = new Random().Next(1, 101); //randon serve para gerar um numero aleatorio, o next é para definir o intervalo do numero aleatorio, nesse caso de 1 a 100, e o new é para criar uma nova instancia do random.
    int numeroDigitado = 0;
    menuSuperior();

    do
    {        
        Console.Write("\nDigite um numero: ");
        if (int.TryParse(Console.ReadLine()!, out numeroDigitado))
        {
            if (numeroDigitado < numeroAleatorio)
            {
                Console.Clear();
                menuSuperior();
                Console.WriteLine($"{numeroDigitado} é menor que o número sorteado.");
            }
            else if (numeroDigitado > numeroAleatorio)
            {
                Console.Clear();
                menuSuperior();
                Console.WriteLine($"{numeroDigitado} é maior que o número sorteado.");
            }
        }
        else
        {
            Console.Clear();
            menuSuperior();
            Console.WriteLine("Digite apenas numeros.");
        }
    } while (numeroDigitado != numeroAleatorio);

    Console.WriteLine($"Parabéns, você acertou! O número sorteado era {numeroAleatorio}\n");
    Console.WriteLine("Deseja Jogar novamente?\n");
    Console.Write("Digite 0 para sair, ou qualquer outra tecla para jogar novamente: ");
    jogar = Console.ReadLine()!;

} while (jogar != "0");
solução!

Oi, Jefferson!

Sua nova versão ficou muito bem estruturada e você já aplicou o int.TryParse() corretamente, o que torna o jogo mais robusto e evita erros quando o usuário digita algo inválido.

Parabéns pela evolução do código! Dá para perceber que você já aplicou conceitos de funções, validação de entrada, laços de repetição e geração de números aleatórios de forma consistente.

Fico à disposição!