导航:首页 > 编程知识 > 怎么用编程做雪花

怎么用编程做雪花

发布时间:2023-02-11 11:30:51

❶ 雪花飘落的动画怎么做

用flash引导线制作雪花飘落的动画教程
在 Flash 中利用引导线制作雪花飘飘动画。 这种方法最笨但也效果最好,就是用引导线功能,让雪花不停的飘呀飘,如果多用几个图层,效果更好。

1、新建一个flash影片。设背景为“黑色”,其他的用默认值。

2、按ctrl+f8新建一个组件,类型为“影片剪辑”,命名为“雪花”。在它的正中用“铅笔”工具画一个不规则的多边形,然后用“颜料桶工具”将它填上白色。(如图1-1所示)

3、再用ctrl+f8建一个组件,类型为“影片剪辑”,命名为“前层”。

4、将组件“雪花”拖到其中,用“选定工具”中的“比例”功能把它缩小(小技巧:先用“放大镜”将它放大,然后再用“比例”功能,可缩得更小)。在第80帧上“插入关键帧”,在“图层1”上用鼠标右键的“添加引导线”功能(见图1-2)。

在新增加的“引导线:图层1”的第1帧上,从“雪花”开始,画一条弯曲的曲线。将第80帧上的“雪花”沿曲线从头拖到曲线的末尾。然后在“图层1”的第1帧上点鼠标右键,选“创见动画动作”功能,见图1-3。

5、第4步是制作一片雪花,下雪不是只下一片的吧。插入图层,将第4步重复做10次。做好后的效果见图1-4。6、把第3至5步重复做两次,不同之处是组件的命名分别为“中层”和“后层”。“雪花”的大小和“引导线”的路径不要一样。这是为了多做几个图层,看起来效果细腻一点。

7、现在回到场景1中,插入6个图层,分别命名为“后层1”、“后层2”、“中层1”、“中层2”、“中层3”、“中层4”、“前层1”、“前层2”。在对应的层上拖入对应的组件,并适当的调整时间轴,让雪花飘得连贯起来。见图1-5。

按ctrl+enter就可以看到效果了。

(这种方法简单且效果好,主要是用“引导线”功能,让雪花不停的飘下,多用几个图层效果会更好)

❷ 信息技术五年级上册雪花飘飘怎么做

一、新建文件并导入位图

步骤1:建立一个新文件。

步骤2:导入位图“雪景”并调整位图大小。将该图层命名为“雪景”。

二、创建“图形”元件

步骤1:执行“插入”—“新建元件”命令。在打开的“创建新元件”对话框中、设置元件类型为“图形”、名称为“雪花”、单击“确定”按钮。

步骤2:在图形元件编辑工作环境中、设置舞台的背景色为蓝色。因为舞台上的雪花很小、所以绘制雪花前、应将显示比例调大、如80%。选择工具箱中的“铅笔工具”、设置“笔触颜色”为白色。在舞台中心位置一个小雪花。

三、创建“影片剪辑”元件

步骤1:执行“插入”—“新建元件”命令。在打开的“创建信新元件”x09对话框中、设置元件类型为“影片剪辑”、名称为“飞舞的雪花”、单击“确定”按钮。

步骤2:在影片剪辑元件编辑工作环境中将“库”面板中的“雪花”图形元件拖到舞台中心。

步骤3:选中第50帧、按F6键插入关键帧。为表现雪花落地融解的效果、选择“雪花”实例、在“属性”面板中进行设置。

步骤4:在第1~50帧之间创建传统补间动画。

四、制作“雪花飞舞”的效果

步骤1:单击“时间抽”面板左上方的“场景”标签、返回到场景中。

步骤2:在当前层的上面建立新图层并命名为“电影剪辑”。

5、保存文件将动画源文件以“雪花飘飘”为文件名保存起来。

6、导出swf格式的flash影片

步骤1:执行“文件”——“导出”——“导出影片”命令、在弹出的“导出影片”对话框中选择保存文件的文件夹以及保存类型、最后输入文件名“雪花飘飘”。

步骤2:单击“保存”按钮、此时、就会生成一个swf格式的Flash动画文件。

以后只要双击swf动画文件名即可播放该动画文件。

❸ 怎样用C++做雪花

首先定义一个雪花结构体
里面有横纵坐标
还有雪花是否存在(落到地下消失)

然后假如取30个雪花
屏幕的上方随即出现
坐标为(
rand()%屏幕的长,0)使得雪花从上面随即出现

出现一个雪花,判断雪花是否存在的变量为true,雪花的纵坐标++。

然后就刷新屏幕,当雪花为true是,在雪花的横纵坐标打印出雪花。

当落到地下时(雪花的纵坐标>屏幕宽),雪花为false。

❹ VB编程如何打印出长方形的中间空的雪花

PrivateSubForm_Click()'点击窗体运行
DimxAsInteger,yAsInteger
Fory=1To5'设长方形的高为5
Forx=1To10'设长方形的宽为10
PrintTab(x);
Ifx=1Orx=10Ory=1Ory=5ThenPrint"*";
Nextx
Nexty
EndSub

❺ 怎么用C语言写下雪的动画效果

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>

/*
*清除屏幕的shell命令/控制台命令,还有一些依赖平台的实现
*如果定义了__GNUC__就假定是使用gcc编译器,为Linux平台
*否则认为是Window平台
*/
#ifdefined(__GNUC__)
//下面是依赖Linux实现
#include<unistd.h>
#definesleep_ms(m)
usleep(m*1000)

//向上移动光标函数Linux
staticvoid__curup(intheight)
{
inti=-1;
while(++i<height)
printf("33[1A");//先回到上一行
}
#else

//创建等待函数1s60帧相当于16.7ms=>1帧,我们取16ms
//咱么的这屏幕推荐1s25帧吧40ms
//这里创建等待函数以毫秒为单位,需要依赖操作系统实现
#include<Windows.h>
#definesleep_ms(m)
Sleep(m)

//向上移动光标
staticvoid__curup(intheight)
{
COORDcr={0,0};
//GetStdHandle(STD_OUTPUT_HANDLE)获取屏幕对象,设置光标
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),cr);
}
#endif/*__GNUC__跨平台的代码都很丑陋*/

//定义初始屏幕的宽高像素宏
#define_INT_WIDTH(100)
#define_INT_HEIGHT(50)
//屏幕刷新帧的速率
#define_INT_FRATE(40)
//雪花飘落的速率,相对于屏幕刷新帧的倍数
#define_INT_VSNOW(10)

/*
*错误处理宏,msg必须是""括起来的字符串常量
*__FILE__:文件全路径
*__func__:函数名
*__LINE__:行数行
*__VA_ARGS__:可变参数宏,
*##表示直接连接,例如a##b<=>ab
*/
#definecerr(msg,...)
fprintf(stderr,"[%s:%s:%d]"msg" ",__FILE__,__func__,__LINE__,##__VA_ARGS__);

/*
*屏幕结构体,具有宽高
*frate:绘制一帧的周期,单位是毫秒
*width:屏幕的宽,基于窗口的左上角(0,0)
*height:屏幕的高
*pix:用一维模拟二维主要结构如下
*0001001010
*0101010120
*...
*=>0表示没像素,1表示1个像素,2表示2个像素....
*/
structscreen{
intfrate;//也可以用unsigned结构
intwidth;
intheight;
char*pix;
};

/*
*创建一个屏幕结构指针返回
*
*intfrate:绘制一帧的周期
*intwidth:屏幕宽度
*intheight:屏幕高度
*return:指向屏幕结构的指针
**/
structscreen*screen_create(intfrate,intwidth,intheight);

/*
*销毁一个屏幕结构指针,并为其置空
*structscreen**:指向屏幕结构指针的指针,二级销毁一级的
**/
voidscreen_destory(structscreen**pscr);

/**
*屏幕绘制函数,主要生成一个雪花效果
*
*structscreen*:屏幕数据
*return:0表示可以绘制了,1表示图案不变
*/
intscreen_draw_snow(structscreen*scr);

/**
*屏幕绘制动画效果,绘制雪花动画
*
*structscreen*:屏幕结构指针
*/
voidscreen_flash_snow(structscreen*scr);

//主函数,主业务在此运行
intmain(intargc,char*argv[])
{
structscreen*scr=NULL;

//创建一个屏幕对象
scr=screen_create(_INT_FRATE,_INT_WIDTH,_INT_HEIGHT);
if(NULL==scr)
exit(EXIT_FAILURE);

//绘制雪花动画
screen_flash_snow(scr);

//销毁这个屏幕对象
screen_destory(&scr);

return0;
}

/*
*创建一个屏幕结构指针返回
*
*intfrate:绘制一帧的周期
*intwidth:屏幕宽度
*intheight:屏幕高度
*return:指向屏幕结构的指针
**/
structscreen*
screen_create(intfrate,intwidth,intheight)
{
structscreen*scr=NULL;

if(frate<0||width<=0||height<=0){
cerr("[WARNING]checkisfrate<0||width<=0||height<=0err!");
returnNULL;
}

//后面是为scr->pix分配的内存width*height
scr=malloc(sizeof(structscreen)+sizeof(char)*width*height);
if(NULL==scr){
cerr("[FATALG]Outofmemory!");
returnNULL;
}
scr->frate=frate;
scr->width=width;
scr->height=height;
//减少malloc次数,malloc消耗很大,内存泄露呀,内存碎片呀
scr->pix=((char*)scr)+sizeof(structscreen);

returnscr;
}

/*
*销毁一个屏幕结构指针,并为其置空
*structscreen**:指向屏幕结构指针的指针,二级销毁一级的
**/
void
screen_destory(structscreen**pscr)
{
if(NULL==pscr||NULL==*pscr)
return;
free(*pscr);
//避免野指针
*pscr=NULL;
}

//构建开头的雪花,下面宏表示每_INT_SHEAD个步长,一个雪花,需要是2的幂
//static可以理解为private,宏,位操作代码多了确实难读
#define_INT_SHEAD(1<<2)
staticvoid__snow_head(char*snow,intlen)
{
intr=0;

//数据需要清空
memset(snow,0,len);
for(;;){
//取余一个技巧2^3-1=7=>111,并就是取余数
intt=rand()&(_INT_SHEAD-1);
if(r+t>=len)
break;
snow[r+t]=1;
r+=_INT_SHEAD;
}
}
#undef_INT_SHEAD

//通过上一个scr->pix[scr->width*(idx-1)]=>scr->pix[scr->width*idx]
//下面的宏规定雪花左右摇摆0向左一个像素,1表示不变,2表示向右一个像素
#define_INT_SWING(3)
staticvoid__snow_next(structscreen*scr,intidx)
{
intwidth=scr->width;
char*psnow=scr->pix+width*(idx-1);
char*snow=psnow+width;
inti,j,t;//i索引,j保存下一个瞬间雪花的位置,t临时补得,解决雪花重叠问题


//为当前行重置
memset(snow,0,width);
//通过上一次雪花位置计算下一次雪花位置
for(i=0;i<width;++i){
for(t=psnow[i];t>0;--t){//雪花可以重叠
//rand()%_INT_SWING-1表示雪花横轴的偏移量,相对上一次位置
j=i+rand()%_INT_SWING-1;
j=j<0?width-1:j>=width?0:j;//j如果越界了,左边越界让它到右边,右边越界到左边
++snow[j];
}
}
}

/**
*屏幕绘制函数,主要生成一个雪花效果
*
*structscreen*:屏幕数据
*return:0表示可以绘制了,1表示图案不变
*/
int
screen_draw_snow(structscreen*scr)
{
//静态变量,默认初始化为0,每次都共用
staticint__speed=0;
intidx;

if(++__speed!=_INT_VSNOW)
return1;

//下面就是到了雪花飘落的时刻了既__speed==_INT_VSNOW
__speed=0;

//这里重新构建雪花界面,先构建头部,再从尾部开始构建
for(idx=scr->height-1;idx>0;--idx)
__snow_next(scr,idx);

//构建头部
__snow_head(scr->pix,scr->width);

return0;
}

//buf保存scr中pix数据,构建后为(width+1)*height,后面宏是雪花图案
#define_CHAR_SNOW‘*‘
staticvoid__flash_snow_buffer(structscreen*scr,char*buf)
{
inti,j,rt;
intheight=scr->height,width=scr->width;
intfrate=scr->frate;//刷新的帧频率

//每次都等一下
for(;;sleep_ms(frate)){
//开始绘制屏幕
rt=screen_draw_snow(scr);
if(rt)
continue;

for(i=0;i<height;++i){
char*snow=scr->pix+i*width;
for(j=0;j<width;++j)
buf[rt++]=snow[j]?_CHAR_SNOW:‘‘;
buf[rt++]=‘ ‘;
}
buf[rt-1]=‘‘;

//正式绘制到屏幕上
puts(buf);

//清空老屏幕,屏幕光标回到最上面
__curup(height);
}
}
#undef_CHAR_SNOW

/**
*屏幕绘制动画效果,绘制雪花动画
*
*structscreen*:屏幕结构指针
*/
void
screen_flash_snow(structscreen*scr)
{
char*buf=NULL;
//初始化随机数种子,改变雪花轨迹
srand((unsigned)time(NULL));

buf=malloc(sizeof(char)*(scr->width+1)*scr->height);
if(NULL==buf){
cerr("[FATAL]Outofmemory!");
exit(EXIT_FAILURE);
}

__flash_snow_buffer(scr,buf);

//1.这里理论上不会执行到这,没加控制器.2.对于buf=NULL,这种代码可以省掉,看编程习惯
free(buf);
buf=NULL;
}

❻ 你知道冰立方雪花台是怎么做出来的吗

相信大家都看过北京冬奥会的开幕式,尤其是冰立方雪花台,吸引了很多观众的目光。其实冰块雪花桌是由led组成的。雪花效果是用很多专业设备制作的。冬奥会开幕式用11000多平方米的LED巨幕惊艳了全世界。据说支撑那个LED屏用了5000多吨钢材,可能是世界上最大的LED屏。他还用16K做了一张每秒50帧地图,支持600多人的互动采样。就是那些孩子在上面随便走,然后屏幕上会有雪花和孩子的脚互动。

我觉得这个设计非常美观,既有雪花盛开的感觉,又有橄榄枝的浪漫。点火的瞬间应该是全场最亮的瞬间,这样的创造真是花了不少的心思啊。个人觉得还是很成功的,有一种朴素的美。开幕式具有很强的技术性、协调性和创新性,体现了五环下各国的团结。运动员的视频很好地展现了体育精神。导演展示了他高超的驾驶技术。

阅读全文

与怎么用编程做雪花相关的资料

热点内容
如何从杀毒软件里面恢复出文件 浏览:972
越狱iphone如何备份 浏览:124
苹果四S万能钥匙怎么破不开 浏览:603
网络打印机共享怎么连接 浏览:313
fme系统找不到指定文件 浏览:301
iphoneid和密码忘了怎么办 浏览:238
苹果电脑优盘里的文件如何加密 浏览:284
word标题名和文件名一致 浏览:957
excel修改后的文件保持了怎么恢复 浏览:340
社保网络认证怎么弄 浏览:92
苹果手机怎么传数据到新手机相册 浏览:50
5s升级ios92无服务 浏览:354
ubuntu翻译工具 浏览:665
wifi安装教程 浏览:398
苹果有些qq文件打不开 浏览:139
微信分身图片缓存在哪个文件 浏览:544
众筹用什么网站 浏览:1
天马座的幻想版本 浏览:536
微云保存文件图片没有了 浏览:236
如何把excel表格图片导出到文件夹 浏览:387

友情链接