|
程实现模拟雪花自由下落的过程,并在屏幕中显示“HAPPY NEW YEAR”,要求字体在雪花下落的过程中不停的改变颜色。 l 雪花的绘制 在雪花绘制的过程中使用了line()函数及数学函数sin、cos,这里使用数学函数主要是来确定以(200,200)为起点向外画直线所需的六个点的坐标。line()函数完成从(200,200)分别到这六个点的连线。这样一个简单的雪花就化成了。 l 雪花的飘落过程 实例中雪花出现的位置及下落过程都是随机产生的,这样会使整个界面看起来错落有致,还有一点十分关键需要注意,就是在实现雪花下落的过程中要擦除雪花下落的痕迹,我们通常采用前面保存好的一块屏幕背景区域来擦除便可。 #include <stdlib.h> #include <math.h> #include <graphics.h> int size, color = 1; void *save1, *save2; void save(); void dsnow(); void font(); struct Snow { int x; int y; int speed; } snow[100]; void save() { int i, x, y; setcolor(WHITE); for (i = 1; i <= 6; i++) { x = 200+5 * sin(i *3.1415926 / 3); y = 200-5 * cos(i *3.1415926 / 3); line(200, 200, x, y); } size = imagesize(195, 195, 205, 205); save1 = malloc(size); save2 = malloc(size); getimage(195, 195, 205, 205, save1); getimage(100, 100, 110, 110, save2); } void font() { setcolor(color); settextstyle(0, 0, 4); outtextxy(80, 200, "HAPPPY NEW YEAR"); color++; if (color > 15) color =1; } 自定义dsnow()函数用来实现雪花飘落的过程。代码如下: void dsnow() { int a[66], i, num = 0; randomize(); for (i = 0; i < 66; i++) a[i] = (i - 2) *10; cleardevice(); while (!kbhit()) { font(); if (num != 100) { snow[num].speed = 2+random(10); i = random(66); snow[num].x = a[i]; snow[num].y = 0; } for (i = 0; i < num; i++) putimage(snow[i].x, snow[i].y, save2, COPY_PUT); font(); if (num != 100) num++; for (i = 0; i < num; i++) { snow[i].y += snow[i].speed; putimage(snow[i].x, snow[i].y, save1, COPY_PUT); if (snow[i].y > 500) snow[i].y = 0; } } } main() { int gdriver = DETECT, gmode; initgraph(&gdriver, &gmode, ""); save(); dsnow(); getch(); closegraph(); } |
|
你忽悠人呢把!graphics.h根本就是TC上的图形库类,不能用在任何的另外平台。我嘞个去!!!!
修改 删除 引用
|