计算机技术基础(c语言)课程设计 雪花飘落

合集下载

四年级信息技术《花瓣飘落添秀丽》教学设计

四年级信息技术《花瓣飘落添秀丽》教学设计
1、和学生一起绘制本课知识树,总结本课学习了PPT制作的哪些具体技巧。
2、观看美丽临淄天齐渊的航拍镜头,感受家乡之美。
课堂小结:
1、谈一谈这堂课学到了什么,有哪些独到的小方法。
2、学完本课,你对家乡有什么新的认识。
1、清晰明了的知识树,帮助学生梳理本课重点,加深印象。
2、欣赏天齐渊美丽航拍,感受家乡之美,引导孩子们热爱自己的家乡。
2、学生分析:
通过前两课的学习,刚刚接触PPT的孩子们已经能够在PPT中插入图片和文字。但是,文字输入速度却各有不同,差别较大。动画形象生动深受四年级孩子们的喜爱,孩子们非常期待在PPT中对图片或者文字设置动画,从而让自己的作品鲜活灵动起来。
二、教学的具体目标
1.学会为图片和文字设置动画效果的方法;
4、按Shift+F5或幻灯片放映,测试幻灯片动画效果。)
任务三:大显身手耀不同
大胆对作品自主创意发挥(比如:尝试让歌词自动出现,而不是点击出现。)
任务四:找不同
为幻灯片设置切换方式,让幻灯片之间的切换更流畅、自然。
展示交流环节:
1、设计独到之处是什么?
2、作品有什么制作技巧?
任务一:(自学)
在"我的家乡是临淄.pptx"中插入背景透明的樱花图片,并对其设置动画,体验樱花飘落的美丽。(前两名完成的同学获得展示机会,供大家参考学习,为本组赢得小花奖励。)
任务二:歌词滚动炫起来
对赶牛山歌曲中的“年年是都有着三月三么来哟”设置“退出”动画效果,对“姐妹二人么赶来牛山哎哎哟”设置”进入“动画效果,实现播放歌词的效果。(提示:1、选中第一个文本框,动画/退出,效果选项/到底部。
2、选中第二个文本框,动画/进入,效果选项/自底部。

c语言桌面下雪程序,用C++写的在桌面上飘雪的特效程序

c语言桌面下雪程序,用C++写的在桌面上飘雪的特效程序

c语⾔桌⾯下雪程序,⽤C++写的在桌⾯上飘雪的特效程序#include〈windows.h〉#include〈time.h〉#include〈stdlib.h〉#include〈iostream.h〉const int SnowNumber=500; //雪点数量struct SnowNode{POINT postion; //雪点位置int iColor; //先前的颜⾊int iSpeed; //下落速度int iMove; //下落距离int iStick; //粘贴度};SnowNode SnowNodes[SnowNumber]; //雪点数组int hTimer=0;int CrWind=0;int CrStep=0; //当前循环步数(⽤于限速)int ScreenWidth=0; //屏幕宽度int ScreenHeight=0; //屏幕⾼度void GetScreenSize();void CALLBACK TimerProc(HANDLE hWnd,UINT uMsg,UINT idEvent,DWORD dwTime);void InitSnowNodes();int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){MSG msg; //标准windows消息LARGE_INTEGER Frequency; //⾼性能定时器频率LARGE_INTEGER StartCt,EndCt;//⾼性能定时器计数float ElapsedTime; //时间间隔srand((unsigned)time(NULL));GetScreenSize();InitSnowNodes();QueryPerformanceFrequency(&Frequency);hTimer=SetTimer(0,0,rand()%5*500,(TIMERPROC)TimerProc);if(hTimer==0){MessageBox(0,TEXT(“创建定时器失败“),TEXT(“提⽰“),MB_OK|MB_ICONINFORMATION); return -1;}RegisterHotKey(0,0,MOD_CONTROL,(int)’L’);while(1){QueryPerformanceCounter(&StartCt); //执⾏运算前计数值if(PeekMessage(&msg,0,0,0,1)){switch(msg.message){case WM_TIMER: TimerProc(0,0,0,0);break; //预设风向改变时间已到case WM_HOTKEY: KillTimer(0,hTimer);//删除随机风向定时 器UnregisterHotKey(0,0);//删除退出热键break;case WM_DISPLAYCHANGE:GetScreenSize(); //重新取屏幕的尺⼨InitSnowNodes(); //初始化雪点的数组break;}}MoveSnowNodes();QueryPerformanceCounter(&EndCt);//执⾏运算后的计数值ElapsedTime=(EndCt.QuadPart-StartCt.QuadPart)/Frequency.QuadPart;if((ElapsedTime〈0.0005))Sleep(2); //简单限速else if(ElapsedTime〈0.0010)Sleep(1);else if(ElapsedTime〈0.0015)Sleep(3);}//MessageBox(0,TEXT(“消息“),TEXT(“消息“),MB_OK|MB_ICONINFORMATION); return 0;}void GetScreenSize(){ScreenWidth=GetSystemMetrics(SM_CXSCREEN);ScreenHeight=GetSystemMetrics(SM_CYSCREEN);return ;}void CALLBACK TimerProc(HANDLE hWnd,UINT uMsg,UINT idEvent,DWORD dwTime) {// MessageBox(0,TEXT(“消息“),TEXT(“消息“),MB_OK|MB_ICONINFORMATION); srand((unsigned)time(NULL));if(hTimer==0){}SetTimer(0,hTimer,((rand()%27+4)*500),(TIMERPROC)TimerProc); 重设下次风向改变时间//修改风向if(CrWind!=0)CrWind=0;elseCrWind=rand()%3-1;return ;}void InitSnowNodes(){HDC hScreenDC=0;int j=0;hScreenDC=CreateDC(“DISPLAY“,NULL,NULL,NULL);if(hScreenDC==NULL){MessageBox(0,“获取屏幕DC失败!“,“信息“,MB_OK|MB_ICONERROR);return ;}srand((unsigned)time(NULL));for(j=0;j〈SnowNumber;j++){SnowNodes[j].postion.x=rand()%ScreenWidth;SnowNodes[j].postion.y=rand()%ScreenHeight;SnowNodes[j].iColor=GetPixel(hScreenDC,SnowNodes[j].postion.x,SnowNodes[j].postion.y); SnowNodes[j].iSpeed=(rand()%5+1); //每次下落距离(1-5)SnowNodes[j].iStick=(30-rand()%SnowNodes[j].iSpeed); //粘贴度(⼏次循环作⼀次粘贴连判断// cout〈〈SnowNodes[j].postion.x〈〈“ Y:“〈〈SnowNodes[j].postion.y〈〈endl;}DeleteDC(hScreenDC);}void MoveSnowNodes()HDC hScreenDC=0;srand((unsigned)time(NULL));int x=0,y=0,i=0;hScreenDC=CreateDC(“DISPLAY“,NULL,NULL,NULL);if(hScreenDC==NULL){MessageBox(0,“获取屏幕DC失败!“,“信息“,MB_OK|MB_ICONERROR);return ;}// TextOut(hScreenDC,0,0,“虽然⼤检查顺顺藤摸⽠克格勃呀加“,0);for(i=0;i〈SnowNumber;i++){//控制雪点下降速度if((CrStep%SnowNodes[i].iSpeed)!=0)continue;//恢复上次被覆盖点if((GetPixel(hScreenDC,SnowNodes[i].postion.x,SnowNodes[i].postion.y))==0XFFFFFF) SetPixel(hScreenDC,SnowNodes[i].postion.x,SnowNodes[i].postion.y,SnowNodes[i].iColor); //根据⼏向作随机飘落x=SnowNodes[i].postion.x+rand()%3+CrWind;y=SnowNodes[i].postion.y+SnowNodes[i].iMove;//积雪(停留)效果处理if( ( (CrStep%SnowNodes[i].iStick)==0)&&( (GetPixel(hScreenDC,x,y))!=(GetPixel(hScreenDC,x,y+1)))&&( (GetPixel(hScreenDC,x-1,y))!=(GetPixel(hScreenDC,x-1,y+1)))&&( (GetPixel(hScreenDC,x+1,y))!=GetPixel(hScreenDC,x+1,y+1))){//稍稍调整坐标if(GetPixel(hScreenDC,x,y-1)==GetPixel(hScreenDC,x,y-2)){y--;{if(GetPixel(hScreenDC,x,y-1)==GetPixel(hScreenDC,x,y-2))y++;x+=CrWind;}//画三个雪花点SetPixel(hScreenDC,x,y,0XFFFFFF);SetPixel(hScreenDC,x+1,y+1,0XFFFFFF);SetPixel(hScreenDC,x-1,y+1,0XFFFFFF);//重⽣雪点SnowNodes[i].postion.x=rand()%ScreenWidth;SnowNodes[i].postion.y=rand()%10;SnowNodes[i].iColor=GetPixel(hScreenDC,SnowNodes[i].postion.x,SnowNodes[i].postion.y); }else{if( (x〈0) || (x〉ScreenWidth) || (y〉ScreenHeight)){SnowNodes[i].postion.x=(rand()%10);SnowNodes[i].postion.y=(rand()%ScreenWidth);SnowNodes[i].iColor=GetPixel(hScreenDC,SnowNodes[i].postion.x,SnowNodes[i].postion.y); }else{//保存颜⾊并绘制雪点SnowNodes[i].iColor=GetPixel(hScreenDC,x,y);SetPixel(hScreenDC,x,y,0XFFFFFF);//此时保存新雪点位置SnowNodes[i].postion.x=x;SnowNodes[i].postion.y=y;}}CrStep++;}⽤C++写的在桌⾯上飘雪的特效程序.doc下载Word⽂档到电脑,⽅便收藏和打印[全⽂共3466字]编辑推荐:下载Word⽂档。

《雪花飘落动态》课件

《雪花飘落动态》课件

制作雪花飘落动态的技巧 和注意事项
注意把握动画的节奏和流畅度, 避免过度繁琐的效果和视觉干 扰。
效果与展示
雪花飘落动态的效果展示
展示雪花飘落动态的精美效果式
可以将雪花飘落动态应用于大屏 幕投影、展览场馆等场景,增加 氛围和观赏性。
如何优化雪花飘落动态的 展示效果
总结和展望
雪花飘落动态的现状和 未来发展趋势
雪花飘落动态在数字媒体和 视觉传播领域有着广阔的应 用前景,随着技术的不断创 新和进步,其表现形式也将 更加多样化。
如何将雪花飘落动态应 用到自己的工作中
可以将雪花飘落动态应用于 自己的PPT制作、产品设计、 广告宣传等工作中,提升内 容的吸引力和观赏性。
雪花飘落动态的历史和发展
从最早的手工制作到今天的计算机生成,雪花飘落动态经历了多年的发展和创新。
设计与制作
设计雪花飘落动态的原则 和要素
充分考虑雪花形态、运动轨迹 和速度等因素,以及整体视觉 效果的和谐统一。
制作雪花飘落动态的工具 和方法
可使用专业的动画软件如After Effects,或者使用现成的动画 模板进行制作。
调整雪花的密度、速度和运动轨 迹,以求得更加逼真和优雅的效 果。
实战演练
1
实战演练:制作自己的雪花飘落动态
通过实践操作,学习制作雪花飘落动态的具体步骤和方法。
2
分享和展示自己的雪花飘落动态
与同行者分享自己制作的雪花飘落动态作品,并进行展示和交流。
3
同行者的评价和反馈
接受同行者的评价和反馈,以进一步提升雪花飘落动态的制作技巧和水平。
《雪花飘落动态》PPT课 件
这是一个关于雪花飘落动态的PPT课件,旨在介绍雪花飘落动态的概念、作用 和应用场景,以及设计、制作、效果展示、实战演练等方面的内容。

课程设计圣诞树实训报告

课程设计圣诞树实训报告

一、实训背景随着计算机技术的不断发展,计算机图形学在各个领域得到了广泛的应用。

在计算机视觉、虚拟现实、动画制作等领域,计算机图形学发挥着至关重要的作用。

本课程设计旨在通过实训,让学生掌握计算机图形学的基本原理和方法,提高学生的实践能力和创新意识。

本次实训内容为设计并实现一个具有动态效果的圣诞树。

二、实训目的1. 掌握计算机图形学的基本原理和方法。

2. 熟悉计算机图形软件的使用,如OpenGL、DirectX等。

3. 提高编程能力和算法设计能力。

4. 培养学生的创新意识和团队合作精神。

三、实训内容1. 圣诞树的设计与绘制2. 动态效果的实现3. 用户交互的实现4. 项目文档的编写四、实训过程1. 确定圣诞树的设计方案在实训过程中,我们首先对圣诞树的设计进行了讨论,确定了以下设计方案:(1)圣诞树由多个不同大小的三角形组成,颜色由下至上依次为绿色、红色、金色。

(2)圣诞树顶部有一个彩球,颜色为金色。

(3)圣诞树周围有雪花飘落效果。

2. 圣诞树的绘制根据设计方案,我们使用OpenGL编程语言进行圣诞树的绘制。

具体步骤如下:(1)创建一个OpenGL窗口。

(2)设置背景颜色为黑色。

(3)绘制圣诞树:使用多个不同大小的三角形绘制圣诞树的主体部分,顶部添加一个彩球。

(4)绘制雪花:在圣诞树周围随机生成雪花,并设置雪花下落动画。

3. 动态效果的实现为了使圣诞树更加生动,我们为其添加了以下动态效果:(1)雪花飘落:设置雪花下落速度和方向,使雪花在屏幕上随机飘落。

(2)彩球旋转:设置彩球旋转速度和方向,使彩球在屏幕上旋转。

4. 用户交互的实现为了让用户更好地体验圣诞树,我们添加了以下用户交互功能:(1)用户可以通过鼠标点击圣诞树,使雪花下落速度加快。

(2)用户可以通过键盘上的上下左右键调整彩球的旋转方向。

5. 项目文档的编写在实训过程中,我们认真编写了项目文档,包括以下内容:(1)项目背景和目的。

(2)设计方案和实现方法。

小学信息技术五年级上册第11课《雪花飘飘 ——制作有“影片剪辑”的动画》教案

小学信息技术五年级上册第11课《雪花飘飘 ——制作有“影片剪辑”的动画》教案

《雪花飘飘——制作有“影片剪辑”的动画》教案(一)小学信息技术五年级上册第11课年级:五年级上册学科:信息技术版本:清华版(2012)【教材分析】《雪花飘飘——制作有“影片剪辑”的动画》是小学信息技术五年级上册的一节重要课程。

本节课的主要目的是让学生学习并掌握如何使用Flash软件制作含有“影片剪辑”的动画。

通过这节课的学习,学生不仅能够了解影片剪辑的基本概念,还能学会如何创建图形元件、影片剪辑元件,以及如何在场景中应用这些元件来制作动画。

一、教学目标1. 知识目标:理解并掌握影片剪辑元件的概念和创建方法,学会在Flash中制作含有影片剪辑元件的动画。

2. 技能目标:能够利用图形元件和引导线制作雪花飘落的动画效果,能够熟练导出swf格式的Flash影片文件。

3. 情感目标:通过制作雪花飘飘的动画,体验动画制作的乐趣,培养学生的审美情趣和创新精神。

二、教学重难点1. 教学重点:影片剪辑元件的创建和使用方法,雪花飘落动画的制作。

2. 教学难点:影片剪辑元件的理解及其在动画中的应用,雪花飘落动画的流畅性和自然性的实现。

三、教学准备1. 教师准备:Flash软件、教学课件、示例动画、微课视频等。

2. 学生准备:电脑、Flash软件安装完成。

四、教学过程(一)导入新课1. 情境导入:播放一段关于冬天雪景的视频,引导学生观察雪花飘落的景象,并提问学生是否喜欢雪花以及雪花的美丽之处。

2. 引出课题:告诉学生今天我们将学习如何使用Flash 软件制作雪花飘飘的动画,并板书课题《雪花飘飘——制作有“影片剪辑”的动画》。

(二)新课讲授1. 创建新文件并导入背景:指导学生新建一个Flash文件,并导入一张雪景背景图片作为动画的背景。

2. 创建影片剪辑元件:讲解影片剪辑元件的概念和作用,即影片剪辑元件可以是一段独立的动画,可以在主场景中反复调用和播放。

演示如何创建一个名为“飞舞的小雪花”的影片剪辑元件,并在其中绘制雪花形状和设置动画效果。

小学信息技术教案雪花飘飘

小学信息技术教案雪花飘飘

小学信息技术教案雪花飘飘小学信息技术教案 - 雪花飘飘引言在信息化时代,信息技术已经成为小学教育的重要组成部分。

学生需要掌握基本的计算机操作技能,了解网络安全知识,并能够运用信息技术解决问题。

本教案以雪花飘飘为主题,通过教学活动帮助学生学习并应用信息技术。

一、教案目标1. 让学生熟悉计算机的基本操作,包括开机、关机、登录和退出。

2. 培养学生的基本键盘操作技能,如字母、数字和符号的输入。

3. 引导学生了解和运用网络搜索工具,获取与雪花相关的知识和信息。

4. 锻炼学生的信息组织与表达能力,让他们能够用计算机制作一个小册子或简报。

二、教学准备1. 计算机教室或学校提供的电脑设备。

2. 网络连接稳定的环境。

3. 雪花的相关资料,如图书、图片或视频。

4. 制作小册子或简报的相关软件,如Microsoft Word或Microsoft PowerPoint。

三、教学过程1. 导入(10分钟)教师先向学生介绍雪花的特点和形状,通过展示图片或视频引起学生的兴趣。

然后提问学生是否见过雪花,以及他们对雪花的了解。

教师可以和学生分享一些有关雪花的知识,如雪花的形成原理、不同种类的雪花等。

2. 计算机基本操作(20分钟)教师向学生解释计算机的基本操作流程,包括开机、关机、登录和退出。

教师可以在屏幕上演示这些操作,并让学生跟随操作。

在学生熟悉基本操作后,教师可以设计一些练习题,让学生巩固所学内容。

3. 键盘操作技能(20分钟)教师向学生介绍键盘的布局,并讲解字母、数字和符号的输入方法。

教师可以以导入部分介绍过的雪花为例,让学生尝试在键盘上输入"雪花"这个词。

之后,教师可以设计一些打字练习,让学生逐渐提高打字速度和准确性。

4. 网络搜索与信息获取(30分钟)教师引导学生使用互联网搜索工具,如百度或谷歌,搜索与雪花相关的知识和信息。

学生可以尝试输入关键词,如"雪花形状"或"不同种类的雪花"来获取相关结果。

小学信息技术小学教学设计花瓣飘落添秀丽

小学信息技术小学教学设计花瓣飘落添秀丽

小学信息技术小学教学设计花瓣飘落添秀丽小学信息技术小学教学设计:花瓣飘落添秀丽导语:信息技术作为现代教育的重要组成部分,对于小学生的学习和发展起着至关重要的作用。

本次教学设计旨在通过使用信息技术手段,引导小学生在学习过程中培养动手能力和创造力,并借助花瓣飘落的图像特效,打造一个视觉上令人愉悦的学习环境,激发学生对信息技术的兴趣。

第一部分:导入与情境营造(300字左右)在教学设计的第一阶段,我们将通过一个情境营造的活动来引发学生对信息技术的浓厚兴趣。

首先,教师可以选择适合小学生年龄特点的短篇故事,讲述一只迷失了方向的小鸟在追寻美丽花园的过程中遇到的困难。

接着,教师将利用电子白板展示一张安静、美丽的花园图片,然后通过简单的点击,让花瓣从天空中飘落到屏幕上,同时呈现出优美的动画效果。

这样一来,学生们就会被这个美丽的情境所吸引,进而对主题产生兴趣。

第二部分:理论与知识讲解(800字左右)在导入之后,教师需要对信息技术的基本理论和相关知识进行介绍和讲解。

首先,教师可以简要解释信息技术的概念,并与学生分享信息技术在日常生活中的应用。

这样可以帮助学生理解信息技术的重要性和普适性。

接着,教师可以详细讲解图像特效的原理和应用,特别是如何利用计算机软件实现花瓣飘落的效果。

通过讲解这些知识,学生将能够更好地理解信息技术与花瓣飘落之间的关系,并对之感兴趣。

第三部分:实践与创作(800字左右)在理论讲解之后,教师将引导学生亲自动手使用信息技术软件来实现花瓣飘落的效果,并从中发挥他们的创造力。

首先,教师将向学生展示使用计算机绘图软件绘制花朵的方法,并指导学生完成一次圣诞节主题的花朵绘制活动。

然后,教师将教授学生制作花瓣飘落的动画特效,例如如何实现花瓣随风摇摆的效果。

接着,学生将分组进行创作,利用所学软件工具和技巧,制作一段优美的花瓣飘落动画。

在创作过程中,教师应提供必要的指导和支持,鼓励学生展现自己的创意和想象力。

结语:通过本次教学设计,我们旨在激发小学生对信息技术的兴趣和学习动力。

c雪花飘落课程设计

c雪花飘落课程设计

计算机技术基础课程设计C语言设计报告题目:雪花飘落专业: 网络工程班级: 16(3)班姓名:代应豪指导教师:代美丽成绩:一、选题背景:本例实现一个综合的雪花飘落现象,用户可以观察到雪花飘落的过程、用户通过控制输入雪花的大小,雪花的数量,飘落的速度等实现雪花飘落。

二、设计思想:编程思路:首先在程序开始处,开通语句#include<stdlib.h>引入头函数,建立函数,然后定义结构体变量Snow,并且编写雪花的一系列操作的函数;最后在main函数的内部实现对各子函数的调用,实现雪花飘落的过程。

三.主要解决问题的方法及技术关键1.用keyx,keyy函数完成对内存空间保存,用DrawSnow函数完具体实现,change函数改变雪的颜色,Choose选择演示内容Init(void),Close(void)函数完成图形驱动和关闭等。

2.结构体函数实现图形的关闭,区域保存,在雪中输出文字等.用While,for循环,If语句等完成雪花的设计,包括速度、颜色、显示标题、闪烁效果等。

3.用起泡排序、汉诺塔、双链表、起泡排序、基数排序、二分查找、二叉树遍历等设置雪花颜色。

四.程序流程图五、程序清单:/* 源程序*//***dsdemo.c演示系统***/#include<stdlib.h>#include<graphics.h>#define ESC 0x011b#define ENTER 0x1c0d#define DOWN 0x5000#define UP 0x4800struct Snow/*雪的一些参数*/ {int x;int y;int speed;/*雪花的速度*/}snow[100];struct Star/*星星的一些参数*/{int x;int y;int color;}star[200];int key;/*按键变量*/int keyx,keyy;/*选项键的坐标*/int snownum=0;/*雪的个数*/int size;/*保存区域的大小*/int change=10;/*变颜色有关*/void *save1,*save2;/*保存空间*/void Copy(void);/*保存区域*/void DrawSnow(void);/*具体实现*/void Pr(void);/*输出字体*/void Choose(void);/*选择演示内容*/void DrawStar(void);/*最后的星星效果*/void DrawBall(int x,int y,int color);/*画选择的球体*/ void Init(void);/*图形驱动*/void Close(void);/*图形关闭*/void main(void){Init();Copy();DrawSnow();/*雪花飘动*/Choose();/*选择演示内容*/DrawStar();/*结束画面*/Close();exit(0);}void Init(void){int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc");cleardevice();}void Close(void)/*图形关闭*/{getch();closegraph();}void Copy(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); /*保存背景黑色*/}void Pr(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,"anykey to continue");setcolor(change/10);/*变换颜色显示标题*/settextstyle(0,0,3);outtextxy(100,200,"Data Structure Demo");/*标题*/}/*显示雪花的具体过程*/void DrawSnow(void){int i;int sx[62];randomize();for(i=0;i<62;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;i<snownum;i++)/*去雪*/putimage(snow[i].x,snow[i].y,save2,COPY_PUT);Pr(); /*显示标题*/if(snownum!=100)snownum++;setfillstyle(SOLID_FILL,15);/*画雪*/for(i=0;i<snownum;i++){snow[i].y+=snow[i].speed;putimage(snow[i].x,snow[i].y,save1,COPY_PUT);if(snow[i].y>500)snow[i].y=10-random(200);}change++;if(change==140)/*颜色变化*/change=10;}}/*画选择的球体x和y为坐标,color为球的颜色*/void DrawBall(int x,int y,int color){setcolor(0);setfillstyle(SOLID_FILL,color);fillellipse(x,y+10,10,10);}/*选择演示函数*/void Choose(void){int yes;/*判断是否退出选项,1不退出0退出*/int oyes=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,"Data Structure Demo");settextstyle(0,0,2);/*其它选项小一些*/setcolor(RED);outtextxy(200,150,"hanoi tower");/*汉诺塔*/setcolor(BLUE);outtextxy(200,190,"double link");/*双链表*/setcolor(GREEN);outtextxy(200,230,"bubble sorting"); /*起泡排序*/setcolor(YELLOW);outtextxy(200,270,"radix sorting"); /*基数排序*/setcolor(10);outtextxy(200,310,"binary serach"); /*二分查找*/setcolor(MAGENTA);outtextxy(200,350,"binary tree"); /* 二叉树遍历*/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)/*判断内容*/{case 150:system("hanoi");yes=0;break;/*调用汉诺塔*/case 190:system("dblink");yes=0;break;/*调用双链表*/case 230:system("bubble");yes=0;break;/*调用起泡排序*/case 270:system("radix");yes=0;break;/*调用基数排序*/case 310:system("binary");yes=0;break;/*调用二分查找*/case 350:system("tree2");yes=0;break; /*调用二叉树*/case 390: yes=0;oyes=0;/*exit选项*/}/*endswitch*/} /*endenter*/} /*endwhile*/} /*endwhile*/}/*结束画面*/void DrawStar(void){int i;cleardevice();setcolor(GREEN);settextstyle(0,0,2);while(!kbhit()){for(i=0;i<200;i++)/*随机生成星星*/{star[i].x=random(640);star[i].y=random(480);star[i].color=random(13)+1;}for(i=0;i<200;i++)/*输出星星*/{putpixel(star[i].x,star[i].y,star[i].color);delay(100);}outtextxy(100,200,"Thank you for use this system");sleep(1);for(i=0;i<200;i++)/*去除星星*/{putpixel(star[i].x,star[i].y,0);delay(50); }}}六.总结、设计结果说明1、通过本程序的练习可以使读者掌握汉诺塔、起泡排序、基数排序、二分查找、二叉树等函数的使用方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机技术基础课程设计C语言设计报告题目:雪花飘落一、选题背景:本例实现一个综合的雪花飘落现象,用户可以观察到雪花飘落的过程、用户通过控制输入雪花的大小,雪花的数量,飘落的速度等实现雪花飘落。

二、设计思想:编程思路:首先在程序开始处,开通语句#include<stdlib.h>引入头函数,建立函数,然后定义结构体变量Snow,并且编写雪花的一系列操作的函数;最后在main函数的内部实现对各子函数的调用,实现雪花飘落的过程。

三.主要解决问题的方法及技术关键1.用keyx,keyy函数完成对内存空间保存,用DrawSnow函数完具体实现,change函数改变雪的颜色,Choose选择演示内容Init(void),Close(void)函数完成图形驱动和关闭等。

2.结构体函数实现图形的关闭,区域保存,在雪中输出文字等.用While,for循环,If语句等完成雪花的设计,包括速度、颜色、显示标题、闪烁效果等。

3.用起泡排序、汉诺塔、双链表、起泡排序、基数排序、二分查找、二叉树遍历等设置雪花颜色。

四.程序流程图五、程序清单:/* 源程序*//***dsdemo.c演示系统***/#include<stdlib.h>#include<graphics.h>#define ESC 0x011b#define ENTER 0x1c0d#define DOWN 0x5000#define UP 0x4800struct Snow/*雪的一些参数*/ {int x;int y;int speed;/*雪花的速度*/}snow[100];struct Star/*星星的一些参数*/ {int x;int y;int color;}star[200];int key;/*按键变量*/int keyx,keyy;/*选项键的坐标*/int snownum=0;/*雪的个数*/int size;/*保存区域的大小*/int change=10;/*变颜色有关*/void *save1,*save2;/*保存空间*/void Copy(void);/*保存区域*/void DrawSnow(void);/*具体实现*/void Pr(void);/*输出字体*/void Choose(void);/*选择演示内容*/void DrawStar(void);/*最后的星星效果*/void DrawBall(int x,int y,int color);/*画选择的球体*/void Init(void);/*图形驱动*/void Close(void);/*图形关闭*/void main(void){Init();Copy();DrawSnow();/*雪花飘动*/Choose();/*选择演示内容*/DrawStar();/*结束画面*/Close();exit(0);}void Init(void){int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc");cleardevice();}void Close(void)/*图形关闭*/{getch();closegraph();}void Copy(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); /*保存背景黑色*/}void Pr(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,"anykey to continue");setcolor(change/10);/*变换颜色显示标题*/settextstyle(0,0,3);outtextxy(100,200,"Data Structure Demo");/*标题*/}/*显示雪花的具体过程*/void DrawSnow(void){int i;int sx[62];randomize();for(i=0;i<62;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;i<snownum;i++)/*去雪*/putimage(snow[i].x,snow[i].y,save2,COPY_PUT);Pr(); /*显示标题*/if(snownum!=100)snownum++;setfillstyle(SOLID_FILL,15);/*画雪*/for(i=0;i<snownum;i++){snow[i].y+=snow[i].speed;putimage(snow[i].x,snow[i].y,save1,COPY_PUT);if(snow[i].y>500)snow[i].y=10-random(200);}change++;if(change==140)/*颜色变化*/change=10;}}/*画选择的球体x和y为坐标,color为球的颜色*/void DrawBall(int x,int y,int color){setcolor(0);setfillstyle(SOLID_FILL,color);fillellipse(x,y+10,10,10);}/*选择演示函数*/void Choose(void){int yes;/*判断是否退出选项,1不退出0退出*/int oyes=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,"Data Structure Demo");settextstyle(0,0,2);/*其它选项小一些*/setcolor(RED);outtextxy(200,150,"hanoi tower");/*汉诺塔*/setcolor(BLUE);outtextxy(200,190,"double link");/*双链表*/setcolor(GREEN);outtextxy(200,230,"bubble sorting"); /*起泡排序*/ setcolor(YELLOW);outtextxy(200,270,"radix sorting"); /*基数排序*/ setcolor(10);outtextxy(200,310,"binary serach"); /*二分查找*/ setcolor(MAGENTA);outtextxy(200,350,"binary tree"); /* 二叉树遍历*/ 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)/*判断内容*/{case 150:system("hanoi");yes=0;break;/*调用汉诺塔*/case 190:system("dblink");yes=0;break;/*调用双链表*/ case 230:system("bubble");yes=0;break;/*调用起泡排序*/ case 270:system("radix");yes=0;break;/*调用基数排序*/ case 310:system("binary");yes=0;break;/*调用二分查找*/ case 350:system("tree2");yes=0;break; /*调用二叉树*/ case 390: yes=0;oyes=0;/*exit选项*/}/*endswitch*/} /*endenter*/} /*endwhile*/} /*endwhile*/}/*结束画面*/void DrawStar(void){int i;cleardevice();setcolor(GREEN);settextstyle(0,0,2);while(!kbhit()){for(i=0;i<200;i++)/*随机生成星星*/{star[i].x=random(640);star[i].y=random(480);star[i].color=random(13)+1;}for(i=0;i<200;i++)/*输出星星*/{putpixel(star[i].x,star[i].y,star[i].color);delay(100);}outtextxy(100,200,"Thank you for use this system");sleep(1);for(i=0;i<200;i++)/*去除星星*/{putpixel(star[i].x,star[i].y,0);delay(50); }}}六.总结、设计结果说明1、通过本程序的练习可以使读者掌握汉诺塔、起泡排序、基数排序、二分查找、二叉树等函数的使用方法。

相关文档
最新文档