public CPlane(CAirport airport, int seats) { //создание самолёта landed = true; landed_in = airport; num_engaged = 0; flight = null; passengers = new CPassenger[seats]; }
public void setflight(CFlight new_flight) { //установка нового рейса if (flight != null) { //рейс уже установлен _Exception exc = new _Exception("Менять рейс во время полёта - не труЪ"); throw (exc); } else { //рейс не установлен flight = new_flight; } }
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); } }
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() }); } }
public CPassenger(CFlight new_flight, int new_seat) { //создание пассажира flight = new_flight; seat = new_seat; }