Form1->RadioGroup1->Items->Strings[6] = TimeToStr(CurrentTime+Delay+Delay+Delay);
Form1->RadioGroup1->Items->Strings[5] = TimeToStr(CurrentTime+Delay+Delay+Delay+Delay);
Form1->RadioGroup1->Items->Strings[4] = TimeToStr(CurrentTime+Delay+Delay+Delay+Delay+Delay);
Form1->RadioGroup1->Items->Strings[3] = TimeToStr(CurrentTime+Delay+Delay+Delay+Delay+Delay+Delay);
Form1->RadioGroup1->Items->Strings[2] = TimeToStr(CurrentTime+Delay+Delay+Delay+Delay+Delay+Delay+Delay);
Form1->RadioGroup1->Items->Strings[1] = TimeToStr(CurrentTime+Delay+Delay+Delay+Delay+Delay+Delay+Delay+Delay);
Form1->RadioGroup1->Items->Strings[0] = TimeToStr(CurrentTime+Delay+Delay+Delay+Delay+Delay+Delay+Delay+Delay+Delay);
movpr = false;
}
LeaveCriticalSection(&Sect1); //входим в критическую секцию
}
}
}
//---------------------------------------------------------------------------
DWORD WINAPI AvtobusThreadFunc2(LPVOID param)//поток 1-го автобуса
{
randomize();
Form1->RadioGroup2->Items->Strings[0] = TimeToStr(CurrentTime);
//функция первого автобуса
bool movpr = true; //признак - в какую сторону едем (туда или обратно)
while(1)
{
if(!stop2)
{
int polomka = random(11); //определяем произошла ли поломка
if(polomka == 1) //если поломка произошла, то определяем время на которое задержан автобус
{
EnterCriticalSection(&Sect1); //входим в критическую секцию
//меняем картинку
Form1->Image2->Picture->LoadFromFile("instrument.jpeg");
Form1->Label5->Caption = 0; //скорость = 0 т.к. поломка
int polomkatime = random(200)+20;
LeaveCriticalSection(&Sect1); //покидаем критическую секцию
Sleep(polomkatime*100); //задерживаем время на устранение поломки
EnterCriticalSection(&Sect1); //входим в критическую секцию
//поломка устранена - меняем картинку
Form1->Image2->Picture->LoadFromFile("avtobus.jpg");
LeaveCriticalSection(&Sect1); //покидаем критическую секцию
}
//вычисляем значение скорости автобуса на перегоне (сл число)
v2 = random(31)+30; //по заданию скорость постоянная (выбрана в интерале от 30 до 60 км/ч)
//задержка на перемещение автобуса (расстояние между остановками / скорость)
int wait = 2/v2;
vsr2 += v2; //добавляем к средней скорости на маршруте
EnterCriticalSection(&Sect1); //входим в критическую секцию
Form1->Label5->Caption = v2; //отображаем скорость на форме
LeaveCriticalSection(&Sect1); //входим в критическую секцию
Sleep(wait*10000);
Sleep(1000);//дополнительная задержка для реалистичности (время на посадку-высадку пассажиров и т.д.)
EnterCriticalSection(&Sect1); //входим в критическую секцию
if(Form1->RadioGroup2->ItemIndex == 0)
{
//находимся на начальной остановке
//считаем среднюю скорость для данного автобуса
//и расставляем метки со временем прибытия
double vsr = vsr2/9; //средняя скорость на маршруте
if(vsr2 = 0) vsr = random(31)+30;
int timesr = ((rasst*9) / vsr)*10;
if(timesr > 60) timesr = 59;
TDateTime Delay;
AnsiString buf = "00:";
buf += timesr;
buf += ":00";
Delay = StrToTime(buf);
vsr = 0;
//получаем текущее время
CurrentTime = StrToTime(Form1->RadioGroup2->Items->Strings[0]);
Form1->RadioGroup2->Items->Strings[0] = TimeToStr(CurrentTime);
Form1->RadioGroup2->Items->Strings[1] = TimeToStr(CurrentTime+Delay);
Form1->RadioGroup2->Items->Strings[2] = TimeToStr(CurrentTime+Delay+Delay);
Form1->RadioGroup2->Items->Strings[3] = TimeToStr(CurrentTime+Delay+Delay+Delay);
Form1->RadioGroup2->Items->Strings[4] = TimeToStr(CurrentTime+Delay+Delay+Delay+Delay);
Form1->RadioGroup2->Items->Strings[5] = TimeToStr(CurrentTime+Delay+Delay+Delay+Delay+Delay);
Form1->RadioGroup2->Items->Strings[6] = TimeToStr(CurrentTime+Delay+Delay+Delay+Delay+Delay+Delay);
Form1->RadioGroup2->Items->Strings[7] = TimeToStr(CurrentTime+Delay+Delay+Delay+Delay+Delay+Delay+Delay);
Form1->RadioGroup2->Items->Strings[8] = TimeToStr(CurrentTime+Delay+Delay+Delay+Delay+Delay+Delay+Delay+Delay);
Form1->RadioGroup2->Items->Strings[9] = TimeToStr(CurrentTime+Delay+Delay+Delay+Delay+Delay+Delay+Delay+Delay+Delay);
movpr = true;
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.