Отчет по лабораторной работе № 1 (990249), страница 3
Текст из файла (страница 3)
{ FormSostoyanieSamoletov->cbRaketaIspravna->Checked = true;
return YES;
}
else
{ FormSostoyanieSamoletov->cbRaketaIspravna->Checked = false;
return NO;
}
case 3: // Условие 3 Ракету заклинило
if (Raketa->Zaklinilo())
{ FormSostoyanieSamoletov->cbRaketuZaklinilo->Checked = true;
return YES;
}
else
{ FormSostoyanieSamoletov->cbRaketuZaklinilo->Checked = false;
return NO;
}
}
break;
case 9: // Таблица 9 Полет своей ракеты
switch(LParam) // Номер условия
{ case 1: // Условие 1 Ракета достигла корабля
int xx, yy, ww, hh;
ParametryKorablyaDlyaRakety(NomerZhertvySamoleta, xx, yy, ww, hh);
if (Raketa->DostiglaKorablya(xx, yy, ww, hh))
{ FormSostoyanieSamoletov->cbRaketaDostiglaKorablya->Checked = true;
return YES;
}
else
{ FormSostoyanieSamoletov->cbRaketaDostiglaKorablya->Checked = false;
return NO;
}
}
break;
case 10: // Таблица 10 Полет чужой ракеты
switch(LParam) // Номер условия
{ case 1: // Условие 1 Ракета достигла орудия
if (Raketa->DostiglaOrudiya(Pushka->X(), Pushka->Y(), Pushka->Width(), Pushka->Height()))
{ FormSostoyanieSamoletov->cbRaketaDostiglaOrudiya->Checked = true;
return YES;
}
else
{ FormSostoyanieSamoletov->cbRaketaDostiglaOrudiya->Checked = false;
return NO;
}
}
break;
}
case ACTIONS: // Действия
switch(WParamLo)
{ case 1: // Таблица 1 Состояние форта
switch(LParam) // Номер действия
{ case 1: // Действие 1 Сообщение "победа"
FormSostoyanie->rbSoobsheniePobeda->Checked = true;
ShowMessage("Победа!");
return YES;
case 2: // Действие 2 Сообщение "поражение"
FormSostoyanie->rbSoobsheniePorazhenie->Checked = true;
ShowMessage("Поражение!");
return YES;
case 3: // Действие 3 Отработать действие кораблей
DeystvieKorableyOtrabotano = true;
return YES;
case 4: // Действие 4 Отработать действие кораблей
DeystvieKorableyOtrabotano = false;
DeystvieSamoletovOtrabotano = false;
return YES;
}
break;
case 2: // Таблица 2 Действия орудия
switch(LParam) // Номер действия
{ case 1: // Действие 1 Занять орудие
FormSostoyanie->rbZanyatOrudie->Checked = true;
Pushka->Zanyat();
ImageHorB->Picture->LoadFromFile(GetCurrentDir() + "\\" + "pictures" + "\\" + "HorR.jpg");
ImageHorT->Picture->LoadFromFile(GetCurrentDir() + "\\" + "pictures" + "\\" + "HorR.jpg");
ImageVertL->Picture->LoadFromFile(GetCurrentDir() + "\\" + "pictures" + "\\" + "VertR.jpg");
ImageVertR->Picture->LoadFromFile(GetCurrentDir() + "\\" + "pictures" + "\\" + "VertR.jpg");
draw_segment(active_segment);
return YES;
case 2: // Действие 2 Освободить орудие
FormSostoyanie->rbOsvoboditOrudie->Checked = true;
Pushka->Osvobodit();
ImageHorB->Picture->LoadFromFile(GetCurrentDir() + "\\" + "pictures" + "\\" + "Hor.jpg");
ImageHorT->Picture->LoadFromFile(GetCurrentDir() + "\\" + "pictures" + "\\" + "Hor.jpg");
ImageVertL->Picture->LoadFromFile(GetCurrentDir() + "\\" + "pictures" + "\\" + "Vert.jpg");
ImageVertR->Picture->LoadFromFile(GetCurrentDir() + "\\" + "pictures" + "\\" + "Vert.jpg");
draw_segment(active_segment);
return YES;
case 3: // Действие 3 Перейти к след сегменту
FormSostoyanie->rbPereytiKSleduyushemuSegmentu->Checked = true;
TimerToNextSegm->Enabled = true;
return YES;
case 4: // Действие 4 Удалить корабль
FormSostoyanie->rbUdalitKorabl->Checked = true;
if (korabli[nomer][1] == 1)
UdalitKorabl(nomer);
return YES;
case 5: // Действие 5 Сдвинуть корабли
FormSostoyanie->rbSdvinutKorabli->Checked = true;
TimerShipsMove->Enabled = true;
return YES;
case 6: // Действие 6 Самоуничтожение
FormSostoyanie->rbSamounichtozhenie->Checked = true;
fort_zahvachen = true;
ShowMessage("Доплавались!");
return YES;
}
break;
case 3: // Таблица 3 Выстрел
switch(LParam) // Номер действия
{ case 1: // Действие 1 Зарядить
FormSostoyanie->rbZanyatOrudie->Checked = true;
idet_zaryadka = true;
TimerZaryadka->Enabled = true;
ImageZaryazhayu->Visible = true;
return YES;
case 2: // Действие 2 Прицелиться
FormSostoyanie->rbPricelitsya->Checked = true;
int xx, yy, ww, hh, vv; // x, y, width, height, v
ParametryKorablyaVSegmente(active_segment, xx, yy, ww, hh, vv);
Pushka->Pricelitsya(xx, yy, hh, ww, vv, TimerBulletMove->Interval, aimX, aimY);
PokazatPricel();
TimerMigatPricelom->Enabled = true;
return YES;
case 3: // Действие 3 Заказать ящик
FormSostoyanie->rbZakazatYashik->Checked = true;
TimerZakazatYashik->Enabled = true;
ImageZhduPatrony->Visible = true;
ozhidanie_yashika = true;
return YES;
case 4: // Действие 4 Ремонтировать
FormSostoyanie->rbRemontirovatOrudie->Checked = true;
TimerRemont->Enabled = true;
ImageRemont->Visible = true;
idet_remont = true;
return YES;
case 5: // Действие 5 Сломаться
FormSostoyanie->rbSlomatsya->Checked = true;
Pushka->Slomatsya();
return YES;
case 6: // Действие 6 Выстрелить
FormSostoyanie->rbVystrelit3->Checked = true;
ImageStatusZaryazheno->Visible = false;
ImageOrudie->Picture->LoadFromFile(GetCurrentDir() + "\\" + "Fire" + "\\" + "Fire.bmp");
TimerOrudieFire->Enabled = true;
// Создаем снаряд
Snaryad = new Bullet(ImageOrudie->Left + ImageOrudie->Width/2, ImageOrudie->Top + ImageOrudie->Height/2, aimX,
aimY, Form1->ShapeBullet->Width, Form1->ShapeBullet->Height, TimerBulletMove->Interval);
TimerBulletMove->Enabled = true;
Pushka->Vystrelit();
snaryad_uzhe_letit = true;
ShapeBullet->Visible = true;
leVystrelovPosleRemonta->Text = IntToStr(Pushka->KolichestvoVystrelov());
// Рассчитываем приращения, на которые будет сдвигать снаряд
Snaryad_dXdY(Snaryad->X(), Snaryad->Y(), TimerBulletMove->Interval, Snaryad->Width(), Snaryad->Height(), aimX, aimY,
sdx, sdy);
sdy--;
// Записываем количество оставшихся снарядов в leSnaryadovOstalos
leSnaryadovOstalos->Text = IntToStr(KolichestvoSnaryadov - Pushka->KolichestvoVystrelovPoslePolucheniyaYashika());
return YES;
}
break;
case 4: // Таблица 4 Попадание / промах снаряда
switch(LParam) // Номер действия
{ case 1: // Действие 1 Взорваться
FormSostoyanie->rbVzorvatsya->Checked = true;
Snaryad->Reset();
snaryad_uzhe_letit = false;
int nomer;
nomer = NomerKorablyaVSegmente(active_segment);
imgs[nomer]->Picture->LoadFromFile(GetCurrentDir() + "\\" + "blast" + "\\" + "ShipBlast179px.bmp");
imgs[nomer]->Top = ships[nomer]->Y() + ships[nomer]->Height()/2 - imgs[nomer]->Height/2;
imgs[nomer]->Left = ships[nomer]->X() + ships[nomer]->Width()/2 - imgs[nomer]->Width/2;
return YES;
case 2: // Действие 2 Удалить корабль
FormSostoyanie->rbUdalitKorabl4->Checked = true;
ship_to_delete = NomerKorablyaVSegmente(active_segment);
TimerUdalitKorabl->Enabled = true;
UbratPricel();
UdalitKorablVSegmente(active_segment);
return YES;
case 3: // Действие 3 Сдвинуть снаряд
FormSostoyanie->rbSdvinutSnaryad->Checked = true;
TimerBulletMove->Enabled = true;
return YES;
case 4: // Действие 4 Удалить снаряд
FormSostoyanie->rbUdalitSnaryad->Checked = true;
snaryad_uzhe_letit = false;
ShapeBullet->Visible = false;
Snaryad->Reset();
return YES;
case 5: // Действие 5 Освободить прицел
FormSostoyanie->rbOsvoboditPricel->Checked = true;
Pushka->OsvoboditPricel();
UbratPricel();
return YES;
}
break;
// В таблице 5 кроме переходов в другие таблицы действий нет
case 5: // Таблица 5 Самолеты
switch(LParam) // Номер действия
{ }
break;
case 6: // Таблица 6 Самолет свой
switch(LParam) // Номер действия
{ case 1: // Действие 1 Сдвинуть самолет
FormSostoyanieSamoletov->rbSdvinutSamolet->Checked = true;
TimerMoveAircraft->Enabled = true;
return YES;
case 2: // Действие 2 Удалить самолет
FormSostoyanieSamoletov->rbUdalitSamolet->Checked = true;
TimerDeleteAircraft->Enabled = true;
return YES;
case 3: // Действие 3 Запустить ракету
Raketa->SetXY(Samolet->X() + Samolet->Height()/2, Samolet->Y() + Samolet->Width()/2);
Form1->ShapeRaketa->Left = Samolet->X() + Samolet->Height()/2;
Form1->ShapeRaketa->Top = Samolet->Y() + Samolet->Width()/2;
return YES;
}
break;
case 7: // Таблица 7 Самолет чужой
switch(LParam) // Номер действия
{ case 1: // Действие 1 Сдвинуть самолет
FormSostoyanieSamoletov->rbSdvinutSamolet2->Checked = true;
TimerMoveAircraft->Enabled = true;
return YES;
case 2: // Действие 2 Удалить самолет
FormSostoyanieSamoletov->rbUdalitSamolet2->Checked = true;
TimerDeleteAircraft->Enabled = true;
return YES;
case 3: // Действие 3 Запустить ракету
Raketa->SetXY(Samolet->X() + Samolet->Height()/2, Samolet->Y() + Samolet->Width()/2);
Form1->ShapeRaketa->Left = Raketa->X();
Form1->ShapeRaketa->Top = Raketa->Y();
return YES;
}
break;
case 8: // Таблица 8 Запуск ракеты
switch(LParam) // Номер действия
{ case 1: // Действие 1 Получить координаты цели
FormSostoyanieSamoletov->rbPoluchitKoordinatyCeli->Checked = true;
Raketa->PoluchitKoordinatyCeli();
return YES;
case 2: // Действие 2 Запустить ракету
FormSostoyanieSamoletov->rbZapustitRaketu->Checked = true;
if (Samolet->Svoy())
{ Aircraft::SvoyaRaketaLetit = true;
ShapeZhertva->Visible = true;
NomerZhertvySamoleta = NomerKorablyaPeredSamoletom;
}
else
Aircraft::ChuzhayaRaketaLetit = true;
Samolet->ZapustitRaketu();
Raketa->SetXY(Samolet->X() + Samolet->Height()/2, Samolet->Y() + Samolet->Width()/2);
Form1->ShapeRaketa->Left = Raketa->X();
Form1->ShapeRaketa->Top = Raketa->Y();
Form1->ShapeRaketa->Visible = true;
leRaketOstalos->Text = IntToStr(KolichestvoRaket - Samolet->KolichestvoVystrelov());
return YES;
case 3: // Действие 3 Избавиться от ракеты
FormSostoyanieSamoletov->rbIzbavitsyaOtRakety->Checked = true;
Samolet->IzbavitsyaOtRakety();
Aircraft::SvoyaRaketaLetit = false;
Aircraft::ChuzhayaRaketaLetit = false;
leRaketOstalos->Text = IntToStr(KolichestvoRaket - Samolet->KolichestvoVystrelov());
NomerZhertvySamoleta = -4;
Raketa->Reset();
NewMissile();
return YES;
case 4: // Действие 4 Взорвать ракету вместе с самолетом
FormSostoyanieSamoletov->rbVzorvatVmesteSSamoletom->Checked = true;
Aircraft::EstSamolet = false;
TimerDeleteAircraft->Enabled = true;
TimerMissileDelete->Enabled = true;
Raketa->Vzorvat();
Raketa->Reset();
Form1->ShapeRaketa->Visible = false;
Aircraft::SvoyaRaketaLetit = false;
Aircraft::ChuzhayaRaketaLetit = false;
imgPlane->Picture->LoadFromFile(GetCurrentDir() + "\\" + "blast" + "\\" + "PlaneBlast100px.bmp");
imgPlane->Top = Samolet->Y() + Samolet->Width()/2 - imgPlane->Height/2;
imgPlane->Left = Samolet->X() + Samolet->Height()/2 - imgPlane->Width/2;
NomerZhertvySamoleta = -5;
NewMissile();
return YES;
}
break;
case 9: // Таблица 9 Полет своей ракеты
switch(LParam) // Номер действия
{ case 1: // Действие 1 Взорваться
FormSostoyanieSamoletov->rbVzorvatsya->Checked = true;
imgMissileBlast->Top = ShapeRaketa->Top + ShapeRaketa->Height/2 - imgMissileBlast->Height/2;
imgMissileBlast->Left = ShapeRaketa->Left + ShapeRaketa->Width/2 - imgMissileBlast->Width/2;
imgMissileBlast->Visible = true;
ShapeZhertva->Visible = false;
return YES;
case 2: // Действие 2 Удалить корабль
FormSostoyanieSamoletov->rbUdalitKorabl->Checked = true;
if (korabli[NomerZhertvySamoleta][1] == 1)
UdalitKorabl(NomerZhertvySamoleta); // Удаляем корабль, в который летит ракета
return YES;
case 3: // Действие 3 Сдвинуть ракету
FormSostoyanieSamoletov->rbSdvinutRaketu->Checked = true;
TimerMissileMove->Enabled = true;














