public void PartindoAutomatico(CarroPercurso carroPercurso, Listas listas, PercursoCore percursoCore) // TODO ESTUDAR FUNÇÕES LOCAIS E IMPLEMENTAR. DIMINUIR METODO. { double percorreu = 0.0; double cont = 0.; int QtdAbastecimento = 0; int QtdCalibragem = 0; double combustivelgasto = 0.0; Relatorio relatorio = new Relatorio(); // instanciar um relatório para usalo para adicionar alterações durante o percurso relatorio.CarroPercurso = carroPercurso; void CarregarRelatorio() { percursoCore.RegistraQuantidadeDeAbastecimento(QtdAbastecimento, relatorio); percursoCore.RegistrarDistanciaPercorrida(percorreu, relatorio); percursoCore.RegistroQuantidadeDeCalibracoes(QtdCalibragem, relatorio); percursoCore.RegistroDeCombustivelUtilizado(combustivelgasto, relatorio); percursoCore.RegistrandoAlteracoesClimaticas(percorreu, carroPercurso.Percurso.Clima, listas); } while (carroPercurso.Percurso.DistanciaAlterada > 0.0) { percursoCore.CalculandoClimaEPneu(carroPercurso.Percurso, carroPercurso.Veiculo); if (carroPercurso.Veiculo.TipoCarro == "FLEX" && carroPercurso.Veiculo.CombustivelAlcool == 0.0 && carroPercurso.Veiculo.CombustivelGasolina == 0.0) // tabela verdade { Console.WriteLine("O VEICULO ESTA SEM COMBUSTIVEL DESEJA ABASTECER(S/N)"); string queroabastecer = Validacoes.SimOuNao(Console.ReadLine().ToUpper()); if (queroabastecer == "S") { AbastecerOuCompletarAlcool(carroPercurso.Veiculo); AbastecerOuCompletaGasolina(carroPercurso.Veiculo); QtdAbastecimento++; } else if (queroabastecer == "N") { Console.WriteLine("VEICULO INCAPAZ DE PROSSEGUIR VIAGEM"); CarregarRelatorio(); return; } if (carroPercurso.Veiculo.StatusPneu == 0) { Console.WriteLine("VOCÊ PRECISA CALIBRAR O PNEU PARA PROSSEGUIR VIAGEM\n DESEJA CALIBRAR (S/N) "); string decidindo = Validacoes.SimOuNao(Console.ReadLine().ToUpper()); if (decidindo == "S") { CalibrarPneu(carroPercurso.Veiculo); QtdCalibragem++; } else { Console.WriteLine("VEICULO INCAPAZ DE PROSSEGUIR VIAGEM"); CarregarRelatorio(); return; } } } else if (carroPercurso.Veiculo.TipoCarro == "GASOLINA" && carroPercurso.Veiculo.CombustivelGasolina == 0.0) // tabela verdade { Console.WriteLine("O VEICULO ESTA SEM COMBUSTIVEL DESEJA ABASTECER(S/N)"); string queroabastecer = Validacoes.SimOuNao(Console.ReadLine().ToUpper()); if (queroabastecer == "S") { AbastecerOuCompletaGasolina(carroPercurso.Veiculo); QtdAbastecimento++; } else if (queroabastecer == "N") { Console.WriteLine("VEICULO INCAPAZ DE PROSSEGUIR VIAGEM"); CarregarRelatorio(); break; } } if (carroPercurso.Veiculo.StatusPneu == 0) { Console.WriteLine("VOCÊ PRECISA CALIBRAR O PNEU PARA PROSSEGUIR VIAGEM\n DESEJA CALIBRAR (S/N) "); string decidindo = Validacoes.SimOuNao(Console.ReadLine().ToUpper()); if (decidindo == "S") { CalibrarPneu(carroPercurso.Veiculo); QtdCalibragem++; } else { Console.WriteLine("VEICULO INCAPAZ DE PROSSEGUIR VIAGEM"); CarregarRelatorio(); break; } } if (carroPercurso.Veiculo.TipoCarro == "ALCOOL" && carroPercurso.Veiculo.CombustivelAlcool == 0.0) // tabela verdade { Console.WriteLine("O VEICULO ESTA SEM COMBUSTIVEL DESEJA ABASTECER(S/N)"); string queroabastecer = Validacoes.SimOuNao(Console.ReadLine().ToUpper()); if (queroabastecer == "S") { AbastecerOuCompletarAlcool(carroPercurso.Veiculo); QtdAbastecimento++; } else if (queroabastecer == "N") { Console.WriteLine("VEICULO INCAPAZ DE PROSSEGUIR VIAGEM"); CarregarRelatorio(); return; } } if (carroPercurso.Veiculo.StatusPneu == 0) { Console.WriteLine("VOCÊ PRECISA CALIBRAR O PNEU PARA PROSSEGUIR VIAGEM\n DESEJA CALIBRAR (S/N) "); string decidindo = Validacoes.SimOuNao(Console.ReadLine().ToUpper()); if (decidindo == "S") { CalibrarPneu(carroPercurso.Veiculo); QtdAbastecimento++; } else { Console.WriteLine("VEICULO INCAPAZ DE PROSSEGUIR VIAGEM"); CarregarRelatorio(); return; } } carroPercurso.Percurso.DistanciaAlterada -= 0.1; if (carroPercurso.Veiculo.TipoCarro == "FLEX" || carroPercurso.Veiculo.TipoCarro == "ALCOOL") { carroPercurso.Veiculo.CombustivelAlcool -= 0.1 / carroPercurso.Veiculo.AutonomiaAlcoolVariando; combustivelgasto += 0.1 / carroPercurso.Veiculo.AutonomiaAlcoolVariando; } if (carroPercurso.Veiculo.TipoCarro == "FLEX" || carroPercurso.Veiculo.TipoCarro == "GASOLINA") { carroPercurso.Veiculo.CombustivelGasolina -= 0.1 / carroPercurso.Veiculo.AutonomiaGasolinaVariando; combustivelgasto += 0.1 / carroPercurso.Veiculo.AutonomiaGasolinaVariando; } percorreu += 0.1; cont += 0.1; // todo aumentar cont ==100 valor para 100 depois if (cont >= 1.0) { Console.WriteLine("VOCÊ PERCORREU 100 KM"); percursoCore.VariacaoDoClima(carroPercurso.Percurso); percursoCore.RegistrandoAlteracoesClimaticas(percorreu, carroPercurso.Percurso.Clima, listas); percursoCore.Descalibrar(carroPercurso.Veiculo); cont = 0.0; Console.ReadKey(); CarregarRelatorio(); // TODO CARRO PERCURSO FICA NULO listas.Relatorios.Add(relatorio); Console.WriteLine("VIAGEM CONCLUIDA COM SUCESSO!\nOBRIGADO!"); Console.ReadLine(); return; } } }
public void PartindoManual(PercursoCore percursocore, Listas listas, CarroPercurso carroPercurso) { double percorreu = 0.0; int QtdAbastecimento = 0; int QtdCalibragem = 0; double combustivelgasto = 0.0; Relatorio relatorio = new Relatorio(); void CarregarRelatorio() { percursocore.RegistraQuantidadeDeAbastecimento(QtdAbastecimento, relatorio); percursocore.RegistrarDistanciaPercorrida(percorreu, relatorio); percursocore.RegistroQuantidadeDeCalibracoes(QtdCalibragem, relatorio); percursocore.RegistroDeCombustivelUtilizado(combustivelgasto, relatorio); percursocore.RegistrandoAlteracoesClimaticas(percorreu, carroPercurso.Percurso.Clima, listas); } while (carroPercurso.Percurso.DistanciaAlterada > 0.0) { Console.WriteLine("QUANTOS QUILÔMETROS VOCÊ DESEJA PERCORRER?"); double dirigindomanual = Validacoes.ValidarDouble(Console.ReadLine()); for (int i = 1; i <= dirigindomanual; i++) { percursocore.CalculandoClimaEPneu(carroPercurso.Percurso, carroPercurso.Veiculo); if (carroPercurso.Veiculo.TipoCarro == "FLEX" && carroPercurso.Veiculo.CombustivelAlcool == 0.0 && carroPercurso.Veiculo.CombustivelGasolina == 0.0) { Console.WriteLine("O VEICULO ESTA SEM COMBUSTIVEL DESEJA ABASTECER(S/N)"); string queroabastecer = Validacoes.SimOuNao(Console.ReadLine().ToUpper()); if (queroabastecer == "S") { AbastecerOuCompletarAlcool(carroPercurso.Veiculo); AbastecerOuCompletaGasolina(carroPercurso.Veiculo); QtdAbastecimento++; } else if (queroabastecer == "N") { Console.WriteLine("VEICULO INCAPAZ DE PROSSEGUIR VIAGEM"); CarregarRelatorio(); break; } if (carroPercurso.Veiculo.StatusPneu == 0) { Console.WriteLine("VOCÊ PRECISA CALIBRAR O PNEU PARA PROSSEGUIR VIAGEM\n DESEJA CALIBRAR (S/N) "); string decidindo = Validacoes.SimOuNao(Console.ReadLine().ToUpper()); if (decidindo == "S") { CalibrarPneu(carroPercurso.Veiculo); QtdCalibragem++; } else { Console.WriteLine("VEICULO INCAPAZ DE PROSSEGUIR VIAGEM"); CarregarRelatorio(); break; } } } else if (carroPercurso.Veiculo.TipoCarro == "GASOLINA" && carroPercurso.Veiculo.CombustivelGasolina == 0.0) // tabela verdade { Console.WriteLine("O VEICULO ESTA SEM COMBUSTIVEL DESEJA ABASTECER(S/N)"); string decidindo = Validacoes.SimOuNao(Console.ReadLine().ToUpper()); if (decidindo == "S") { AbastecerOuCompletaGasolina(carroPercurso.Veiculo); QtdAbastecimento++; } else if (decidindo == "N") { Console.WriteLine("VEICULO INCAPAZ DE PROSSEGUIR VIAGEM"); CarregarRelatorio(); break; } } if (carroPercurso.Veiculo.StatusPneu == 0) { Console.WriteLine("VOCÊ PRECISA CALIBRAR O PNEU PARA PROSSEGUIR VIAGEM\n DESEJA CALIBRAR (S/N) "); string quero = Validacoes.SimOuNao(Console.ReadLine().ToUpper()); if (quero == "S") { CalibrarPneu(carroPercurso.Veiculo); QtdCalibragem++; } else { Console.WriteLine("VEICULO INCAPAZ DE PROSSEGUIR VIAGEM"); CarregarRelatorio(); break; } } if (carroPercurso.Veiculo.TipoCarro == "ALCOOL" && carroPercurso.Veiculo.CombustivelAlcool == 0.0) // tabela verdade { Console.WriteLine("O VEICULO ESTA SEM COMBUSTIVEL DESEJA ABASTECER(S/N)"); string decidindo = Validacoes.SimOuNao(Console.ReadLine().ToUpper()); if (decidindo == "S") { AbastecerOuCompletarAlcool(carroPercurso.Veiculo); QtdAbastecimento++; } else if (decidindo == "N") { Console.WriteLine("VEICULO INCAPAZ DE PROSSEGUIR VIAGEM"); CarregarRelatorio(); break; } } if (carroPercurso.Veiculo.StatusPneu == 0) { Console.WriteLine("VOCÊ PRECISA CALIBRAR O PNEU PARA PROSSEGUIR VIAGEM\n DESEJA CALIBRAR (S/N) "); string x = Validacoes.SimOuNao(Console.ReadLine().ToUpper()); if (x == "S") { CalibrarPneu(carroPercurso.Veiculo); QtdAbastecimento++; } else { Console.WriteLine("VEICULO INCAPAZ DE PROSSEGUIR VIAGEM"); CarregarRelatorio(); break; } } if (carroPercurso.Percurso.DistanciaAlterada <= 0.0) { break; } carroPercurso.Percurso.DistanciaAlterada -= 1.0; percorreu++; if (carroPercurso.Veiculo.TipoCarro == "FLEX" || carroPercurso.Veiculo.TipoCarro == "ALCOOL") { carroPercurso.Veiculo.CombustivelAlcool -= 1.0 / carroPercurso.Veiculo.AutonomiaAlcoolVariando; combustivelgasto += 1.0 / carroPercurso.Veiculo.AutonomiaAlcoolVariando; } if (carroPercurso.Veiculo.TipoCarro == "FLEX" || carroPercurso.Veiculo.TipoCarro == "GASOLINA") { carroPercurso.Veiculo.CombustivelGasolina -= 1.0 / carroPercurso.Veiculo.AutonomiaGasolinaVariando; combustivelgasto += 1.0 / carroPercurso.Veiculo.AutonomiaGasolinaVariando; } if (percorreu % 100.0 == 0 && percorreu > 0) // todo saber pq esta contando o zero { Console.WriteLine("VOCÊ PERCORREU 100 KM"); percursocore.CalculandoClimaEPneu(carroPercurso.Percurso, carroPercurso.Veiculo); percursocore.RegistrandoAlteracoesClimaticas(percorreu, carroPercurso.Percurso.Clima, listas); percursocore.Descalibrar(carroPercurso.Veiculo); } } if (carroPercurso.Percurso.DistanciaAlterada <= 0.0) { break; } Console.Write($" ATÉ AGORA VOCÊ PERCORREU {percorreu.ToString("F2", CultureInfo.InvariantCulture)} KM !\nDESEJA CONTINUAR A VIAGEM? (S/N): "); string opcao = Validacoes.SimOuNao(Console.ReadLine()); if (opcao != "S") { return; } } CarregarRelatorio(); listas.Relatorios.Add(relatorio); Console.WriteLine("VIAGEM CONCLUIDA COM SUCESSO!\nOBRIGADO!"); }