Beispiel #1
0
        } //METODO LOCAL ONDE VOU REPETIR A VALIDAÇÃO SE TEM COMBUSTIVEL E SE HÁ O ESTADO DO PNEU DIFERENTE DE ZERO (PARA CARRO PADRAO)

        public void DirigirNaViagemAutomatico(AgenciaDeViagens agencia) // PERCORRER A VIAGEM COM VEICULO DE MODO AUTOMATICO, ONDE VAI ATÉ ONDE O COMBUSTIVEL ACABAR
        {
            Relatorio relatorio = new Relatorio(this);

            // VARIAVEIS AUXILIARES PARA NÃO ALTERAR AS VARIAVEIS DO CARRO
            _Veiculo.KmPorAlcool   = _Veiculo.KmPorAlcoolAtual;
            _Veiculo.KmPorGasolina = _Veiculo.KmPorGasolinaAtual;
            _Veiculo.EstadoPneu    = _Veiculo.EstadoPneuAtual;
            _Viagem.Clima          = _Viagem.ClimaAtual;

            double AutonomiaA;
            double AutonomiaG;
            double cont = 0.0;

            Console.Clear();
            //CADA TIPO DE COMBUSTIVEL TEM SEU MODO DE DIRIGIR POR CONTA DO GASTOS DIFERENTES EM SEU TANQUE
            if (_Veiculo.TipoCombustivel == "gasolina")
            {
                AutenticaoParaBViagemPadrao(_Veiculo.LitrosGasolina, relatorio, agencia);
                if (opcao2 == "N")
                {
                    return;
                }
                do
                {
                    AutonomiaG                 = Calculo.CalcularAutonomiaPadrao(_Viagem.Clima, _Veiculo, _Veiculo.KmPorGasolinaAtual);
                    _Viagem.Distancia          = Math.Round((_Viagem.Distancia - 0.1), 2);
                    relatorio.KmPercorrido     = Math.Round((relatorio.KmPercorrido + 0.1), 2);
                    _Veiculo.LitrosGasolina    = Math.Round((_Veiculo.LitrosGasolina - (0.1 / AutonomiaG)), 2);
                    relatorio.LitrosConsumidos = Math.Round((relatorio.LitrosConsumidos + (0.1 / AutonomiaG)), 2);
                    if (_Veiculo.LitrosGasolina <= 0.0)
                    {
                        _Veiculo.LitrosGasolina = 0.0;
                        AutenticaoParaBViagemPadrao(_Veiculo.LitrosGasolina, relatorio, agencia); // CASO PARE E NÃO COMPLETOU
                        if (opcao2 == "N")
                        {
                            return;
                        }
                    }
                    cont = Math.Round((cont + 0.1), 1);
                    if (cont == 100)
                    {
                        _Veiculo.AlteracaoPneu();
                        relatorio.DesgasteDoPneuEvento(relatorio.KmPercorrido, _Veiculo.EstadoPneu);
                        _Viagem.AlteracaoClima();
                        relatorio.MudancaClimaticaDoEvento(relatorio.KmPercorrido, _Viagem.Clima);
                        AutenticaoParaBViagemPadrao(_Veiculo.LitrosGasolina, relatorio, agencia);
                        if (opcao2 == "N")
                        {
                            return;
                        }
                        cont = 0;
                    }
                } while (_Viagem.Distancia > 0);
                Console.WriteLine("Você completou a viagem!");
                Console.WriteLine("Aperte qualquer coisa para voltar ao menu principal");
                Console.ReadKey();

                agencia.Relatorios.Add(relatorio);
            }

            else if (_Veiculo.TipoCombustivel == "alcool")
            {
                AutenticaoParaBViagemPadrao(_Veiculo.LitrosAlcool, relatorio, agencia);
                if (opcao2 == "N")
                {
                    return;
                }
                do
                {
                    AutonomiaA                 = Calculo.CalcularAutonomiaPadrao(_Viagem.Clima, _Veiculo, _Veiculo.KmPorAlcoolAtual);
                    _Viagem.Distancia          = Math.Round((_Viagem.Distancia - 0.1), 2);
                    relatorio.KmPercorrido     = Math.Round((relatorio.KmPercorrido + 0.1), 2);
                    _Veiculo.LitrosAlcool      = Math.Round((_Veiculo.KmPorAlcool - (0.1 / AutonomiaA)), 2);
                    relatorio.LitrosConsumidos = Math.Round((relatorio.LitrosConsumidos + (0.1 / AutonomiaA)), 2);
                    if (_Veiculo.LitrosAlcool <= 0.0)
                    {
                        _Veiculo.LitrosAlcool = 0.0;
                        AutenticaoParaBViagemPadrao(_Veiculo.LitrosAlcool, relatorio, agencia);
                        if (opcao2 == "N")
                        {
                            return;
                        }
                    }
                    cont = Math.Round((cont + 0.1), 1);
                    if (cont == 100)
                    {
                        _Veiculo.AlteracaoPneu();
                        relatorio.DesgasteDoPneuEvento(relatorio.KmPercorrido, _Veiculo.EstadoPneu);
                        _Viagem.AlteracaoClima();
                        relatorio.MudancaClimaticaDoEvento(relatorio.KmPercorrido, _Viagem.Clima);
                        AutenticaoParaBViagemPadrao(_Veiculo.LitrosAlcool, relatorio, agencia);
                        if (opcao2 == "N")
                        {
                            return;
                        }
                        cont = 0;
                    }
                } while (_Viagem.Distancia > 0);

                agencia.Relatorios.Add(relatorio);
                Console.WriteLine("Você completou a viagem!");
                Console.WriteLine("Aperte qualquer coisa para voltar ao menu principal");
                Console.ReadKey();
            }

            else if (_Veiculo.Flex)
            {
                AutenticaoParaBViagemFlex(relatorio, agencia);
                if (opcao2 == "N")
                {
                    return;
                }
                do
                {
                    AutonomiaA             = Calculo.CalcularAutonomiaFlexA(_Viagem.Clima, _Veiculo);
                    AutonomiaG             = Calculo.CalcularAutonomiaFlexG(_Viagem.Clima, _Veiculo);
                    _Viagem.Distancia      = Math.Round((_Viagem.Distancia - 0.1), 2);
                    relatorio.KmPercorrido = Math.Round((relatorio.KmPercorrido + 0.1), 2);
                    if (_Veiculo.LitrosAlcool > 0.0)
                    {
                        _Veiculo.LitrosAlcool = Math.Round((_Veiculo.LitrosAlcool - (0.1 / AutonomiaA)), 2);
                    }
                    relatorio.LitrosConsumidos = Math.Round((relatorio.LitrosConsumidos + (0.1 / AutonomiaA)), 2);
                    if (_Veiculo.LitrosAlcool <= 0.0)
                    {
                        _Veiculo.LitrosAlcool      = 0.0;
                        _Veiculo.LitrosGasolina    = Math.Round((_Veiculo.LitrosGasolina - (0.1 / AutonomiaG)), 2);
                        relatorio.LitrosConsumidos = Math.Round((relatorio.LitrosConsumidos + (0.1 / AutonomiaG)), 2);
                        AutenticaoParaBViagemFlex(relatorio, agencia);
                        if (opcao2 == "N")
                        {
                            return;
                        }
                    }
                    if (_Veiculo.LitrosAlcool <= 0.0 && _Veiculo.LitrosGasolina <= 0.0)
                    {
                        _Veiculo.LitrosGasolina = 0.0;
                        _Veiculo.LitrosAlcool   = 0.0;
                        AutenticaoParaBViagemFlex(relatorio, agencia);
                        if (opcao2 == "N")
                        {
                            return;
                        }
                    }
                    cont = Math.Round((cont + 0.1), 1);
                    if (cont == 100)
                    {
                        _Veiculo.AlteracaoPneu();
                        relatorio.DesgasteDoPneuEvento(relatorio.KmPercorrido, _Veiculo.EstadoPneu);
                        _Viagem.AlteracaoClima();
                        relatorio.MudancaClimaticaDoEvento(relatorio.KmPercorrido, _Viagem.Clima);
                        AutenticaoParaBViagemPadrao(_Veiculo.LitrosAlcool, relatorio, agencia);
                        if (opcao2 == "N")
                        {
                            return;
                        }
                        cont = 0;
                    }
                } while (_Viagem.Distancia > 0);

                agencia.Relatorios.Add(relatorio);
                Console.WriteLine("Você completou a viagem!");
                Console.WriteLine("Aperte qualquer coisa para voltar ao menu principal");
                Console.ReadKey();
            }
        }