} //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(); } }