李道炜
摘要:针对下雨和下雪常见的天气现象,利用VB的可视化编程技术,实现对下雨和下雪的动画模拟。
关键词:下雨下雪计算机模拟
0 引言
冬天是下雨和下雪较多的季节,目前很多都是用Flash软件来模拟下雪和下雨的过程,Microsoft Visual Basic是广泛应用的通用的可视化编程软件开发工具,具有非常强大的图形处理功能,加之VB 简单易学,使用方便,有许多功能强大的处理图形图像的控件与函数,便于实现较为逼真的软件模拟环境。同时实现此功能的VB程序代码实现比较容易,而且采用面向对象的编程方法,可以很方便地进行扩展。
1 实现方法
由于是在计算机屏幕上模拟下雨和下雪现象,因此当“雨滴”或“雪花”到达屏幕底部时要进行复原,用Rangomize初始化随机数发生器,并采用两种不同的方法触发:在模拟“下雨”的程序中,利用一个计时器,通过不断地绘制不同圆心和半径的小圆来表示“雨滴”。在模拟“下雪”的程序中,采用无限循环,并利用DoEvents函数,当双击鼠标左键时,才使模拟程序中断循环,并返回。具体实现流程如图1和图2所示。
2 程序实现和模拟效果
定义全局数组Snow(1000,1)表示“雪花”在屏幕上的坐标,Scolor(1000)表示坐标点的颜色,Snumber为设定的“雪花”数量。Rain(1000,1)表示“雨滴”在屏幕上的坐标,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
运行后得到的效果如图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
运行后得到的效果如图4所示:
■
3 结束语
将常见的天气现象用图形化的编程语言实现计算机模拟,取得了较好的效果,本文只是对较普通的现象进行了模拟。由于天气现象变化无常,要准确及时模拟各种天气现象,还需要设计复杂的算法和进行高级的编程。总之,通过计算机模拟天气现象,对自然界的现象有了进一步的理解和认识,为今后进一步的开发研究奠定了基础。
参考文献:
[1]汪洋.基于VB的模拟仿真技术的实现[J].荆门职业技术学院学报,2007年6月.
[2]冯宏伟,罗宏.基于VB的自动绘制立面图程序的设计[J].城市勘测,2012年1期.
[3]陈锦昌等.VB计算机绘图教程[M].华南理工大学出版社,2003.
[4]薛建忠.基于VB语言的物理实验模拟[J].江苏技术师范学院学报,2003年12月.