1、图形变换C语言课程设计材料学号 - 第二学期C语言程序设计课程设计报告题目:图形变换专业:网络工程班级:16(3)姓名:代应豪指导教师:代美丽成绩:计算机学院 年 5月 10日目录- 1 -1 设计要求- 2 -2 程序功能- 2 -3 核心算法- 2 -4 程序代码- 2 -5 运行结果- 2 -6 程序创新说明- 3 -参考文献- 3 -C语言图形程序设计主要内容包括图形模式的初始化、基本图形功能、图形窗口以及图形模式下的文本输出等图形函数的使用,以及按键处理和声音等。学生根据C语言图形程序设计指导书,经过编辑、编译、调试、运行示例代码,逐步掌握C语言图形应用程序中常见函数的作用与使用方法
2、,并综合运用C语言程序设计课程所学知识,设计、实现具有创新功能的程序。成果物是一个综合性较好的图形应用程序和项目报告。1 设计要求设计并实现一个独特的图形应用程序。要求程序功能完整;包含屏幕颜色设置、图形绘制与填充、图形窗口设置、图形模式下文本输出、按键操作等;用户界面友好;代码量500行以上。2 程序功能使用if,for,switch,circle,line,arc及另外一些图形化编程函数实现一些画面效果(形状颜色变化,字体颜色大小设置等),最后使用line画线的方法画出中文“再见“二字。3 核心算法大量使用for循环,switch、if判断来实现一些画面的变化;大量使用函数调用的方式来保持
3、代码的整洁;使用delay()函数来延迟两幅画面切换的时间;大量使用图形化编程的函数和方法来实现画面效果。注:流程图无能为力了,不会画。4 程序代码#include#include#include#include/*模块化编程*/*函数调用*/void start();void tuoyuan();void guochang();void kaitou();void huaban();void tree();void moon();void end();void zai();void jian();main()int gdriver;int gmode;int i;int line;clrsc
4、r();gdriver=DETECT;initgraph(&gdriver,&gmode,C:TC20BGI);kaitou();start();getch();tuoyuan();delay(800);setbkcolor(15);cleardevice();/*插入眼睛像*/ellipse(320,240,0,360,30,17.5);setcolor(4);circle(320,240,17.5);setfillstyle(1,4);floodfill(320,240,4);/*画颜色渐变同心圆*/for(i=0;i=30;i+)setcolor(i);circle(320,240,20
5、+i*10);delay(80);delay(800);guochang();delay(1000);cleardevice();huaban();moon();tree();delay(500);cleardevice();end();setbkcolor(6);zai();delay(1000);/*开头过渡*/void start()int gd;int gm;gd=DETECT;initgraph(&gd,&gm,C:TC20BGI);randomize();cleardevice();setbkcolor(3);setcolor(4);settextstyle(0,0,2);outt
6、extxy(100,160, tttt ARE YOU READY?!);settextstyle(0,0,2);outtextxy(100,240, Input any key,lets go!); /*画一些形状颜色渐变椭圆*/void tuoyuan()int x=360;int y=160;int driver;int mode=VGAHI;int num=20;int i;int t;int b;driver=DETECT;initgraph(&driver,&mode,C:/TC20/BGI);t=y-30;b=y-30;setbkcolor(0);for(i=0;inum;i+)
7、setcolor(i+2-1);ellipse(200,230,0,360,t,b);t-=5;b+=5;delay(300);for(i=0;i20;i+)setcolor(i+2-1);ellipse(470,240,0,360,t,b);t+=5;b-=5; /*画变色圆周运动*/void guochang()int gdriver;int i;int b;int c;int gmode;gdriver=DETECT;initgraph(&gdriver,&gmode,C:TC20BGI);setbkcolor(13);for(c=1;c9;c+)switch(c)case 1:for(
8、i=1;i640;i+)if(i=1)setcolor(14);for(b=1;b240;b+)line(320, 240, 1, b);elsebreak;case 2:for(i=1;i640;i+)if(i=1)setcolor(4);for(b=240;b480;b+)line(320,240,1,b);elsebreak;case 3:for(i=1;i640;i+)if(i1)setcolor(6);line(320,240,i,479);elsebreak;case 4:for(i=1;i640;i+)if(i=320)setcolor(5);line(320, 240, i,4
9、79);elsebreak;case 5:for(i=640;i0;i-)if(i=639)setcolor(10);for(b=480;b240;b-)line(320,240,639,b);elsebreak;case 6:for(i=640;i0;i-)if(i=639)setcolor(3);for(b=240;b0;b-)line(320, 240,639, b);elsebreak;case 7:for(i=640;i0;i-)if(i=320)setcolor(9);line(320,240,i,1);elsebreak;case 8:for(i=640;i0;i-)if(i0)
10、setcolor(12);line(320, 240, i, 1);elsebreak;/*开头*/void kaitou()int i;int a;int b;int c;int gdriver;int gmode;char s30;clrscr();gdriver=DETECT;initgraph(&gdriver, &gmode, C:TC20BGI);setbkcolor(14);cleardevice();for(a=50;a640;)b=50;setcolor(4);circle(a,b,43);setcolor(9);ellipse(a,b,0,360,43,20);ellips
11、e(a,b,0,360,20,43);setcolor(7);ellipse(a,b,0,360,20,10);setcolor(8);circle(a,b,10);setfillstyle(1,8);floodfill(a,b,8);a=a+90;for(b=50;b480;)a=50;setcolor(4);circle(a,b,45);setcolor(9);ellipse(a,b,0,360,21,45);ellipse(a,b,0,360,45,21);setcolor(7);ellipse(a,b,0,360,22.5,12);circle(a,b,12);b=b+95;for(a
12、=50;a640;)b=430;setcolor(4);circle(a,b,43);setcolor(9);ellipse(a,b,0,360,43,20);ellipse(a,b,0,360,20,43);setcolor(7);ellipse(a,b,0,360,20,10);circle(a,b,10);a=a+90;for(b=50;b480;)a=590;setcolor(4);circle(a,b,45);setcolor(9);ellipse(a,b,0,360,21,45);ellipse(a,b,0,360,45,21);setcolor(7);ellipse(a,b,0,
13、360,22.5,12);circle(a,b,12);b=b+95;setviewport(100, 100, 540, 380, 0);setfillstyle(1, 2);setcolor(14);rectangle(0, 0, 439, 279);floodfill(50, 50, 14);setcolor(12);settextstyle(4, 0, 8);outtextxy(20, 20, TCH);setcolor(15);settextstyle(3, 0, 5);outtextxy(120, 120, DREAM START!);setcolor(14);settextsty
14、le(3, 0, 2);outtextxy(120, 200, Please input any key!);getch();closegraph();return 0;/*用math画颜色变化花瓣*/void huaban()float a,e;float x1,y1,x2,y2;int gdriver=DETECT,b;int gmode;initgraph(&gdriver,&gmode,C:/TC20/BGI);cleardevice();setcolor(GREEN);setbkcolor(0);for(b=1;b6;b+)switch(b)case 1:for(a=0.0;a2*3
15、.14;a+=2*3.14/720)e=100*(1+sin(4*a);x1=320+e*cos(a);x2=320+e*cos(a+3.14/5);y1=240+e*sin(a);y2=240+e*sin(a+3.14/5);setcolor(10);line(x1,y1,x2,y2);break;case 2:for(a=0.0;a2*3.14;a+=2*3.14/720)e=100*(1+sin(4*a);x1=320+e*cos(a);x2=320+e*cos(a+3.14/5);y1=240+e*sin(a);y2=240+e*sin(a+3.14/5);setcolor(12);l
16、ine(x1,y1,x2,y2);break;case 3:for(a=0.0;a2*3.14;a+=2*3.14/720)e=100*(1+sin(4*a);x1=320+e*cos(a);x2=320+e*cos(a+3.14/5);y1=240+e*sin(a);y2=240+e*sin(a+3.14/5);setcolor(14);line(x1,y1,x2,y2);break;case 4:for(a=0.0;a2*3.14;a+=2*3.14/720)e=100*(1+sin(4*a);x1=320+e*cos(a);x2=320+e*cos(a+3.14/5);y1=240+e*
17、sin(a);y2=240+e*sin(a+3.14/5);setcolor(1);line(x1,y1,x2,y2);break;case 5:for(a=0.0;a2*3.14;a+=2*3.14/720)e=100*(1+sin(4*a);x1=320+e*cos(a);x2=320+e*cos(a+3.14/5);y1=240+e*sin(a);y2=240+e*sin(a+3.14/5);setcolor(9);line(x1,y1,x2,y2);break;/*画树*/void tree()setcolor(8);line(80,400,80,440);line(80,440,75
18、,447);line(75,447,91,447);line(91,447,86,440);line(86,440,86,400);line(86,400,80,400);setfillstyle(6,8);floodfill(83,410,8);setcolor(2);line(83,330,55,400);line(55,400,111,400);line(111,400,83,330);setfillstyle(1,2);floodfill(60,390,2);line(83,290,55,360);line(55,360,111,360);line(111,360,83,290);se
19、tfillstyle(1,2);floodfill(80,310,2);delay(1000);/*画月亮*/void moon()setcolor(14);circle(570,70,40);setfillstyle(1,14);floodfill(570,70,14);/*倒数第二结尾,过渡*/void end()int gdriver;int gmode;gdriver=DETECT;initgraph(&gdriver,&gmode,C:/TC20/BGI);setbkcolor(3);setcolor(4);settextstyle(0,0,6);outtextxy(90,200,
20、THE END!);setusercharsize(10,1,4,1);settextstyle(3, 0, 2);outtextxy(220, 380, Please input any key!);getch();/*正式结尾*/*用横线拼出“再”*/void zai()int a,b,c,d,e,f,g,h,gdriver;int gmode;gdriver=DETECT;initgraph(&gdriver,&gmode,C:/TC20/BGI);for(a=70;a300;)setcolor(14);line(a,55,a,70);a=a+1;for(b=120;b350;)setc
21、olor(14);line(90,b,105,b);b=b+1;for(c=90;c280;)setcolor(14);line(c,120,c,135);c=c+1;for(d=120;d350;)setcolor(14);line(265,d,280,d);d=d+1;for(e=105;e265;)setcolor(14);line(e,180,e,195);e+=1;for(f=45;f325;)setcolor(14);line(f,240,f,255);f+=1;for(g=70;g=255;)setcolor(14);line(177.5,g,192.5,g);g+=1;for(
22、h=243;h=280;)setcolor(14);line(h,335,h,350);h+=1;jian();getch();/*用横线拼出“见”,并署名*/void jian()int a,b,c,d,e,f,g;for(a=380;a555;)setcolor(14);line(a,55,a,70);a+=1;for(b=55;b250;)setcolor(14);line(380,b,395,b);b+=1;for(c=55;c250;)setcolor(14);line(540,c,555,c);c+=1;for(d=220;d=350;)setcolor(14);line(486,
23、d,501,d);d+=1;for(e=486;e612;)setcolor(14);line(e,335,e,350);e+=1;for(f=280;f=350;)setcolor(14);line(597,f,612,f);f+=1;for(g=160;g=175;)setcolor(14);arc(g,90,-90,0,300);g+=1;settextstyle(1,0,1);outtextxy(335,420,TCH was written in -12-12 );5 运行结果 开头开头过渡一些颜色形状渐变椭圆颜色渐变同心圆颜色按顺序变化花瓣+树+月亮6 创新说明使用for循环语句画出一些形状颜色渐变的椭圆和同心圆;在椭圆里面画圆,并填充颜色,来实现眼睛的效果;使用switch,if判断,和for循环来实现颜色如风车般变化的动画;使用switch判断,for循环和line、数学函数来实现颜色变化的花瓣图案;使用for循环,line函数,计算坐标的方式来画出中文“再见”二字;参考文献1 全球最大中文IT社区.Turbo C图形函数 EB/OL, .32 C语言图形程序设计指导书