0% found this document useful (0 votes)
27 views3 pages

Rain

This C program creates a graphical representation of a man walking in the rain, complete with a hut and a rainbow. It uses functions to draw the hut, the man with an umbrella, and simulate rainfall. The program runs in a loop until a key is pressed, after which it displays a rainbow and stops the rain animation.

Uploaded by

nisha langeh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views3 pages

Rain

This C program creates a graphical representation of a man walking in the rain, complete with a hut and a rainbow. It uses functions to draw the hut, the man with an umbrella, and simulate rainfall. The program runs in a loop until a key is pressed, after which it displays a rainbow and stops the rain animation.

Uploaded by

nisha langeh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

//C Program to Show a Man Walking in Rain// C program to implement

// the above approach


#include <conio.h>
#include <graphics.h>
#include <stdio.h>
#define ScreenWidth getmaxx()
#define ScreenHeight getmaxy()
#define GroundY ScreenHeight * 0.75
int ldisp = 0;

// Creating a hut
void hut()
{
setcolor(WHITE);
rectangle(150, 180, 250, 300);
rectangle(250, 180, 420, 300);
rectangle(180, 250, 220, 300);

line(200, 100, 150, 180);


line(200, 100, 250, 180);
line(200, 100, 370, 100);
line(370, 100, 420, 180);

setfillstyle(SOLID_FILL, BROWN);
floodfill(152, 182, WHITE);
floodfill(252, 182, WHITE);
setfillstyle(SLASH_FILL, BLUE);
floodfill(182, 252, WHITE);
setfillstyle(HATCH_FILL, GREEN);
floodfill(200, 105, WHITE);
floodfill(210, 105, WHITE);
}

// Drawing a Man with


// an umbrella
void DrawManAndUmbrella(int x,
int ldisp)
{
circle(x, GroundY - 90, 10);
line(x, GroundY - 80, x,
GroundY - 30);
line(x, GroundY - 70,
x + 10, GroundY - 60);
line(x, GroundY - 65, x + 10,
GroundY - 55);
line(x + 10, GroundY - 60,
x + 20, GroundY - 70);
line(x + 10, GroundY - 55,
x + 20, GroundY - 70);

line(x, GroundY - 30,


x + ldisp, GroundY);
line(x, GroundY - 30,
x - ldisp, GroundY);

pieslice(x + 20, GroundY - 120,


0, 180, 40);
line(x + 20, GroundY - 120,
x + 20, GroundY - 70);
}

// Creating the Rainfall


void Rain(int x)
{
int i, rx, ry;
for (i = 0; i < 400; i++)
{
rx = rand() % ScreenWidth;
ry = rand() % ScreenHeight;
if (ry < GroundY - 4)
{
if (ry < GroundY - 120 ||
(ry > GroundY - 120 &&
(rx < x - 20 ||
rx > x + 60)))
line(rx, ry,
rx + 0.5, ry + 4);
}
}
}

// Creating the rainbow


void rainbow()
{
int x, y, i;

circle(ScreenWidth - 100,
50, 30);
setfillstyle(SOLID_FILL,
YELLOW);
floodfill(ScreenWidth - 100,
50, WHITE);

ldisp = (ldisp + 2) % 20;


DrawManAndUmbrella(x, ldisp);
hut();
x = getmaxx() / 5;
y = getmaxy() / 5;

for (i = 30; i < 100; i++)


{
// for animation
delay(50);

setcolor(i / 10);

arc(x, y, 0, 180, i - 10);


}
getch();
}

// Driver code
void main()
{
int gd = DETECT, gm, x = 0;

initgraph(&gd, &gm,
"C:\\TurboC3\\BGI");

// executes till any key


// is pressed
while (!kbhit())
{
hut();
circle(ScreenWidth - 100,
50, 30);
setfillstyle(SOLID_FILL,
YELLOW);
floodfill(ScreenWidth - 100,
50, WHITE);
line(0, GroundY, ScreenWidth,
GroundY);
Rain(x);

ldisp = (ldisp + 2) % 20;


DrawManAndUmbrella(x, ldisp);
delay(20);
cleardevice();
x = (x + 2) % ScreenWidth;
}
// if the key is pressed the
// rain stops, rainbow appears
ldisp = (ldisp + 2) % 20;
DrawManAndUmbrella(x, ldisp);
rainbow();
getch();
}

You might also like