您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 计算机技术基础(c语言)课程设计-雪花飘落
计算机技术基础课程设计C语言设计报告题目:雪花飘落一、选题背景:本例实现一个综合的雪花飘落现象,用户可以观察到雪花飘落的过程、用户通过控制输入雪花的大小,雪花的数量,飘落的速度等实现雪花飘落。二、设计思想:编程思路:首先在程序开始处,开通语句#includestdlib.h引入头函数,建立函数,然后定义结构体变量Snow,并且编写雪花的一系列操作的函数;最后在main函数的内部实现对各子函数的调用,实现雪花飘落的过程。三.主要解决问题的方法及技术关键1.用keyx,keyy函数完成对内存空间保存,用DrawSnow函数完具体实现,change函数改变雪的颜色,Choose选择演示内容Init(void),Close(void)函数完成图形驱动和关闭等。2.结构体函数实现图形的关闭,区域保存,在雪中输出文字等.用While,for循环,If语句等完成雪花的设计,包括速度、颜色、显示标题、闪烁效果等。3.用起泡排序、汉诺塔、双链表、起泡排序、基数排序、二分查找、二叉树遍历等设置雪花颜色。四.程序流程图执行main()主函数执行雪花飘动DrawSnow()函数执行选择演示内容Choose()函数执行图形驱动Init()函数执行保存区域Copy()函数执行initgraph()函数执行cleardevice()函数申请空间、保存雪花及背景黑色生成雪花、改变颜色、画雪、去雪设置颜色,边框、标题等大小五、程序清单:/*源程序*//***dsdemo.c演示系统***/#includestdlib.h#includegraphics.h#defineESC0x011b#defineENTER0x1c0d#defineDOWN0x5000#defineUP0x4800structSnow/*雪的一些参数*/{intx;inty;intspeed;/*雪花的速度*/}snow[100];structStar/*星星的一些参数*/{intx;inty;intcolor;}star[200];intkey;/*按键变量*/intkeyx,keyy;/*选项键的坐标*/执行结束画面DrawStar()函数Choose()选择演示内容函数执行Close()函数执行exit(0)函数生成,输出,去除星星执行getch(),closegraph()函数Choose()选择演示内容函数intsnownum=0;/*雪的个数*/intsize;/*保存区域的大小*/intchange=10;/*变颜色有关*/void*save1,*save2;/*保存空间*/voidCopy(void);/*保存区域*/voidDrawSnow(void);/*具体实现*/voidPr(void);/*输出字体*/voidChoose(void);/*选择演示内容*/voidDrawStar(void);/*最后的星星效果*/voidDrawBall(intx,inty,intcolor);/*画选择的球体*/voidInit(void);/*图形驱动*/voidClose(void);/*图形关闭*/voidmain(void){Init();Copy();DrawSnow();/*雪花飘动*/Choose();/*选择演示内容*/DrawStar();/*结束画面*/Close();exit(0);}voidInit(void){intgd=DETECT,gm;initgraph(&gd,&gm,c:\\tc);cleardevice();}voidClose(void)/*图形关闭*/{getch();closegraph();}voidCopy(void)/*保存区域*/{setcolor(0);setfillstyle(SOLID_FILL,15);fillellipse(200,200,4,4);size=imagesize(196,196,204,204);/*定义保存图象区域大小*/save1=malloc(size);/*申请空间*/save2=malloc(size);getimage(196,196,204,204,save1);/*保存雪花*/getimage(96,96,104,104,save2);/*保存背景黑色*/}voidPr(void)/*在雪中输出文字*/{settextstyle(0,0,1);if(change=20&&change=30||change=50&&change=60||change=100&&change=110)/*闪烁效果*/setcolor(YELLOW);elsesetcolor(BLACK);outtextxy(250,250,anykeytocontinue);setcolor(change/10);/*变换颜色显示标题*/settextstyle(0,0,3);outtextxy(100,200,DataStructureDemo);/*标题*/}/*显示雪花的具体过程*/voidDrawSnow(void){inti;intsx[62];randomize();for(i=0;i62;i++)/*定义雪花的x坐标*/sx[i]=(i+2)*10;cleardevice();while(!kbhit()){Pr();if(snownum!=100)/*生成新的雪花*/{snow[snownum].speed=2+random(5);/*速度随机定,但不小于2*/i=random(62);snow[snownum].x=sx[i];/*随机取x坐标*/snow[snownum].y=10-random(100);}for(i=0;isnownum;i++)/*去雪*/putimage(snow[i].x,snow[i].y,save2,COPY_PUT);Pr();/*显示标题*/if(snownum!=100)snownum++;setfillstyle(SOLID_FILL,15);/*画雪*/for(i=0;isnownum;i++){snow[i].y+=snow[i].speed;putimage(snow[i].x,snow[i].y,save1,COPY_PUT);if(snow[i].y500)snow[i].y=10-random(200);}change++;if(change==140)/*颜色变化*/change=10;}}/*画选择的球体x和y为坐标,color为球的颜色*/voidDrawBall(intx,inty,intcolor){setcolor(0);setfillstyle(SOLID_FILL,color);fillellipse(x,y+10,10,10);}/*选择演示函数*/voidChoose(void){intyes;/*判断是否退出选项,1不退出0退出*/intoyes=1;while(oyes){Init();cleardevice();yes=1;keyx=140;keyy=150;setcolor(11);rectangle(40,40,600,440);/*画边框线/setcolor(13);settextstyle(0,0,3);/*标题大一些*/outtextxy(100,70,DataStructureDemo);settextstyle(0,0,2);/*其它选项小一些*/setcolor(RED);outtextxy(200,150,hanoitower);/*汉诺塔*/setcolor(BLUE);outtextxy(200,190,doublelink);/*双链表*/setcolor(GREEN);outtextxy(200,230,bubblesorting);/*起泡排序*/setcolor(YELLOW);outtextxy(200,270,radixsorting);/*基数排序*/setcolor(10);outtextxy(200,310,binaryserach);/*二分查找*/setcolor(MAGENTA);outtextxy(200,350,binarytree);/*二叉树遍历*/setcolor(WHITE);outtextxy(200,390,exit);/*结束程序*/DrawBall(keyx,keyy,11);while(yes)/*选项的循环条件*/{key=bioskey(0);if(key==ESC)/*退出系统*/break;if(key==UP)/*上键盘操作*/{DrawBall(keyx,keyy,BLACK);/*先用黑色在原来位置去除球*/if(keyy!=150)keyy-=40;elsekeyy=390;DrawBall(keyx,keyy,11);/*新位置输出球*/}if(key==DOWN)/*下键盘操作*/{DrawBall(keyx,keyy,BLACK);/*先用黑色在原来位置去除球*/if(keyy!=390)keyy+=40;elsekeyy=150;DrawBall(keyx,keyy,11);/*新位置输出球*/}if(key==ENTER)/*确定键*/{switch(keyy)/*判断内容*/{case150:system(hanoi);yes=0;break;/*调用汉诺塔*/case190:system(dblink);yes=0;break;/*调用双链表*/case230:system(bubble);yes=0;break;/*调用起泡排序*/case270:system(radix);yes=0;break;/*调用基数排序*/case310:system(binary);yes=0;break;/*调用二分查找*/case350:system(tree2);yes=0;break;/*调用二叉树*/case390:yes=0;oyes=0;/*exit选项*/}/*endswitch*/}/*endenter*/}/*endwhile*/}/*endwhile*/}/*结束画面*/voidDrawStar(void){inti;cleardevice();setcolor(GREEN);settextstyle(0,0,2);while(!kbhit()){for(i=0;i200;i++)/*随机生成星星*/{star[i].x=random(640);star[i].y=random(480);star[i].color=random(13)+1;}for(i=0;i200;i++)/*输出星星*/{putpixel(star[i].x,star[i].y,star[i].color);delay(100);}outtextxy(100,200,Thankyouforusethissystem);sleep(1);for(i=0;i200;i++)/*去除星星*/{putpixel(star[i].x,star[i].y,0);delay(50);}}}六.总结、设计结果说明1、通过本程序的练习可以使读者掌握汉诺塔、起泡排序、基数排序、二分查找、二叉树等函数的使用方法。2、过本程序的练习使读者掌握关于结构体、链表、循环语句的知识。
本文标题:计算机技术基础(c语言)课程设计-雪花飘落
链接地址:https://www.777doc.com/doc-1884106 .html