1
resposta

Carro

cclass ModelarCarro
{
    public string Nome { get; set; }
    public int Velocidade { get; set; }
    public string Cor { get; set; }
    public string Fabricante { get; set; }
    public string Modelo { get; set; }

    private int ano;
    public string AnoErrado { get; set; } = "";
    public int Ano
    {
        get => ano;
        set
        {
            if(value < 1960 || value > 2023)
            {

                AnoErrado = "Ano do modelo errado!";
                

            }
            else
            {
                
                ano = value;
            }
        }
    }

   

    public string  DescricaoDetalhada => $"modelo {Modelo}, que foi fabricado por {Fabricante}, no ano de {ano}";
        
    
   
    public enum EstadoCarro
    {
        Conduzindo,
        Acelerando,
        Freiando,
        Buzinando
    }
    public EstadoCarro carro = EstadoCarro.Conduzindo;

    
   
    
    public  void AcelerarCarro()
    {
        Console.WriteLine("Acelelerando...");
        //carro = EstadoCarro.Conduzindo;
    }
    public  void FrearCarro()
    {
        Console.WriteLine("Pisando no freio");
        //Carrocarro = EstadoCarro.Freiando;
    }
    public void DiminuirVelocidade()
    {
        Console.WriteLine("Diminuindo a velocidade.");
        
    }
    public void BuzinarBuzina()
    {
        Console.WriteLine("Buzinando");
    }
    public  void ManterVelocidade()
    {

    }
}

    ModelarCarro carro = new ModelarCarro();
    carro.Nome = "Fusca";
    carro.Cor = "Amarelo";
    carro.Velocidade = 50;
    carro.Modelo = "Fuscão";
    carro.Fabricante = "Ford";

    Console.WriteLine($"Digite o ano do seu {carro.Nome}");
    
    carro.Ano = int.Parse(Console.ReadLine()!);
    

    Conduzindo();
    LancaDado();


    switch (EstadoCarro.Conduzindo)
    {
        case EstadoCarro.Conduzindo:
            carro.ManterVelocidade();
            LancaDado();
            break;
        case EstadoCarro.Acelerando:
            carro.AcelerarCarro();
            LancaDado();
            break;
        case EstadoCarro.Freiando:
            carro.FrearCarro();
            LancaDado();
            break;
        case EstadoCarro.Buzinando:
           carro.BuzinarBuzina();
            LancaDado();
            break;

    }
    void LancaDado()
    {
        Random random = new Random();
        int numeroSorteado = random.Next(1, 5);
        switch (numeroSorteado)
        {
            case 1:
                SinalAmarelo();
                LancaDado();
                break;
            case 2:
                SinalVermelhor();
                LancaDado();
                break;
            case 3:
                SinalVerde();
                LancaDado();
                break;
            case 4:
                CarroTrancandoRua();
                LancaDado();
                break;
        }
    }
   

    void Conduzindo()
    {
        Console.WriteLine($"\nVocê está dirigindo seu {carro.Nome}, {carro.DescricaoDetalhada}, pela cidade a {carro.Velocidade}km por hora.");
    }
    void SinalAmarelo()
    {
        
        Console.WriteLine("\nVocê avistou o semáfaro logo a frente e viu que está amarelo.");
        Console.WriteLine("\nO que você faz?");
        OpcaoMotorista();
    }
    void SinalVermelhor()
    {
       
        Console.WriteLine("\nVocê observou que o semáfaro ficou vermelho.");
        Console.WriteLine("\nO que você faz?");
        OpcaoMotorista();
    }
    void SinalVerde()
    {
        
        Console.WriteLine("\nO semáfaro ficou verde.");
        Console.WriteLine("\nO que você faz?");
        OpcaoMotorista();
    }
    void CarroTrancandoRua()
    {
       
        Console.WriteLine("\nTem um carro na sua frente que nao está andando.");
        Console.WriteLine("\nO que você faz?");
        OpcaoMotorista();
    }

    void OpcaoMotorista()
    {
        Console.WriteLine("\nPressione 1 para acelerrar.");
        Console.WriteLine("\nPressione 2 para diminuir a velocidade.");
        Console.WriteLine("\nPressione 3 para frear.");
        Console.WriteLine("\nPressione 4 para buzinar.");
        int escolhaDoMotorista = int.Parse(Console.ReadLine()!);
        Console.Clear();
        switch (escolhaDoMotorista)
        {
            case 1: carro.AcelerarCarro();
                break;
            case 2: carro.DiminuirVelocidade();
                break;
            case 3: carro.FrearCarro();
                break;
            case 4: carro.BuzinarBuzina();
                break;
        }
        
    }
1 resposta

Olá, Rafael! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso da orientação a objetos para estruturar o modelo do carro, utilizou muito bem os métodos para simular diferentes ações do motorista e ainda compreendeu a importância das condições e enumerações para organizar os estados possíveis do veículo.

Uma dica interessante para o futuro é aproveitar o enum para atualizar dinamicamente o estado do carro dentro dos métodos. Assim:

public void AcelerarCarro()
{
    Console.WriteLine("Acelerando...");
    carro = EstadoCarro.Acelerando;
}

Isso faz com que o estado do carro seja alterado de forma consistente sempre que uma ação é executada, deixando o fluxo mais realista.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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