示例#1
0
文件: Form1.cs 项目: Mc-Pain/OOP3
 public CPlane(CAirport airport, int seats)
 { //создание самолёта
     landed      = true;
     landed_in   = airport;
     num_engaged = 0;
     flight      = null;
     passengers  = new CPassenger[seats];
 }
示例#2
0
文件: Form1.cs 项目: Mc-Pain/OOP3
 public void setflight(CFlight new_flight)
 {     //установка нового рейса
     if (flight != null)
     { //рейс уже установлен
         _Exception exc = new _Exception("Менять рейс во время полёта - не труЪ");
         throw (exc);
     }
     else
     { //рейс не установлен
         flight = new_flight;
     }
 }
示例#3
0
文件: Form1.cs 项目: Mc-Pain/OOP3
 public void Land(CAirport airport)
 {     //приземление
     if (!landed)
     { //самолёт в воздухе
         landed    = true;
         landed_in = airport;
         for (int i = 0; i < 100; i++)
         {
             this.kick_passenger(i); //высаживаем i-го пассажира
         }
         airport.busy = false;
         flight       = null; //задание выполнено
     }
     else
     { //самолёт не в воздухе
         _Exception exc = new _Exception("Только Чаке может сажать самолёт два раза подряд");
         throw (exc);
     }
 }
示例#4
0
文件: Form1.cs 项目: Mc-Pain/OOP3
        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() });
            }
        }
示例#5
0
文件: Form1.cs 项目: Mc-Pain/OOP3
 public CPassenger(CFlight new_flight, int new_seat)
 { //создание пассажира
     flight = new_flight;
     seat   = new_seat;
 }