Animacija se može napraviti veoma jednostavno. Dovoljno je objekat koji je postavljen, pre ponovnog pozicioniranja obrisati.
Pr1. Napravite program koji crta pravougaonik od jedne do druge pozicije, pri čemu se y koordinata objekta ne menja?
Rešenje:
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver=9;
int gmode=2;
initgraph(&gdriver,&gmode,““);
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
int x,y;
for (x=50;x<600;x=x+1)
{
cleardevice();
rectangle(x, y,x+60,y+60);
}
getch();
return EXIT_SUCCESS;
}
Pr2. Napravite program koji omogućava kretanje kruga po različitim putanjama?
Rešenje:
a)
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver=9;
int gmode=2;
initgraph(&gdriver,&gmode,““);
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
int x,y;
for (y=10;y<400;y=y+30)
{
for (x=10;x<600;x=x+1)
{
cleardevice();
circle(x, y,20);
}
}
getch();
return EXIT_SUCCESS;
}
Krug se kreće sleva prema desno kroz celog grahičkog ekrana.
b)
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver=9;
int gmode=2;
initgraph(&gdriver,&gmode,““);
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
int x,y;
for (x=10;x<600;x=x+30)
{
for (y=10;y<400;y=y+1)
{
cleardevice();
circle(x, y,x+10);
}
}
getch();
return EXIT_SUCCESS;
}
c)
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver=9;
int gmode=2;
initgraph(&gdriver,&gmode,““);
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
int x,y;
for (x=10;x<600;x=x+30)
cleardevice();
{
for (y=10;y<400;y=y+1)
{
circle(x, y,x);
}
}
getch();
return EXIT_SUCCESS;
d)
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver=9;
int gmode=2;
initgraph(&gdriver,&gmode,““);
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
int x,r;
for (x=30;x<610;x=x+60)
{
for (r=5;r<31;r=r+5)
{
delay(100);
// cleardevice();
circle(x, 24,r);
}
}
getch();
return EXIT_SUCCESS;
}
Krug koji menja poluprečnik, kreće se sleva prema desno, pri čemu y koordinata je fiksna, menja se samo x; Evo kako izgleda slika kada ne bi brisali objekte
Pr3.
a) Animacija koja od donje pozicije ekrana kreće krug koji nakon dolaska do određenu poziciju menja poluprečnik?
Rešenje:
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver=9;
int gmode=2;
initgraph(&gdriver,&gmode,““);
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
int x,r;
for (x=465;x>100;x=x-1)
{
cleardevice();
circle(320, x,10);
}
for (r=10;r<91;r=r+1)
{
delay(100);
cleardevice();
circle(320, x,r);
}
getch();
return EXIT_SUCCESS;
}
Kada ne bi brisali predhodno nacrtani objekat dobili bi sliku
Pr4. Napravite animaciju koja se dešava korišćenjem tastera a-levo, f -desno, c-gore, v-dole
Rešenje:
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver=9;
int gmode=2;
initgraph(&gdriver,&gmode,““);
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
int x=290;
int y=220;
char odgovor=’d’;
while (odgovor!=’k’)
{
rectangle(x,y,x+60,y+5);
odgovor=getch();
if (odgovor==’a’)
{
x=x-5;
}
if (odgovor==’f’)
{
x=x+5;
}
if (odgovor==’v’)
{
y=y-5;
}
if (odgovor==’c’)
{
y=y+5;
}
//cleardevice();
}
closegraph();
return EXIT_SUCCESS;
}
Ukoliko se izbriše komanda za brisanje predhodnog objekta dobija se slika
ili ako početni objekat je krug, dobija se slika
Pr5. Napravite program koji pomoću miša pomera objekat na grafičkom ekrenu?
Rešenje:
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver=9;
int gmode=2;
initgraph(&gdriver,&gmode,““);
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
while (!kbhit())
{
rectangle(mousex(), mousey(), mousex()+50, mousey()+50);
}
closegraph();
return EXIT_SUCCESS;
}
Napomena: Naredba kbhit() ispituje dali je neki taster tastature pritisnut. Znaši naredbom while(!kbhit()) objekat se pomera sve dok se ne pritisne bilo koji taster na tastaturi.