版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
石家庄经济学院本科生课程设计报告书题目池塘夜降彩色雨系统姓名学号学院信息工程学院专业计算机方向指导教师完成日期:2012-池塘夜降彩色雨系统1需求分析设计一个程序,演示美丽的“池塘夜雨”景色:色彩缤纷的雨点飘飘洒洒地从天而降,滴滴入水有声,溅起圈圈微澜。具体要求: (1)雨点在空中的出现位置、雨点大小、降落过程的可见程度、入水位置、颜色、最大水圈等,都是随机确定的; (2)多个雨点按照各自的随机参数和存在状态,同时演示在屏幕上。可以适当调整控制雨点密度、大小、涟漪和状态变化的时间间隔等参数。该系统实现了池塘的夜晚,下起了五彩的雨点的自然现象。2概要设计该系统旨在描绘一幅池塘夜雨的动态图,因此应该关注每一滴雨点:(1)每个雨点的存在周期可分为三个阶段:从天而降、入水有声和入水涟漪,需要一个记录存储其相关参数、当前状态和下一状态的更新时刻。(2)雨点下降的可见程度应是断断续续、依稀可见;入水涟漪应是由里至外逐渐扩大和消失的。(3)每个雨点发生时,生成其记录,并预置下一个雨点的发生时间。(4)用一个适当的结构管理当前存在的雨点,使系统能利用它按时更新每个雨点的状态,一旦有雨点的水圈全部消失,就从结构中删去。根据以上的分析,可以将整个系统的数据类型定义如下ADTgraphList{数据对象:D={ai|ai∈Charset,I=1,2,3,···,n,n≥0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D,ai-1<ai,I=2,···,n}根本操作:initgraphics(void)操作结果;图形模式的初始化rainDrop*creatDrop(void)操作结果;构造雨点drawRainLine(structrainDrop*p)初始条件:雨点已经产生操作结果;画雨点下落路线creatRain(void)初始条件:雨点已经产生操作结果;产生雨连续下落的效果setwinddirection(structrainDrop*p)初始条件:雨点已经开始下落操作结果:风向的设置〔无风,东风,西风updateRainLineData(structrainDrop*p)初始条件:雨点已经产生操作结果;雨点的下落过程更改updateRainCircleDataandfloatradius(structrainDrop*p)初始条件:雨点已经出现且落在湖面上操作结果;水圈涟漪的设计rainDropDown(structrainDrop*p)初始条件:雨点下落到湖面操作结果;使雨点在落到湖面上消失drawRainCircle(structrainDrop*p)初始条件:水圈涟漪已存在操作结果;水圈涟漪的画出clearRainLine(structrainDrop*p)初始条件:雨点已经出现且已经画出了一段痕迹操作结果;去除雨点的滑落路线clearRainCircle(structrainDrop*p)初始条件:水圈涟漪已存在操作结果;去除水圈涟漪clearAll(void)操作结果:去除所有}ADTgraphList程序的主要模块包括四个局部:主函数void〔main〕设定雨滴大小creatDrop(void)structrainDrop*prainLineLength(structrainDrop*p)风向的设置setWindDirection(structrainDrop*p)结束end各大模块的调用关系:主程序雨滴的设置3详细设计StructrainCircle//定义水圈的相关数据{//横坐标、纵坐标、路线步骤、水圈半径intx;//横坐标inty;//纵坐标intcutR;//水圈初始半径intr;//水圈变化后的半径intrainCircleStep;//水圈产生的步骤}Structraindrop//定义雨点下落的过程的数据{intstartX;//开始的横坐标intstartY;//开始的纵坐标intendY;//结束的纵坐标intcurX;//每个雨点消失的横坐标intcurY;//每个雨点消失的纵坐标intrainColor;//雨点的的颜色intrainLineStep;//雨点下落的路径intrainLineLength;//雨点的长度intstatus;//判断是否到达湖面structrainCirclewater;//产生涟漪structraindrop*next;//指向下一颗雨点}Voidinitgraphics(void)//图形函数的初始化{intgmodegdiver;gdriver=DETECT;initgraph(&gdriver,&gmode,”D:\\TC”)//其中gdriver和gmode分别表示图形驱动器和模式,“D:\\TC”是指的图形驱动程序所在的目录路径}Structraindrop*creatDrop(void)//雨点开始产生时的随机设置{Structraindrop*p;P=(structraindrop*)molloc(LEN);p->startX=rand()%640;//随机产生的位置Xp->startY=rand()%430;//随机产生的位置Yp->endY=430+rand()%50;//结束坐标p->curX=p->startX;//每个雨点消失的横坐标p->curY=p->startY;//每个雨点消失的纵坐标p->rainLineStep=8://共分8个步骤p->rainColor=rand()%15+1;//彩色的随机产生p->rainLineLenth=rand()%10+10;//雨点大小的随即产生p->status=0;p->water.x=p->startX;p->water.y=p->startY;//随机产生的涟漪的位置p->water.r=p->rand()%45;//随机产生涟漪的半径p->water.curR=rand()%3;//涟漪消失的半径p->water.rainCircleStep=rand()%3+1;p->next=NULL;return(p);}VoidrecreatatDrop(structraindrop*p)//重复产生雨点{p->startX=rand()%640;//随机产生的位置Xp->startY=rand()%430;//随机产生的位置Yp->endY=430+rand()%50;//结束坐标p->curX=p->startX;//每个雨点消失的横坐标p->curY=p->startY;//每个雨点消失的纵坐标p->rainLineStep=8://共分8个步骤p->rainColor=rand()%15+1;//彩色的随机产生p->rainLineLenth=rand()%10+10;//雨点大小的随即产生p->status=0;p->water.x=p->startX;p->water.y=p->startY;//随机产生的涟漪的位置p->water.r=p->rand()%45;//随机产生涟漪的半径p->water.curR=rand()%3;//涟漪消失的半径p->water.rainCircleStep=rand()%3+1;}VoidcreatRain(void)//重复雨点的产生,使之连续不断{StructrainDrop*p1*p2;IntI;p1=p2=creatDrop();head=p1;for(i=0;inext=p2;)p1=p2;}}VoidupdateRainLineData(structrainDrop*p){//每次下落雨点的数目If(p->rainLineStep%5==0)p->rainLineStep++;p->curY+=p->rainLineStep;p->startY=p->curY-p->rainLineLength;}VoiddrawRainLine(structrainDrop*p)//雨点下落的轨迹{switch(p->rainColor){case0:setcolor(RED);break; case1:setcolor(GREEN);break; case2:setcolor(BLUE);break; case3:setcolor(CYAN);break; case4:setcolor(MAGENTA);break; case5:setcolor(BROWN);break; case6:setcolor(LIGHTRED);break; case7:setcolor(LIGHTMAGENTA);break; case8:setcolor(WHITE);break; case9:setcolor(LIGHTGRAY);break; case10:setcolor(DARKGRAY);break; case11:setcolor(LIGHTBLUE);break; case12:setcolor(LIGHTGREEN);break; case13:setcolor(LIGHTCYAN);break; case14:setcolor(YELLOW);break; system("pause");}setlinestyle(0,0,1);line(p->startX,p->startY,p->curX+w,p->curY+5);//w表示终点坐标相对初始点产生的偏移,使之产生风的效果}voidclearRainLine(structrainDrop*p)//去除雨点的轨迹{setcolor(BLACK);line(p->startX,p->startY,p->curX+w,p->cueY+5);}VoidrainDropDown(structrainDrop*p)//构造雨点的下落效果{//如果发生坐标大于结束坐标,雨点的下落效果产生;If(p->curY>=p->endY){clearRainLine(p);p->status=1;}else{clearRainLine(p);//去除原来雨点的轨迹updateRainLineData(p);//产生新雨点的线路drawRainLine(p);//画出新路线}}VoidupdateRainCircleData(structrainDrop*p)//涟漪的消失半径{p->water.curR+=p->water.rainCircleStep;}VoiddrawRainCircle(structrainDrop*p)//画出涟漪{setcolor(p->rainColor);circle(p->water.x,p->water.y,p->water.curR);}VoidclearRainCircle(structrainDrop*p)//去除涟漪{setcolor(BLACK);circle(p->water.x,p->water.y,p->water.curR);}VoidfallToWater(structrainDrop*p)//落水动画{if(p->water.curR>=p->water.r){clearRainCircle(p);recreatDrop(p);}else{clearRainCircle(p);updateRainCircleData(p);drawRainCircle(p);}}Voidrain(void)//下雨动画{structrainDrop*p;p=head;while(!kbhit()){if(p=NUll)p=head;else{if(p->bottom==0)rainDropDown(p);elsefallToWater(p);}dalay(downDelay);p=p->next;}}VoidclearAll(void)//去除所有;{structrainDrop*p*pf;p=head;while(p!=NUll){
pf=p;p=p->next;free(pf);}closegraph();//关闭图像}主函数voidmain(){printf("----------------------------ColorfulRain---------------------------\n");printf("请用户输入雨滴数量:");//请用户输入雨滴数量scanf("%d",&rainDropNumber);printf("请用户输入下雨的速度:");//输入下雨的速度scanf("%d",&downSpeed);printf("请用户输入风速(-3,-2,-1,0,1,2,3):");//输入风力,负号向左,正号向右;scanf("%d",&w);rand();initgraphics();setbkcolor(BLACK);//设置背景为黑色setfillstyle(BLUE);//画出池塘并将其填充为蓝色bar(0,390,640,480);creatRain();rain();clearAll();}开始开始输入雨点数量输入雨速输入风向画出雨点路径会出夜幕和池塘产生雨点去除雨点路径画出水圈关闭图形是否继续去除水圈结束否是4编码调试输入界面:雨滴数目;雨下落速度;风向以及大小输入:雨量:0速度:0风力:0输入:雨量:50速度:0风力:0输入:雨量:50速度:1风力:3输入:雨量:150速度:0风力:-3输入:雨量:500速度:0风力:-35设计体会1.本次课程设计是模拟夜幕之中的池塘降落五彩雨滴的动态过程。在开始选择这个题目的时候根本是凭着名字吸引,但是通过书本、网络明白了本实验旨在演示美丽的“池塘夜雨”景色:色彩缤纷的雨点飘飘洒洒地从天而降,滴滴入水有声,溅起圈圈微澜。调试过程中:一开始就在VC中编程,但是VC中没有graphics.h文件,通过上网搜索终于解决了。但是之后又遇到了VC无法实现彩色雨的显示,通过老师的帮助,用switc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 25上保教知识与能力理论精讲8
- 2026新疆和田地区殡仪馆面向社会招聘编制外殡葬服务人员1人笔试题库及参考答案详解【完整版】
- 2026福建泉州市南安市国专第四小学顶岗合同教师招聘模拟试卷含完整答案详解【典优】
- 2026四川雅安市石棉县人力资源和社会保障局第二批就业见习岗位57人考前冲刺试卷【全优】附答案详解
- 2026云南永德县农业农村局招聘特聘动物防疫专员3人考前冲刺试卷AB卷附答案详解
- 2026云南昆明宜良县第一人民医院招聘见习人员18人笔试题库附完整答案详解【全优】
- 2026云南临沧云县零工市场西南泓瑞口腔医疗服务临沧有限公司招聘30人考前冲刺试卷及参考答案详解1套
- 2026四川绵阳市盐亭县川省属公费师范毕业生直接考核招聘8人备考题库及答案详解【典优】
- 二年级下册评语
- 2026年大学三年级(航空服务)特殊旅客服务阶段测试题及答案
- HG/T 3706-2024 工业用金属孔网管骨架聚乙烯复合管(正式版)
- 江苏南通艺术剧院招考聘用工作人员2人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 人力资源外包投标方案
- 《复变函数与积分变换》第三版课后习题及答案
- 《园林植物病虫害防治》课程标准
- 四川大学高等学历继续教育本科生毕业论文样本格式
- 巴啦啦小魔仙被挠脚
- 交接班管理制度车间交接班制度生产车间交接班制度
- 仪器内校员培训教材
- 软体家具领域:顾家家居企业组织结构及部门职责
- 中小学会计制度测试题及答案
评论
0/150
提交评论