版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上课 程 设 计 课程名称 数据结构 题目名称 1.6池塘夜降彩色雨(难度4)学生学院 计算机学院 专业班级 计算机科学与技术12 学 号 学生姓名 指导教师 2010 年 7 月 7日 池塘夜降彩色雨系统 1 需求分析 设计一个程序,演示美丽的“池塘夜雨”景色:色彩缤纷的雨点飘飘洒洒地从天而降, 滴滴入水有声,溅起圈圈微澜。 具体要求: (1) 雨点在空中的出现位置、雨点大小、降落过程的可见程度、入水位置、颜色、最大水圈等,都是随机确定的 ; (2) 多个雨点按照各自的
2、随机参数和存在状态,同时演示在屏幕上。可以适当调整控制雨点密度、大小、涟漪和状态变化的时间间隔等参数。 该系统实现了池塘的夜晚,下起了五彩的雨点的自然现象。2概要设计根据题目要求的分析,可以将整个系统的数据类型定义如下 ADT graphList 数据对象:D=ai | ai Charset , I = 1,2,3,···,n, n0 数据关系:R1=<ai-1,ai> | ai-
3、1,aiD,ai-1<ai, I =2,···,n 基本操作: initgraphics(void) 操作结果;图形模式的初始化 rainDrop *creatDrop(void) 操作结果;构造雨点 drawRainLine(struct rainDrop *p)初始条件:雨点已经产生 操作结果;画雨点下落路线 creatRain(void) 初始条件:雨点已
4、经产生 操作结果;产生雨连续下落的效果 setwinddirection(struct rainDrop *p) 初始条件:雨点已经开始下落 操作结果:风向的设置(无风,东风,西风 updateRainLineData(struct rainDrop *p) 初始条件:雨点已经产生 操作结果;雨点的下落过程更改 updateRainCircleData and floatradius(struct rainDrop
5、0;*p) 初始条件:雨点已经出现且落在湖面上 操作结果;水圈涟漪的设计 rainDropDown(struct rainDrop *p) 初始条件:雨点下落到湖面 操作结果;使雨点在落到湖面上消失 drawRainCircle(struct rainDrop *p) 初始条件: 水圈涟漪已存在 操作结果;水圈涟漪的画出 clearRainLine(struct rainDrop *p)初始条件:雨点
6、已经出现且已经画出了一段痕迹 操作结果;清除雨点的滑落路线 clearRainCircle(struct rainDrop *p) 初始条件:水圈涟漪已存在 操作结果;清除水圈涟漪 clearAll(void) 操作结果:清除所有 ADT graphList 程序的主要模块包括四个部分: (1) 主函数:void main()(2) 设定雨滴:creatDrop(void) struct rainDrop *p rainLine
7、Length(struct rainDrop *p)(3) 结束 end各模块调用关系 主程序 雨的设置3详细设计Struct rainCircle/定义水圈的相关数据/横坐标、纵坐标、路线步骤、水圈半径等等Struct raindrop/定义雨点下落的过程的数据/包括雨点开始结束的坐标,颜色,路径,长度,对是否到达水面的判断,水圈的产生以及指向下一个雨点Void initgraphics(void) /图形函数的初始化 int gmodegdiver; gdriver=DETECT; initgraph(&gdriver,&gmode,“C:/TC20/BGI”) /其中gd
8、river和gmode分别表示图形驱动器和模式,“C:/TC20/BGI”是指的图形驱动程序所在的目录路径,由于使用的是虚拟的TURBO C编译器,其指定路径是“C:/TC20/BGI”。Struct raindrop *creatDrop(void)/雨点开始产生时的随机设置Struct raindrop *p;P=(struct raindrop *)molloc(LEN);p->startX=rand()%640;/随机产生的位置Xp->startY=rand()%430;/随机产生的位置Yp->endY=430+rand()%50;/结束坐标p->curX= p
9、->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.
10、curR=rand()%3;/涟漪消失的半径p->water.rainCircleStep=rand()%3+1;p->next=NULL;return(p);Void recreat atDrop(struct raindrop *p)/重复产生雨点/跟雨点开始的随机设置是一样的Void creatRain(void)/重复雨点的产生,使之连续不断/用随机产生雨点,重复产生,使得雨点连续不断void updateRainLineData(struct rainDrop *p)/这个是每次下落雨点的数目void drawRainLine(struct rainDrop *p)/画出
11、雨点的下落的轨迹void clearRainLine(struct rainDrop *p)/清除雨点的轨迹if(p->curY<=400) setcolor(BLACK);/判断是否到了水面,不是的话就是黑色的 line(p->startX,p->startY,p->curX,p->curY); if(p->curY>400) setcolor(BLUE);/到了水面之后用蓝色清除雨点的轨迹 line(p->startX,p->startY,p->curX,p->curY);void rainDropDown(struc
12、t 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.rainCircleStep;v
13、oid 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)/清除所有的
14、东西/里面有个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);/画出
15、背景 setfillstyle(1,BLUE); bar(0,390,640,480);/构造池塘 creatRain(); rain(); clearAll();/调用各个模块 开始 输入雨量 输入雨速画夜幕池塘 产生雨点 雨点路径 结束 关闭图像继续? 清除水圈 画出水圈 清除路径否是4 编码测试 输入界面,输入雨点数,雨速 输入雨量50,雨速1输入雨量150,雨速15 设计体会选题的时候,主要是这个主题吸引了我,池塘夜降彩色雨,一听名字就是要做出一个动画出来的,所以很好奇做出来是什么效果,然后就想尝试一下。一接触的时候无从下手,从来没有用过图形库。然后一开始用的是vc来编程,怎么也弄不出来,后来发现vc中没有tc中的graphics.h的库。然后就开始在网上找关于这个库的资料,慢慢的从画一个圆圈入手,慢慢的把图形做出来,勉勉强强的把效果弄出来了,能力有限,本来想加一个风的效果的,可是做不出来,只能做出夜降彩色雨。有点遗憾。这个程序中使用的就是简单的链表,采用带头结点的循环链表,仅需改变头尾两个指针即可。creatRain,drawRainLine和rainDropDown以及确定链表中第一个结点和之后一个结点的运算时间都是O(l),销毁雨点线路算法clearRa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某著名企业全面诊断咨询项目文件规范0613
- 某著名企业绩效管理咨询中期汇报0718
- 《GBT 9738-2008化学试剂 水不溶物测定通 用方法》专题研究报告
- 《GBT 21458-2008流动式起重机 额定起重量图表》专题研究报告
- 《GBT 14270-2008毛绒纤维类型含量试验方法》专题研究报告
- 道路养护员实操培训课件
- 2026年广东省惠州市高职单招数学考试题库(含答案)
- 《美国胸外科协会磨玻璃结节管理专家共识2023》解读
- 车险续保知识
- 内蒙古对口招生语文模拟试题(一)带答案
- 扬州市梅岭中学2026届八年级数学第一学期期末综合测试试题含解析
- 末梢血标本采集指南
- GB/T 46156-2025连续搬运设备安全规范通用规则
- AI赋能的虚拟仿真教学人才培养模式创新报告
- 数据管理能力成熟度评估模型(DCMM)评估师资格培训试题及答案
- 工程变更签证培训课件
- 自然分娩的好处
- 教练技术一阶段课件
- 国企跟投管理办法
- 中考听力说课课件
- 妇产科护理实习生岗前培训
评论
0/150
提交评论