Ejemplo n.º 1
0
 public void take_passenger(CPassenger passenger)
 {         //приём пассажира на борт
     if (landed)
     {     //самолёт не в воздухе
         if (passengers[passenger.GetSeat()] == null)
         { //место свободно
             passengers[passenger.GetSeat()] = passenger;
             num_engaged++;
         }
         else
         { //место занято
             _Exception exc = new _Exception("Вы сели на моё место!");
             throw (exc);
         }
     }
     else
     { //самолёт в воздухе
         _Exception exc = new _Exception("Супермена чтоли собрался сажать?");
         throw (exc);
     }
 }
Ejemplo n.º 2
0
        private void Modelling()
        { //здесь будет моделирование
            try
            {
                Invoke(new state_OutputDelegate(state_out), new object[] { false, "" });
                for (int i = 0; i < planescount; i++)
                { //самолёты
                    string label_text = String.Format("Самолет {0}: Рейс:", i);

                    if (planes[i].GetFlight() == null)
                    { //если полет не задан
                        label_text += String.Format(" не задан\r\n");

                        int PortNext = rand.Next(planescount);
                        while (planes[i].GetPort() == airports[PortNext])
                        { //проверка на случай, если место прибытия и место отправления - один и тот же аэропорт
                            PortNext = rand.Next(planescount);
                        }
                        DateTime takeoff = globaltime.AddHours(3);
                        DateTime landing = globaltime.AddMinutes(360 + rand.Next(360));

                        //создаем новый полет и назначаем его
                        CFlight flight = new CFlight(flight_no.ToString(), planes[i].GetPort(), airports[PortNext], takeoff, landing);
                        flight_no++;

                        Random rand_ = new Random();
                        for (int index = 0; index < seats; index++)
                        { //генерация билетов и пассажиров
                            if (rand_.Next(100) < rand_.Next(minprob, maxprob))
                            {
                                CPassenger pass = new CPassenger(flight, index);
                                planes[i].take_passenger(pass);
                            }
                        }

                        planes[i].setflight(flight);
                    }
                    else
                    { //если полёт уже задан
                        if (globaltime.AddMinutes(-10) < planes[i].GetFlight().GetLanding())
                        {
                            planes[i].GetFlight().GetEnd().busy = true;
                        }

                        label_text += String.Format("\r\nИмя: {0}, Место отправления: {1}, Место прибытия: {2}\r\nВремя отправления: {3}, Время прибытия: {4}\r\nСтатус: ",
                                                    planes[i].GetFlight().GetName(), planes[i].GetFlight().GetStart().GetName(), planes[i].GetFlight().GetEnd().GetName(),
                                                    planes[i].GetFlight().GetTakeOff(), planes[i].GetFlight().GetLanding()); //ойжуть

                        if (planes[i].IsLanded())
                        {
                            label_text += String.Format("В аэропорту {0}", planes[i].GetPort().GetName());
                        }
                        else
                        {
                            label_text += "В воздухе";
                        }

                        if (planes[i].GetFlight().TakingOff(globaltime))
                        {
                            planes[i].Takeoff();
                            planes[i].GetFlight().GetEnd().SetLandingNext(planes[i]);
                            label_text += " (Взлёт)";
                        }

                        if (planes[i].GetFlight().Landing(globaltime))
                        {
                            label_text += " (Посадка)";
                            planes[i].Land(planes[i].GetFlight().GetEnd());
                            for (int j = 0; j < seats; j++)
                            { //генерация билетов и пассажиров
                                planes[i].kick_passenger(j);
                            }
                        }
                        label_text += String.Format(", Число пассажиров: {0}", planes[i].GetEngaged());

                        label_text += "\r\n";
                    }
                    Invoke(new state_OutputDelegate(state_out), new object[] { true, label_text });
                }
                Invoke(new OutputDelegate(Output), new object[] { String.Format("Текущее время: {0}", globaltime.ToString("f")) });
            }
            catch (_Exception e)
            {
                Invoke(new OutputDelegate(catcher), new object[] { e.Get() });
            }
        }