Simple animation of random balls that bounces within the screen
Source:
Output:
Source:
#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<dos.h>
#include<math.h>
void drawBall(struct ball *b, int color);
struct ball{
int x, y;
int dx, dy;
int radius;
};
void main()
{
int gd=0, gm=VGAHI;
int i;
struct ball b[10];
initgraph(&gd, &gm, "");
for(i=1;i<=15;i++){
b[i].radius = rand()%20;
b[i].x=rand()%getmaxx();
b[i].y=rand()%getmaxy();
b[i].dx=2;
b[i].dy=4;
}
while(!kbhit())
{
delay(5);
cleardevice();
for(i=1;i<=15;i++)
drawBall(&b[i],i);
}
closegraph();
}
void drawBall(struct ball *b, int color){
setfillstyle(1,color);
setcolor(color);
fillellipse(b->x, b->y, b->radius, b->radius);
if(b->x+b->radius > getmaxx() || b->x-b->radius<0)
b->dx = -b->dx;
if(b->y+b->radius > getmaxy() || b->y-b->radius<0)
b->dy = -b->dy;
b->x+=b->dx;
b->y+=b->dy;
}
Output:
can u tell the if statement explanation...please i need to understand it
ReplyDeleteHi sumbul risvi,
ReplyDeleteif statement is to check whether the ball is touching edges of the wall
getmaxx() -> screen maxX
getmaxy() -> screen maxY
(b->x + b->radius)->right edge of the ball
(b->y + b->radius)->bottom edge of the ball
(b->x - b->radius)->left edge of the ball
(b->y - b->radius)->top edge of the ball
okay thank you
ReplyDeletenice tutorials and samples
ReplyDeletegreat work on c graphics samples
thanks ajai for sharing
What Compiler do you use for this program and is the header file "graphics.h" included in the compiler or did you have to make it yourself?
ReplyDeleteluke
I'm using Turbo C3. 'graphics.h' is already included. you have to enable Graphics libraries via 'options>linker>libraries'
ReplyDelete