// 程序名称:烟花
// 编译环境:VC6.0,EasyX
#include
#include
#include
#define PI 3.1415926
void star(int x,int y);
//画星星
void drawmoon();
//画月亮
void drawstar();
//画星空
void starflower1();
//烟花绽放1
void starflower2();
//烟花绽放2
int main()
{
int i;
initgraph(640, 480);
// 初始化绘图窗口
line(100, 421, 540, 421);
// 画地平线
drawstar();
//画星空
while(!kbhit())
{
starflower1();
//烟花绽放函数1
starflower2();
//烟花绽放函数2
Sleep(10);
}
getch();
closegraph();
// 关闭绘图窗口
return 0;
}
void star(int x,int y)
//画星星函数
{
int i,a;
int n=5;
int x1[5],y1[5],x2[5],y2[5];
setcolor(YELLOW);
for(i=0;i<5;i++)
{
x1[i]=(int)(x+n*cos(i*72*PI/180) + 1);
y1[i]=(int)(y+n*sin(i*72*PI/180) + 1);
x2[i]=(int)(x+n/2*cos(i*72*PI/180+PI/5) + 1);
y2[i]=(int)(y+n/2*sin(i*72*PI/180+PI/5) + 1);
}
for(i=0;i<5;i++)
{
a=i+1;
if(a>4) a=0;
line(x1[i],y1[i],x2[i],y2[i]);
//两点间画直线
line(x2[i],y2[i],x1[a],y1[a]);
}
}
void drawmoon()
//画月亮
{
setfillcolor(WHITE);
//fillcircle(550,80,40);//画圆(有边框)
solidcircle(550,80,40);//画圆(无边框)
}
void drawstar()
//画星空
{
int a[]={40,250,140,140,90,350,300};
int b[]={40,25,99,100,98,60,78},i;
//setfillstyle(1,14);
for(i=0;i<10;i++)
{
star(a[i],b[i]);
floodfill(a[i],b[i],YELLOW);
}
drawmoon();
}
void starflower1()
//烟花绽放函数1
{
double h,v,dv;
// 高度, 速度(方向向下),加速度(每 1/50 秒)
{
h=470,v= 54,dv= 9.8 / 10;
while(h>=200)
{
h-=(v - dv / 2);
v = v * 0.9;
setcolor(GREEN);
setfillcolor(RED);//填充颜色为蓝色
fillcircle(300,int(h), 5);
Sleep(20);
// 延时
// 擦掉球
setcolor(BLACK);
setfillcolor(BLACK);//填充颜色为黑色
fillcircle(300,int(h), 5);
Sleep(10);
}
}
}
void starflower2()
//烟花绽放函数2
{
int i=0,j,n=60, x=300,y=200, px,py;
while(1)
{
if(i<100)
{
for(j=0;j
{
px=(int)(x+i*cos(j*360/n*PI/180) + 1);
py=(int)(y+i*sin(j*360/n*PI/180) + 1);
putpixel(px-1,py,BLUE);
putpixel(px,py+1,BLUE);
putpixel(px+1,py-1,YELLOW);
putpixel(px,py-1,YELLOW);
putpixel(px+1,py,RED);
putpixel(px+1,py+1,RED);
}
//画圆擦掉
Sleep(10);
setfillcolor(BLACK);
solidcircle(300,200,101);
}
i+=2;
if(i>=100)
break;
}
}