1
resposta

[Projeto] Sistema de recompensas

using System.Globalization;

string cupomRecebido, recompensa;
List<string> cuponsDoSistema = new List<string> { "dobrar", "curar", "ouro", "especial"};

void SistemaDeRecompensa ()
{
    Console.WriteLine("Bem-vindo ao Sistema de Recompensas!\n");
    Console.WriteLine("Insira seu cupom e aproveite seus benefícios.");
    Console.WriteLine("(DOBRAR, CURAR, OURO, ESPECIAL):");
    cupomRecebido = ValidarString();

    // verificando se o cupom informado existe no sistema
    if (cuponsDoSistema.Contains(cupomRecebido))
    {
        recompensa = RecompensasDisposniveis(cupomRecebido);
        Console.WriteLine("\n" + recompensa);
    }
    else
    {
        Console.WriteLine("O cupom informado é inválido.");
        Thread.Sleep(3000);
        Console.Clear();
        SistemaDeRecompensa();
    }
}

// função para selecionar a recompensa de acordo com o cupom informado
string RecompensasDisposniveis (string cupom)
{
    string recompensa = cupom switch
    {
        "dobrar" => "Você recebeu 2x EXP por 1 hora.",
        "curar" => "Você recebeu 1 poção de cura.",
        "ouro" => "Você recebeu 1000 moedas de ouro.",
        "especial" => "Você desbloqueou um item lendário.",
        _ => throw new InvalidOperationException("Valor inesperado recebido.")
    };

    return recompensa;
}

// função para validar string
string ValidarString()
{
    while (true)
    {
        string entrada = Console.ReadLine()!;

        if (!string.IsNullOrWhiteSpace(entrada))
        {
            return entrada.ToLower();
        }

        Console.WriteLine("Cupom inválido, insira um cupom válido:");
    }
}

SistemaDeRecompensa();
1 resposta

Oi, José! Como vai?

Gostei bastante de como você estruturou o sistema, separando bem as responsabilidades, principalmente com a função ValidarString e o uso do switch para definir as recompensas. Isso deixa o código mais organizado e fácil de manter. Também chama atenção o uso de List<string> com Contains, que ajuda a validar os cupons de forma simples e eficiente.

Uma dica interessante para o futuro é usar o método TryParse quando precisar validar entradas numéricas sem quebrar o programa. Veja este exemplo:


int numero;
bool valido = int.TryParse(Console.ReadLine(), out numero);

if (valido)
{
    Console.WriteLine("Numero valido: " + numero);
}
else
{
    Console.WriteLine("Entrada invalida");
}

Esse código tenta converter o valor digitado para número inteiro sem gerar erro, garantindo mais segurança na entrada de dados.

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