예제 #1
0
        /*************************************** 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);
            }
        }
예제 #2
0
        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();
            }
        }