DelEl (PTemp);
PTemp->PObj->time++;
if ((PTemp->PObj->Child->R == 3) && (PTemp->PObj->preg == 1))
{
PTemp->PObj->Birth ();
AddNode (new CCircleSM (PTemp->PObj->Child->X, PTemp->PObj->Child->Y, PTemp->PObj->Child->R, PTemp->PObj->Child->color));
}
PTemp=PTemp->PNext;
}
};
void CList :: DelEl (CNode *PCur)
{
PTemp = PHead;
while (PTemp->PNext != PCur)
PTemp = PTemp->PNext;
PTemp->PNext = PCur->PNext;
PCur->PObj->Hide ();
if (PCur->PObj->preg == 1)
delete PCur->PObj->Child;
delete PCur->PObj;
delete PCur;
PTemp = PTemp->PNext;
}
CList :: ~CList(void)
{
while(PHead!=NULL)
{
PTemp=PHead->PNext;
delete PHead->PObj;
delete PHead;
PHead=PTemp;
}
};
int main (void)
{
CList *PList;
randomize ();
int graphdriver = DETECT, graphmode;
initgraph(&graphdriver, &graphmode, "D:\\Programs\\C\\TC\\BGI");
PList=new CList;
for (int i=0;i<All;i++)
{
PList->AddNode (new CCircleSM(random (620), random (460), 3, random (3) + 1));
}
PList->AddNode (new Volk(random (620), random (460), 1, 15));
PList -> ShowAll ();
while (!kbhit())
{
PList -> MoveAll ();
delay (10);
}
closegraph();
getch();
delete PList;
return 0;
}
Результат роботи програми:
На екрані рухаються і взаємодіють між собою різні об’єкти
Ця програма малює 19 об’єктів класу CCircleSM та один об’єкт класу Volk. При зіткненні двох об’єктів класу CCircleSM з’являється новій об’єкт класу CCircleSM.
При зіткненні об’єкту класу CCircleSM з об’єктом Volk об’єкт класу CCircleSM зникає. Об’єкти класу CCircleSM мають обмежений час життя щоб не переповнювати пам’ять. Всі об’єкти знаходяться в динамічному списку.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.