#include<time.h> #include<stdlib.h> #include<graphics.h> #include<conio.h> #include<dos.h> #include<math.h> #define step 10 #define R 10 main() { int gdriver=9,gmode=2; static int startx=5; static int starty=100; int maxx,l=1,n=1; double dalta=20,angle; int size; void *image; /*registerbgidriver( EGAVGA_driver );*/ /*注册vga驱动*/ initgraph(&gdriver,&gmode,"c:\\tc"); /*初始化图形界面*/ cleardevice(); /*清除屏幕*/ setbkcolor(BLUE); /*将背景色设置成蓝色*/ size=imagesize(startx,starty,startx+60,starty+60); /*计算生成60×60个象素的图需要的字节数*/ image=(unsigned char *)malloc(size); /*分配内存*/ maxx=getmaxx(); /*获得屏幕显示x轴的最大值*/ while(!kbhit()) /*如果没有按键就不停的循环*/ { if(l==1) /*从左到右*/ { n++; angle=-1*(n*step)/M_PI*180/R; if((int)(-1*angle)%360<dalta) angle-=dalta; if(n>(maxx-70)/step) l=0; } if(l==0) /*从右到左*/ { --n; angle=-1*(n*step)/R/M_PI*180; if((int)(-1*angle)%360<dalta) angle-=dalta; if(n==1)l=1; } rectangle(startx+n*step,starty,startx+n*step+60,starty+40); /*画车厢*/ pieslice(startx+n*step+15,starty+50,angle,angle-dalta,10); /*画轮上的小片扇形部分*/ pieslice(startx+n*step+45,starty+50,angle,angle-dalta,10); setcolor(YELLOW); /*设置前景色为黄色*/ setfillstyle(SOLID_FILL, YELLOW); /*设置填充模式为实填充,颜色为黄色*/ circle(startx+n*step+15,starty+50,10); /*画车轮*/ circle(startx+n*step+45,starty+50,10); circle(startx+n*step+15,starty+50,3); circle(startx+n*step+45,starty+50,3); getimage(startx+n*step,starty,startx+n*step+60,starty+60,image); /*获取当前的图片*/ delay(100); putimage(startx+n*step,starty,image,XOR_PUT); /*使用异或模式将图片显示上去*/ } free(image); closegraph(); }