国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于VB的雨雪天氣現(xiàn)象模擬實(shí)現(xiàn)

2013-04-29 23:41:10李道煒
關(guān)鍵詞:天氣現(xiàn)象雨滴雪花

李道煒

摘要:針對(duì)下雨和下雪常見的天氣現(xiàn)象,利用VB的可視化編程技術(shù),實(shí)現(xiàn)對(duì)下雨和下雪的動(dòng)畫模擬。

關(guān)鍵詞:下雨下雪計(jì)算機(jī)模擬

0 引言

冬天是下雨和下雪較多的季節(jié),目前很多都是用Flash軟件來模擬下雪和下雨的過程,Microsoft Visual Basic是廣泛應(yīng)用的通用的可視化編程軟件開發(fā)工具,具有非常強(qiáng)大的圖形處理功能,加之VB 簡(jiǎn)單易學(xué),使用方便,有許多功能強(qiáng)大的處理圖形圖像的控件與函數(shù),便于實(shí)現(xiàn)較為逼真的軟件模擬環(huán)境。同時(shí)實(shí)現(xiàn)此功能的VB程序代碼實(shí)現(xiàn)比較容易,而且采用面向?qū)ο蟮木幊谭椒?,可以很方便地進(jìn)行擴(kuò)展。

1 實(shí)現(xiàn)方法

由于是在計(jì)算機(jī)屏幕上模擬下雨和下雪現(xiàn)象,因此當(dāng)“雨滴”或“雪花”到達(dá)屏幕底部時(shí)要進(jìn)行復(fù)原,用Rangomize初始化隨機(jī)數(shù)發(fā)生器,并采用兩種不同的方法觸發(fā):在模擬“下雨”的程序中,利用一個(gè)計(jì)時(shí)器,通過不斷地繪制不同圓心和半徑的小圓來表示“雨滴”。在模擬“下雪”的程序中,采用無限循環(huán),并利用DoEvents函數(shù),當(dāng)雙擊鼠標(biāo)左鍵時(shí),才使模擬程序中斷循環(huán),并返回。具體實(shí)現(xiàn)流程如圖1和圖2所示。

2 程序?qū)崿F(xiàn)和模擬效果

定義全局?jǐn)?shù)組Snow(1000,1)表示“雪花”在屏幕上的坐標(biāo),Scolor(1000)表示坐標(biāo)點(diǎn)的顏色,Snumber為設(shè)定的“雪花”數(shù)量。Rain(1000,1)表示“雨滴”在屏幕上的坐標(biāo),Rsize(1000)為“雨滴”大小,Rdelta(1000)為間隔。主要程序如下:

Dim Snow(1000, 1),Scolor(1000), Snumber As Integer

Private Sub Form_Load()

Fsnow.Show

DoEvents

Randomize: Snumber = 400

For j = 1 To Snumber

Snow(j, 0) = Int(Rnd * Fsnow.Width)

Snow(j, 1) = Int(Rnd * Fsnow.Height)

Scolor(j) = 10 + (Rnd * 20)

Next j

Do While Not (DoEvents = 0)

For ls = 1 To 10

For i = 1 To Snumber

oldx = Snow(i, 0)

oldy = Snow(i, 1)

Snow(i, 1) = Snow(i, 1) + Scolor(i)

If Snow(i, 1) > Fsnow.Height Then

Snow(i, 1) = 0

Scolor(i) = 5 + Rnd * 30

Snow(i, 0) = Int(Rnd * Fsnow.Width)

oldx = 0

oldy = 0

End If

coloury = 8 * (Scolor(i) - 10)

coloury = 60 + coloury

PSet (oldx, oldy), QBColor(0)

PSet (Snow(i, 0), Snow(i, 1)), RGB(coloury, coloury, coloury)

Next i

Next ls

Loop

End Sub

Private Sub Form_DblClick()

End

End Sub

運(yùn)行后得到的效果如圖3所示:

Dim Rain(1000,1), Rdelta(1000), Rsize(1000) ,Rnumber As Integer

Private Sub Form_Load()

Randomize

Rnumber=1000

For i = 1 To Rnumber

Rx1 = Int(FRain.Width * Rnd)

Ry1 = Int(FRain.Height * Rnd)

Rdelt1 = Int(500 - (Int(Rnd * 499)))

Rsize1 = 25 * Rnd

Rain(i,0) = Rx1

Rain(i,1) = Ry1

Rdelta(i) = Rdelt1

Rsize(i) = Rsize1

Next

End Sub

Private Sub Timer1_Timer()

For i = 1 To Rnumber

Circle (Rain(i,0), Rain(i,1)), Rsize(i), BackColor

Rain(i,1) = Rain(i,1) + Rdelta(i)

If Rain(i,1) >= Frain.Height Then

Rain(i,1) = 0:

Rain(i,0) = Int(Frain.Width * Rnd)

End if

Circle (Rain(i,0), Rain(i,1)), Rsize(i)

Next

End Sub

Private Sub Form_DblClick()

End

End Sub

運(yùn)行后得到的效果如圖4所示:

3 結(jié)束語

將常見的天氣現(xiàn)象用圖形化的編程語言實(shí)現(xiàn)計(jì)算機(jī)模擬,取得了較好的效果,本文只是對(duì)較普通的現(xiàn)象進(jìn)行了模擬。由于天氣現(xiàn)象變化無常,要準(zhǔn)確及時(shí)模擬各種天氣現(xiàn)象,還需要設(shè)計(jì)復(fù)雜的算法和進(jìn)行高級(jí)的編程??傊ㄟ^計(jì)算機(jī)模擬天氣現(xiàn)象,對(duì)自然界的現(xiàn)象有了進(jìn)一步的理解和認(rèn)識(shí),為今后進(jìn)一步的開發(fā)研究奠定了基礎(chǔ)。

參考文獻(xiàn):

[1]汪洋.基于VB的模擬仿真技術(shù)的實(shí)現(xiàn)[J].荊門職業(yè)技術(shù)學(xué)院學(xué)報(bào),2007年6月.

[2]馮宏偉,羅宏.基于VB的自動(dòng)繪制立面圖程序的設(shè)計(jì)[J].城市勘測(cè),2012年1期.

[3]陳錦昌等.VB計(jì)算機(jī)繪圖教程[M].華南理工大學(xué)出版社,2003.

[4]薛建忠.基于VB語言的物理實(shí)驗(yàn)?zāi)M[J].江蘇技術(shù)師范學(xué)院學(xué)報(bào),2003年12月.

猜你喜歡
天氣現(xiàn)象雨滴雪花
《奇怪的天氣:關(guān)于天氣的50個(gè)秘密》
少兒科技(2022年2期)2022-03-05 23:07:07
小雨滴
草原歌聲(2020年3期)2020-12-08 22:22:28
可愛的小雨滴
與龍卷風(fēng)共舞
小雨滴
新巴爾虎左旗常見天氣現(xiàn)象分析
天氣現(xiàn)象的隱喻化方式分析
如果我是一片雪花
雪花
淘氣的小雪花
监利县| 汪清县| 新乐市| 朝阳区| 蒲城县| 德兴市| 托克托县| 凤翔县| 临朐县| 贺兰县| 伊金霍洛旗| 临洮县| 北票市| 辉南县| 高邮市| 滨海县| 廊坊市| 全南县| 恭城| 赞皇县| 合肥市| 奉化市| 中阳县| 长武县| 来凤县| 孝昌县| 阿拉善左旗| 正定县| 鱼台县| 莎车县| 益阳市| 融水| 新余市| 浪卡子县| 富锦市| 凤凰县| 曲麻莱县| 关岭| 故城县| 宁河县| 曲周县|