導航:首頁 > 編程知識 > 怎麼用編程做雪花

怎麼用編程做雪花

發布時間: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多人的互動采樣。就是那些孩子在上面隨便走,然後屏幕上會有雪花和孩子的腳互動。

我覺得這個設計非常美觀,既有雪花盛開的感覺,又有橄欖枝的浪漫。點火的瞬間應該是全場最亮的瞬間,這樣的創造真是花了不少的心思啊。個人覺得還是很成功的,有一種樸素的美。開幕式具有很強的技術性、協調性和創新性,體現了五環下各國的團結。運動員的視頻很好地展現了體育精神。導演展示了他高超的駕駛技術。

閱讀全文

與怎麼用編程做雪花相關的資料

熱點內容
勒索病毒防疫工具 瀏覽:861
win10c不能打開 瀏覽:375
xfplay影音先鋒蘋果版 瀏覽:597
兩個文件打開兩個word 瀏覽:921
蘋果6s桌面圖標輕微抖動 瀏覽:326
如何刪除手機中看不見的臨時文件 瀏覽:469
安卓412原生鎖屏apk 瀏覽:464
書加加緩存文件在哪裡 瀏覽:635
dock是word文件嗎 瀏覽:267
社保公司新辦去哪個網站下載資料 瀏覽:640
三維標注數據怎麼填寫 瀏覽:765
數據線斷在哪裡取出來 瀏覽:522
word最好的文件 瀏覽:345
大數據聚類資料庫 瀏覽:247
網站關停域名怎麼注銷 瀏覽:456
適合微信閱讀的手機報 瀏覽:114
win10設置應用許可權管理 瀏覽:47
wordpress製作單頁網站導航頁面 瀏覽:277
什麼海外網站可以看限製片 瀏覽:596
指尖見app在哪裡下載 瀏覽:367

友情鏈接