池塘夜降彩色雨课程设计报告_第1页
池塘夜降彩色雨课程设计报告_第2页
池塘夜降彩色雨课程设计报告_第3页
池塘夜降彩色雨课程设计报告_第4页
池塘夜降彩色雨课程设计报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课 程 设 计 课程名称 数据结构 题目名称 1.6池塘夜降彩色雨(难度4)学生学院 计算机学院 专业班级 计算机科学与技术12 学 号 学生姓名 指导教师 2010 年 7 月 7日 池塘夜降彩色雨系统1需求分析设计一个程序,演示美丽的“池塘夜雨”景色:色彩缤纷的雨点飘飘洒洒地从天而降,滴滴入水有声,溅起圈圈微澜。具体要求:(1)雨点在空中的出现位置、雨点大小、降落过程的可见程度、入水位置、颜色、最大水圈等,都是随机确定的;(2)多个雨点按照各自的随机参数和存在状态,同时演示在屏幕上。可以适当调整控制雨点密度、大小、涟漪和状态变化的时间间隔等参数。该系统实现了池塘的夜晚,下起了五彩的雨点的自

2、然现象。2概要设计根据题目要求的分析,可以将整个系统的数据类型定义如下ADTgraphList数据对象:D=ai|aiCharset,I=1,2,3,n,n0数据关系:R1=|ai-1,aiD,ai-1startX=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-rai

3、nLineLenth=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);Void recreat atDrop(struct raindrop *p)/重复产生雨点/跟雨点开始的随机设置是一样的Void creatRain(void)/重复雨点

4、的产生,使之连续不断/用随机产生雨点,重复产生,使得雨点连续不断void updateRainLineData(struct rainDrop *p)/这个是每次下落雨点的数目void drawRainLine(struct rainDrop *p)/画出雨点的下落的轨迹void clearRainLine(struct rainDrop *p)/清除雨点的轨迹if(p-curYstartX,p-startY,p-curX,p-curY); if(p-curY400) setcolor(BLUE);/到了水面之后用蓝色清除雨点的轨迹 line(p-startX,p-startY,p-curX,

5、p-curY);void rainDropDown(struct rainDrop *p)/构造雨点的下落效果/如果发生坐标大于结束坐标,雨点的下落效果产生 if(p-curY=p-endY) clearRainLine(p); p-status=1; else clearRainLine(p);/清除原来雨点的轨迹 updateRainLineData(p);/产生新雨点的线路 drawRainLine(p);/画出新路线 void updateRainCircleData(struct rainDrop *p)/水圈的消失半径 p-water.curR+=p-water.rainCircl

6、eStep;void drawRainCircle(struct rainDrop *p)/画出水圈的半径,包括颜色和大小void clearRainCircle(struct rainDrop *p)/消除水圈/由于池塘是蓝色的,所以用蓝色来刷新水圈的填充色 setcolor(BLUE); circle(p-water.x,p-water.y,p-water.curR);void fallToWater(struct rainDrop *p)/这个是落水的动画void rain(void)/下雨的动画/里面有个计时器,构造下雨的动画void clearAll(void)/清除所有的东西/里面

7、有个closegraph是用来关闭图像的 main()/主函数 int w; printf(Input rainDrop Number:(300); scanf(%d,&rainDropNumber);/输入雨量,小于300 printf(Input down Delay:(50); scanf(%d,&downDelay);/输入雨点下落速度,小于50 randomize(); initgraphics(); setbkcolor(BLACK);/画出背景 setfillstyle(1,BLUE); bar(0,390,640,480);/构造池塘 creatRain(); rain();

8、clearAll();/调用各个模块 开始 输入雨量 输入雨速画夜幕池塘 产生雨点 雨点路径 结束 关闭图像继续? 清除水圈 画出水圈 清除路径否是4 编码测试 输入界面,输入雨点数,雨速 输入雨量50,雨速1输入雨量150,雨速15 设计体会选题的时候,主要是这个主题吸引了我,池塘夜降彩色雨,一听名字就是要做出一个动画出来的,所以很好奇做出来是什么效果,然后就想尝试一下。一接触的时候无从下手,从来没有用过图形库。然后一开始用的是vc来编程,怎么也弄不出来,后来发现vc中没有tc中的graphics.h的库。然后就开始在网上找关于这个库的资料,慢慢的从画一个圆圈入手,慢慢的把图形做出来,勉勉强强的把效果弄出来了,能力有限,本来想加一个风的效果的,可是做不出来,只能做出夜降彩色雨。有点遗憾。这个程序中使用的就是简单的链表,采用带头结点的循环链表,仅需改变头尾两个指针即可。creatRain,drawRainLine和rainDropDown以及确定链表中第一个结点和之后一个结点的运算时间都是O(l),销毁雨点线路算法clearRainLine和销毁水圈算法clearRainCircle都是对每个元素调用一个O(1)的函数,因此都是O(n),也有简单的图表的应用,也有对链表的的应用,即双向循环链表的使用。课程设计做完了,做的不完美

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论