/*************************************** Simulation Section **************************************************** * 5. Introducir el tiempo de ciclo de simulación (en minutos) y avanzar la simulación ciclo a ciclo. * 6. Reiniciar la simulación. * 7. Introducir el tiempo de ciclo (en minutos) y la duración de la simulación (en minutos) y * avanzar de forma automática (un ciclo cada segundo). La aplicación debe permitir pausar y * reanudar la simulación en cualquier momento. * 8. Identificar visualmente, en cada ciclo, el nivel de ocupación del sector. ****************************************************************************************************************/ private void AvanzarSimulacion_Click(object sender, EventArgs e) { try { string cycleTime = cycleTimeInput.Text; int time = Convert.ToInt32(cycleTime); int flightsInDestination = 0; //Creates a copy of myFlightList FlightsList tempFlightsList = new FlightsList(); tempFlightsList = myFlightsList.Copy(); //Saves simulation to the stack FlightStack.Push(tempFlightsList); //Simulates a Cycle and updates position in Picturebox myFlightsList.FlightsSimulation(time); //0.7.Helper: Function to print the sector occupation in to DGV loadSectorInfo(); panel1.Invalidate(); for (int i = 0; i < myFlightsList.Number; i++) { aircraftVector[i].Location = new Point((int)myFlightsList.Flights[i].PositionX, (int)myFlightsList.Flights[i].PositionY); if (myFlightsList.Flights[i].Simulator(time) == -1) { flightsInDestination++; } } //Shows a message if at least one flight has arrived if (flightsInDestination > 0) { MessageBox.Show(flightsInDestination + " vuelos han llegado con éxito a su destino, para más información consulte la tabla de información de vuelos.", "Hay vuelos que han llegado a su destino.", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (FormatException) { MessageBox.Show("Asegurece de insertar un tiempo de simulación y que este sea de valor entero.", "Tiempo de simulación nulo", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private static void Main(string[] args) { FlightsList myFlightList = new FlightsList(); Sector mySector = new Sector(); //Project title Console.WriteLine("SIMULADOR DE TRAFICO AEREO - GRUPO 6"); //Condition variable if the files loads bool flightLoaded = false; bool sectorsLoaded = false; //Loading the lists for work w/it int resultFlights = myFlightList.LoadFlightsFile(fileUserFlights); int resultSector = mySector.LoadSectorFile(fileUserSector); //Check if Flight File is correctly loaded if (resultFlights == -1) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Fichero de vuelos no se ha encontrado."); Console.ResetColor(); } else { if (resultFlights == -2) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Fichero de vuelos no tiene un formato válido."); Console.ResetColor(); } else { //Shows that the file is correctly readed Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Fichero de vuelos leído correctamente"); //File Loaded flightLoaded = true; //Reset the color Console.ResetColor(); } } //Check if Sectors File is correctly loaded if (resultSector == -1) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Fichero de sectores no se ha encontrado."); Console.ResetColor(); } else { if (resultSector == -2) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Fichero de sectores no tiene un formato válido."); Console.ResetColor(); } else { //Indica que el archivo se ha leido correctamente Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Fichero de sectores leído correctamente"); //Variable fichero cargado sectorsLoaded = true; //Limpia la consola para que el usuario pueda continuar con la siguiente instruccion Console.ResetColor(); } } //If both have been loaded if ((flightLoaded == true) && (sectorsLoaded == true)) { //Se muestran las opciones al usuario Welcome(); bool exit = false; while (!exit) { switch (Console.ReadLine()) { //MOSTRAS EMPRESAS POR PANTALLA case "1": { //Muestra la lista de vuelos myFlightList.ShowConsoleFlights(); } break; case "2": { //Shows the sector's traffic mySector.GetTraffic(myFlightList); } break; case "3": { Console.Write("Escribe el tiempo de ciclo:"); try { int inputUserCicle = Convert.ToInt32(Console.ReadLine()); myFlightList.FlightsSimulation(inputUserCicle); } catch (FormatException) { Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Error de formato en la entrada, volviendo al menú principal"); Console.ResetColor(); } } break; case "4": { myFlightList.SaveList(fileNameExport); exit = true; } break; } Console.WriteLine(); Welcome(); } } else { if ((flightLoaded != true) && (sectorsLoaded != true)) { Console.WriteLine("\nLos ficheros no se han podido leer, el simulador no puede abrirse sin datos."); } else { if ((flightLoaded != true) || (sectorsLoaded != true)) { Console.WriteLine("\nEl simulador no puede funcionar con alguno de los dos ficheros comprometido."); } else { Console.WriteLine("\nError inesperado"); } } Console.Write("Presione una tecla para cerrar el programa....."); Console.ReadKey(); } }