Created
December 22, 2013 08:10
-
-
Save Codeplaza/8079660 to your computer and use it in GitHub Desktop.
Flowerpot Graphics
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<stdio.h> | |
#include<dos.h> | |
#include<graphics.h> | |
#include<stdlib.h> | |
#include<math.h> | |
#include<conio.h> | |
#define PI 3.14159 | |
#define NUME 30 | |
#define DENOM 100 | |
#define NUMBER 7 | |
#define RAD 2.0 | |
#define DTHETA 0.1 | |
#define REDUX 3 | |
#define SEGS 60 | |
#define MIN 1 | |
void init_graph(); | |
void tdisplay(int, float, int, int, int); | |
void cdisplay(int, int, int); | |
void bucket(); | |
int gd, gm, maxcolor, errorcode; | |
int xo, yo, maxx, maxy, xasp, yasp; | |
double aspectratio; | |
void init_graph() | |
{ | |
detectgraph(&gd, &gm); | |
initgraph(&gd, &gm, ""); | |
errorcode = graphresult(); | |
if (errorcode != grOk) { | |
printf("graphics system eror : %s", grapherrormsg(errorcode)); | |
exit(1); | |
} | |
maxcolor = getmaxcolor() + 1; | |
getaspectratio(&xasp, &yasp); | |
aspectratio = (double) (yasp) / (double) (xasp); | |
maxx = getmaxx(); | |
maxy = getmaxy(); | |
} | |
void cdisplay(int size, int x, int y) | |
{ | |
int i, rc; | |
float theta; | |
for (i = 0; i < NUMBER; i++) { | |
theta = i * 2 * PI / NUMBER; | |
rc = random(16); | |
tdisplay(size, theta, x, y, rc); | |
} | |
} | |
void tdisplay(int size, float theta, int x, int y, int rcolor) | |
{ | |
int i, chg, newsize; | |
for (i = 0; i < size; i++) { | |
chg = (random(DENOM) < NUME) ? -1 : 1; | |
theta += chg * DTHETA; | |
x += RAD * sin(theta); | |
y += RAD * cos(theta); | |
if (size < 4) | |
setcolor(rcolor); | |
else if (size < 13) | |
setcolor(GREEN); | |
else if (size < 40) | |
setcolor(LIGHTGREEN); | |
else | |
setcolor(YELLOW); | |
lineto(x, y); | |
} | |
if (size > MIN) { | |
newsize = size / REDUX; | |
cdisplay(newsize, x, y); | |
} | |
} | |
void bucket() | |
{ | |
setcolor(WHITE); | |
ellipse(xo, yo, 0, 360, 30, 9); | |
setfillstyle(SOLID_FILL, RED); | |
fillellipse(xo, yo, 30, 9); | |
setfillstyle(LTBKSLASH_FILL, BROWN); | |
ellipse(xo + 30, yo + 28, 90, 252, 12, 25); | |
delay(1150); | |
ellipse(xo - 30, yo + 28, -70, 94, 12, 25); | |
delay(1150); | |
ellipse(xo + 25, yo + 83, -69, 90, 12, 30); | |
delay(1150); | |
ellipse(xo - 25, yo + 83, 88, 252, 12, 30); | |
delay(1150); | |
ellipse(xo, yo + 116, 151, 388, 32, 9); | |
delay(1150); | |
floodfill(xo, yo + 50, WHITE); | |
} | |
void main() | |
{ | |
int size; | |
init_graph(); | |
xo = maxx >> 1; | |
yo = (maxy >> 1) - 80; | |
xo++; | |
yo++; | |
bucket(); | |
randomize(); | |
size = SEGS; | |
delay(1150); | |
cdisplay(size, xo, yo); | |
getch(); | |
closegraph(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment