Sunday, 25 January 2015

Falling Raindrops

#include<malloc.h>
#include<graphics.h>
#include<conio.h>
#include<dos.h>
void spread();
void *buff2;

void main()
{
    int gd=DETECT,gm;
    int area1,area2,i;
    void *buff1;

    initgraph(&gd,&gm,"c:\\tc\\bgi");
    setcolor(CYAN);
    setfillstyle(SOLID_FILL,CYAN);

    //Cloud drawing
    fillellipse(280,60,80,30);    //left
    fillellipse(360,60,80,30);    //right
    fillellipse(320,20,50,25);    //top

    //Cloud image saving in memory for latter use
    area2=imagesize(200,0,440,120);
    buff2=malloc(area2);
    getimage(200,0,440,120,buff2);

    //rain drop/////////////////////////////////////////////
    clearviewport();

    setcolor(WHITE);
    //Rain drop drawing
    ellipse(310,240,35,60,20,90);
    ellipse(330,240,120,145,20,90);
    ellipse(320,190,178,5,6,11);
    setfillstyle(SOLID_FILL,BLUE);
    floodfill(320,180,WHITE);

    //Image of rain drop saving in memory
    area1=imagesize(310,160,330,210);
    buff1=malloc(area1);
    getimage(310,160,330,210,buff1);

    i=0;
    while(!kbhit())
    {
       setcolor(WHITE);
       setfillstyle(SOLID_FILL,GREEN);

       bar3d(0,470,639,480,80,10);  /*The ground or a base on which
     rain drop falls or strikes */
       setfillstyle(SOLID_FILL,BLUE);;

       floodfill(210,430,WHITE);
       putimage(220,0,buff2,COPY_PUT);

       if(i==420)
{
     spread();  //Spreading of rain drop
     i=0;
}
putimage(320,i,buff1,COPY_PUT); //Rain drop displaying at (320,i)
       clearviewport();
       i=i+20;
    }

    getch();
    closegraph();
}

void spread()
{
     int x_rad,y_rad;
     x_rad=100;
     y_rad=10;

     setcolor(WHITE);
     while(x_rad<=300)
     {
ellipse(320,450,90,270,x_rad,y_rad);
ellipse(320,450,270,90,x_rad,y_rad);
x_rad=x_rad+40;
y_rad=y_rad+2;
delay(20);
     }
}

No comments:

Post a Comment