public CarroPercurso EscolherCarroPercurso(Listas listas) // ACESSAR LISTA DE VEICULOS E VIAGENS como passar parametro somente dentro do metodo partindo automatico { CarroPercurso carroPercurso = null; if (listas.VeiculosEViagens.Count > 0) { Console.WriteLine("ESCOLHA UM CODIGO PARA ESTAR INICIANDO: "); ExibirVeiculosEViagens(listas); Console.WriteLine("INFORME O CÓDIGO DA VIAGEM"); int codigo = Validacoes.ValidarInteiros(Console.ReadLine()); carroPercurso = listas.VeiculosEViagens.Find(p => p.CodigoId == codigo); // todo perguntar pq não foi necessario utilizar o apelido "p " neste caso } return(carroPercurso); }
//estarei colocando dentro da lista public void EscolhendoCarroEViagem(Listas listas, VeiculoCore veiculoCore) { if (listas.Veiculos.Count > 0) { Veiculo veiculo = veiculoCore.EscolhendoCarroParaDirigir(listas); CarroPercurso carroPercurso = new CarroPercurso(); if (listas.Viagens.Count > 0) { Console.WriteLine("INFORME O CODIGO DA VIAGEM QUE DESEJA DIRIGIR:"); MostrarViagens(listas); int codigo = Validacoes.ValidarInteiros(Console.ReadLine()); Percurso percurso = listas.Viagens.Find(x => x.CodigoViagem == codigo); carroPercurso.Veiculo = veiculo; carroPercurso.Percurso = percurso; listas.VeiculosEViagens.Add(carroPercurso); // esperado dois parametros conforme construtor criado na classe carro percurso. listas.Veiculos.Remove(veiculo); listas.Viagens.Remove(percurso); Console.WriteLine("\nVIAGEM REGISTRADA COM SUCESSO! \nAGUARDANDO PRÓXIMOS PASSOS..."); Console.ReadKey(); } else { Console.WriteLine("VOCÊ PRECISA INSERIR UMA VIAGEM PARA DIRIGIR"); Console.ReadKey(); } } else { Console.WriteLine("CADASTRE UM VEICULO PARA DIRIGIR.\nVOCÊ NÃO CADASTROU NENHUM."); Console.ReadKey(); } }
internal static void EscolherPartida(VeiculoCore veiculoCore, CarroPercurso carroPercurso) { Console.WriteLine("TEMOS DUAS MANEIRAS DE PROSSEGUIR ESSA VIAGEM:\n[A]-AUTOMATICO\n[B]-PROCEDURAL\n\nCOMO DESEJA PROSSEGUIR?\n\n [ESC] - SAIR"); while (true) { Console.Clear(); ConsoleKeyInfo tecla = Console.ReadKey(); // armazena uma tecla switch (tecla.Key) { case ConsoleKey.Escape: Console.WriteLine("\n OOBRIGADO! PRESSIONE ENTER PARA SAIR.."); Console.ReadKey(); Environment.Exit(0); break; case ConsoleKey.A: break; } } ; }
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!"); }
internal static void SubMenuViagem(Listas listas, PercursoCore percursoCore, VeiculoCore veiculoCore) { Console.WriteLine("====================INFORMAÇÕES VIAGEM====================\\n\n"); Console.WriteLine(" [A] - CADASTRAR VIAGEM ");// adicionar viagem na lista de viagens Console.WriteLine(" [B] - EXIBIR VIAGENS "); Console.WriteLine(" [C] - PLANEJAR VIAGEM \n"); Console.WriteLine(" [D] - VIAJAR"); Console.WriteLine(" [E] - EXIBIR RELATÓRIOS\n"); Console.WriteLine(" [ESC] - SAIR"); while (true) { ConsoleKeyInfo tecla = Console.ReadKey(); // armazena uma tecla switch (tecla.Key) { case ConsoleKey.Escape: Console.WriteLine("\n OOBRIGADO! PRESSIONE ENTER PARA SAIR.."); Console.ReadKey(); Environment.Exit(0); break; case ConsoleKey.A: // registra e adiciona uma viagem dentro da lista Console.WriteLine("VOCÊ PODE CADASTRAR MAIS DE UMA VIAGEM.\nQUANTAS VIAGENS VOCÊ QUER CADASTRAR?"); int x = Validacoes.ValidarInteiros(Console.ReadLine()); for (int i = 1; i <= x; i++) { Console.WriteLine($"DIGITE INFORMAÇÕES DA {i}º VIAGEM "); listas.Viagens.Add(percursoCore.RegistrarViagem()); } break; case ConsoleKey.B: percursoCore.MostrarViagens(listas); // EXIBIR MINHA LISTA DE VIAGENS CADASTRADAS Console.ReadKey(); break; case ConsoleKey.C: percursoCore.EscolhendoCarroEViagem(listas, veiculoCore); // escolher carro pela placa e escolher viagem CarroPercurso carroPercurso = percursoCore.EscolherCarroPercurso(listas); // inicar a viagem automatico ou manual veiculoCore.PartindoAutomatico(carroPercurso, listas, percursoCore); Console.ReadKey(); break; case ConsoleKey.D: break; case ConsoleKey.E: listas.VeiculosEViagens.ForEach(s => Console.WriteLine(s)); Console.WriteLine("\n\nESCOLHA E DIGITE UMA VIAGEM PARAEXIBIR RELATÓRIO:"); int codigo = Validacoes.ValidarInteiros(Console.ReadLine()); Relatorio relatorio = listas.Relatorios.Where(s => s.CarroPercurso.CodigoId == codigo).FirstOrDefault(); Console.Clear(); if (relatorio == null) { Console.WriteLine("NÃO EXISTE RELATÓRIOS!\nAPERTE QUALQUER TECLA PARA VOLTAR"); Console.ReadKey(); } else if (listas.Relatorios.Count(s => s.CarroPercurso.CodigoId == codigo) > 1) { Console.WriteLine(" EXISTE MAIS DE UM RELATÓRIO\nVIAGEM CANCELADA"); foreach (Relatorio s in listas.Relatorios) { if (s.CarroPercurso.CodigoId == codigo) { Console.WriteLine(s); } } } else { Console.WriteLine(relatorio); } break; default: Console.Write("\nOBRIGADO, PRESSIONE QUALQUER TECLA PARA REINICIAR"); Console.ReadKey(); Menu.MenuPrincipal(veiculoCore, listas, percursoCore); break; } } }