Различита кретања различитих тела¶
У овом примеру приказаћемо анимацију током које се различите врсте тела крећу свака на свој начин. У примеру постоје три врсте тела: точкови који се котрљају, лоптице које скакућу и авиончићи који лете. Свим телима се управља на исти начин, при чему се не обраћа пажња на то које тело је које врсте.
Да бисмо омогућили овакав сценарио, дефинисали смо апстрактну базну класу Telo, са апстрактним
методима PomeriSe, RestartujSe и NacrtajSe. Након тога, анимација се једноставно
остварује тако што се из метода форме timer1_Tick за свако тело позове метод PomeriSe,
а из метода Form1_Paint позове се метод NacrtajSe. Тело које после неког времена заврши
а из метода Form1_Paint позове се метод NacrtajSe. Тело које после неког времена заврши
са својим кретањем, може да позове свој метод RestartujSe и на тај начин почне да се понаша
као ново тело.
Ево како изгледа изворни кôд класе Telo:
Класе Tocak, Loptica и Avioncic, изведене из класе Telo, могу да буду написане овако.
Класа Form1 је необично мала, јер се састоји од само три врло кратка метода. Класа садржи само
једну листу типа List<Telo>. У форми се не помињу изведене класе, нити форма има потребу да зна
било шта о тим изведеним класама. Листа тела се формира (попуњава) у методу Form1_Load, при
покретању програма.
Као што смо поменули на почетку, на сваки откуцај тајмера тела се померају тако што се за свако од њих
позове метод PomeriSe, а у методу Form1_Paint се исцртавају позивањем метода NacrtajSe за
свако тело.
Ако желите да испробате апликацију, потребно је да урадите следеће:
Креирајте нови пројекат типа
Windows Forms Appи назовите гаKretanjeДодајте у пројекат нови фајл (десни клик на пројекат у прозору
Solution Explorer, ставкаAdd, а затимNew Itemу искачућем менију), назовите гаTelo.csи копирајте у њега кôд класеTelo.На исти начин додајте у пројекат још три нова фајла, назовите их
Tocak.cs,Loptica.csиAvioncic.cs, а затим копирајте у њих дате садржаје.Прегазите садржај фајла
Form1.csсадржајем датим у наставкуПрегазите садржај фајла
Form1.Designer.csсадржајем који следи после фајлаForm1.cs
Садржај фајла Form1.cs: