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

CG Mini Project Code

The document contains a C program that simulates a rain animation with a walking man holding an umbrella. It includes functions to initialize raindrops, draw them, and create the scene with background elements. The main loop continuously updates and displays the animation until a key is pressed.

Uploaded by

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

CG Mini Project Code

The document contains a C program that simulates a rain animation with a walking man holding an umbrella. It includes functions to initialize raindrops, draw them, and create the scene with background elements. The main loop continuously updates and displays the animation until a key is pressed.

Uploaded by

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

#include <graphics.

h>

#include <conio.h>

#include <stdlib.h>

#include <dos.h>

// Structure to hold raindrop data

struct Raindrop {

int x, y, speed;

};

// Function to initialize raindrops with random positions and speeds

void initRain(struct Raindrop raindrops[], int numDrops) {

for (int i = 0; i < numDrops; i++) {

raindrops[i].x = rand() % getmaxx();

raindrops[i].y = rand() % getmaxy();

raindrops[i].speed = rand() % 5 + 2; // Random speed for variation

// Function to draw falling raindrops and update their positions

void drawRain(struct Raindrop raindrops[], int numDrops) {

setcolor(CYAN);

for (int i = 0; i < numDrops; i++) {

line(raindrops[i].x, raindrops[i].y, raindrops[i].x, raindrops[i].y + 10);

raindrops[i].y += raindrops[i].speed; // Move the raindrop downward

// Reset raindrop position if it moves beyond the screen

if (raindrops[i].y > getmaxy()) {

raindrops[i].y = 0;

raindrops[i].x = rand() % getmaxx();

}
}

// Function to draw the umbrella

void drawUmbrella(int x, int y) {

setcolor(WHITE);

// Umbrella canopy

arc(x, y, 0, 180, 30); // Arc for umbrella top

line(x - 30, y, x + 30, y); // Bottom line of umbrella

line(x, y, x, y + 40); // Handle

// Function to draw a walking man with umbrella

void drawMan(int x, int y, int step) {

// Draw head

setcolor(WHITE);

circle(x, y + 50, 10);

// Draw body

line(x, y + 60, x, y + 100);

// Draw arms

line(x, y + 70, x - 20, y + 85); // Left arm

line(x, y + 70, x + 20, y + 60); // Right arm holding umbrella

// Draw legs with alternating movement

if (step % 2 == 0) {

// Left leg forward, right leg back

line(x, y + 100, x - 10, y + 120); // Left leg forward

line(x, y + 100, x + 10, y + 110); // Right leg back

} else {
// Right leg forward, left leg back

line(x, y + 100, x - 10, y + 110); // Left leg back

line(x, y + 100, x + 10, y + 120); // Right leg forward

// Function to draw background (can be modified to include more scenery)

void drawBackground() {

setcolor(WHITE);

// Draw some ground

line(0, getmaxy() - 50, getmaxx(), getmaxy() - 50);

// Function to draw the complete scene

void drawScene(int x, int y, int step, struct Raindrop raindrops[], int numDrops) {

cleardevice(); // Clear the screen

// Draw background elements

drawBackground();

// Draw rain

drawRain(raindrops, numDrops);

// Draw the man walking with umbrella

drawUmbrella(x, y);

drawMan(x, y, step);

// Main animation loop

int main() {

int gd = DETECT, gm;


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

// Man's starting position and step count

int x = 50, y = 200;

int step = 0;

// Define number of raindrops

const int numDrops = 300;

struct Raindrop raindrops[numDrops];

// Initialize raindrops

initRain(raindrops, numDrops);

// Main loop to animate the man and rain

while (!kbhit()) { // Run until a key is pressed

drawScene(x, y, step, raindrops, numDrops);

// Update the man's position and step for walking animation

x += 5;

step++;

// Reset man's position if he walks off-screen

if (x > getmaxx()) {

x = 0;

// Control the speed of the animation

delay(100);

} closegraph();

return 0;}

You might also like