APP下载

基于VB的雨雪天气现象模拟实现

2013-04-29李道炜

关键词:可视化程序计算机

李道炜

摘要:针对下雨和下雪常见的天气现象,利用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 结束语

将常见的天气现象用图形化的编程语言实现计算机模拟,取得了较好的效果,本文只是对较普通的现象进行了模拟。由于……

登录APP查看全文

猜你喜欢

可视化程序计算机
基于CiteSpace的足三里穴研究可视化分析
基于Power BI的油田注水运行动态分析与可视化展示
计算机操作系统
基于CGAL和OpenGL的海底地形三维可视化
基于计算机自然语言处理的机器翻译技术应用与简介
“融评”:党媒评论的可视化创新
试论我国未决羁押程序的立法完善
信息系统审计中计算机审计的应用
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序