应用vb程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
三角函数图像生成游戏软件的实例
应用VB程序设计三角函数图像生成游戏软件的实例
摘要:中学数学教学中常为画三角函数图像费时而烦心,为提高教学效率,增强学生学习兴趣,可充分发挥信息技术辅助教学的功效,运用VB程序设计出一个三角函数图像生成的游戏软件,能够随系数值的改变而自动画出不同的图像,可以选择sin、cos、tan、ctan中的部分或全部,用不同颜色绘制出图像,以便比较各种函数图像,并能用动画的方式自动演示各系数对函数图像的影响,再进行容错处理,生成用户软件,脱离VB环境独立运行。课堂教学时可方便快捷地呈现在电脑白板上,也可做为一款寓教于乐的教学游戏,让广大师生在欢快愉悦中学习,从而切实减轻学习负担,极大地提高学习效率。
关键词:VB程序;设计;图像生成;游戏软件;实例
一、软件设计分析
软件设计如同建造建造房屋,得根据需要进行规划,对于三角函数图像而言,要把软件功能、软件界面、函数变量数据的输入与输出、图像生成、程序设计考虑在内,把整个软件分成多个功能子模块,在设计过程中逐步实施,尽量做的详细、开放,同时又便于修改。其重点设计分析如下:
(一)功能需求及数据输入与输出
根据需要,让计算机能够随系数值的改变而自动画出不同的图像。绘图时,可以选择sin、cos、tan、ctan中的部分或全部,用不同颜色绘制出图像,以便比较各种函数图像,并能用动画的方式自动演示各系数对函数图像的影响。输入的数据包括函数的种类、绘画颜色、绘制速度和系数值等。输出数据就是函数图像。
(二)软件界面及程序设计方法
用复选框实现多种函数的同时选中,用滚动条选取绘图颜色,用单选按钮选择绘制速度,用滚动条改变系数值,用按钮控制绘图操作。运用VB面向对像的程序设计方法,利用控件设计软件界面和封装功能模块程序。
(三)分布实施
首先设计软件界面,再构造sin函数的系数研究程序,然后扩展到各种三角函数,继而进行系数自动演示;其中,要不断地调试程序、保存程序,并进行容错处理。最后,生成用户软件,脱离VB环境独立运行。
二、界面设计
设计良好的软件界面,提高数值输入效率。
(一)界面规划及窗体设计
根据软件规划,首先设计界面,以免因为界面的更改而增加程序修改的难度。
窗体就是软件运行时的窗口。窗口的大小等属性设置要适当,要尽量适合界面上所有功能设计。
操作步骤
1
第一步:启动VB。
第二步:修改Forml窗体的Caption属性为“三角函数系数与图像的关系研究”。 第三步:修改width属性值为12450,Height属性值为9210。
第四步:修改StartUpStation属性值为“2-屏幕中心”。
(二)划分功能区域
合理地划分功能区域,可以使得各控件能按功能需求分类,在使用、修改时都非常方便,并且
能使版面非常整齐。
操作步骤
第一步:选用控件工具箱中的框架(Frame)工具,在窗体上拖动鼠标建立5个框架。 第二步:单击,弹出属性窗口,参照
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
1设置各框架的属性。
Name Caption Height Left Top Width Frame1 选择函数 735 0 120 2775 Frame2 绘制颜色 975 0 1080 2775 Frame3 绘制速度 735 0 2160 2775 Frame4 自动演示 1935 0 3000 2775 Frame5 系数设置 2055 0 7440 6255
表1
(三)选择函数
为了能同时选择多种函数,应用复选框(CheckBox)检查用户选择。
第一步:选中“选择函数” (Framel)框架。
第二步:选中复选框控件工具,在框架中拖动鼠标,建立4个复选框。
第三步:参照表2,设置各个复选框的属性。
Name Caption Height Left Top Width Value SELESIN SIN 370 120 240 615 1-Cheked SELECOS COS 370 720 240 615 0-Uncheked SELETAN TAN 370 1320 240 615 0-Uncheked SELECTAN CTAN 370 1920 240 615 0-Uncheked
表2
(四)绘图颜色
使用滚动条选择颜色值,用一个图像对像预览选中的颜色。
操作步骤
第一步:单击选中“绘图颜色”框架。
第二步:利用图像工具,建立一个名称为“selec”的小图像框。
第三步:在图像框右边建立一个名称为“Hscolor”的横向滚动条。设置该滚动条的Min属性为0,
2
Max属性为11。
第四步:双击HScolor滚动条,建立预览颜色的代码。本段代码能改变图像框的底色。其中,用QBColor( )函数将滚动条的值转化成颜色代码。
Private Sub Hscolor_Change( )
Selec.BackColor=QBColor(Hscolor.Value)
End Sub
(五)绘制速度
用单选按钮设置三种速度档位。
操作步骤
第一步:单击选中“绘制速度”框架。
第二步:利用单选按钮工具,创建标记三种档位速度的单选按钮。
第三步:在属性窗口中,设置三个单选按钮的名称属性分别为“sd1”、“sd2”、 “sd3”,Caption属性分别为“慢”、“中”、“快”。
第四步:设置sd3的Value属性值为“True”,即默认绘制速度为“快”。
(六)自动演示
用按钮控制自动演示。
操作步骤
第一步:单击选中“自动演示”框架。
第二步:创健三个按钮对像。
第三步:设置三个按钮的名称属性,分别为“ada”、“zdw”、“zdf”;Caption属性分别为“自动演示A”、“自动演示w”、“自动演示f”。
(七)系数设置
利用滚动条改变系数。
操作步骤
第一步:单击选中“系数设置”框架。
第二步:创建三个标签对像,作为显示系数值的对像。
第三步:设置三个标签对像的名称属性分别“csa”、“csw”、“csf”;Caption属性分别为“A=1”、“w=1”、“f=0”。
第四步:创建三个横向滚动条,名称属性分别为“csza”、“cszw”、“cszf”,Min属性的值都为-10,Max属性的值都为10。
第五步:双击“csza”横向滚动条,增加代码,以改变系数a的值,并显示其值。
Private Sub csza_Change( )
a=csza.Value
csa.Caption="A"+Str(a)
3
End Sub
第六步:单击常用工具栏上的“启动”按钮,单击第一个横向滚动条左右两个滚动按钮,观察
系数显示的变化。
第七步:继续为cszw、cszf两个横向滚动条编写代码显示系数。 Private Sub cszw_Change( )
w=cszw.Value
csw.Caption="w"+Str(w)
End Sub
Private Sub cszf_Change( )
f=cszf.Value
csf.Caption="f"+Str(f)
End Sub
(八)绘图区域
利用图像对像作为绘图区域。
操作步骤
第一步:利用图像控件工具,在窗体中创建绘图区。
第二步:修改图片对像名称属性为“pic”。
第三步:设置BackColor属性为“白色”,Top为200,Left为3000,Height为7000,Width为9000。
(九)操作按钮
设计功能按钮,用于控制绘图和退出等。
操作步骤
第一步:创建三个按钮,名称属性分别为“hz”、“qp”、“tc”,Caption属性分别为“绘制”、
“清屏”、“退出”。
第二步:设计三个按钮的位置。
三、程序代码
根据程序中输入的颜色、系数等各种数据,在绘图区域中绘制图像。 接下来,我们将编写程序代码绘制函数的图像。
(一) 常量与变量声明
在代码窗口的“通用”对象的“声明”模块中进行常量、变量的声明,代码如下: Option Explicit
Const dw As Integer=400 ‘设置400个像素一一个数学课坐标系单位’ Const picw = 9000 ‘设置绘图区的宽度’
Const pich=7000 ‘设置绘图区的高度向’
4
Dim a As Integer ‘以下
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
定义三个参数变量’ Dim w As Integer
Dim f As Singel
(二)绘制坐标系
构造名为drawzbz()的过程,用来绘制坐标。代码如下:
Public Sub drawzbz()
Pic.ForeColor=QBColor(0)
Pic.Line(picw/2,0)-(picw/2,pich) ‘在绘图区中间绘制竖轴’
Pic.Line(0,pich/2)-(picw, pich/2) ‘在绘图区中间绘制横轴’ End Sub
以上代码中,Pic.ForeColor表示绘图区pic的绘图色,QBColor(0)表示黑色。pic.Line是在绘
图区中绘制直线,格式为Pic.Line(x1,y1)-(x2,y2)。
(三) 初始化代码
双击窗体Form1,编写如下代码:
Private Sub Form_Load()
Form1.Show ‘激活窗体以及窗体上的控件
Call drawzbz ‘绘制坐标系
selec.BackColor= QBColor(0) ‘绘图色为黑色
a=1 ‘初始化系数
w=1
f=0
End Sub
(四) 绘制y=A?sin(WX+f)
在代码窗口中建立绘制y=A?sin(wx+f)图像的函数过程,过程参数名为A,w,f,c,其中c表示
绘图颜色。代码如下:
Public Sub drawhs (a As Integer,w As Integer, f As Single, c As Integer)
Dim sd As Singel ‘绘制点的单位间隔,从而体现绘制精度与速度 Dim i As Singel ‘绘制次数的变量
Dim x0,y0,X,Y As Singel ‘绘制点的坐标变量
If sd1 Then ‘如果选中了第一个速度
sd=0.01 ‘绘制点的单位间隔小,绘制精度高、速度慢 End If
If sd2 Then
5
sd=0.1
End If
If sd3 Then
sd=1
End If
If selesin.Value=1 Then ‘如果函数类型中的SIN项被选中 Pic.ForeColor= QBColor(c) ‘绘图色为系数C的值
For i=0 To picw-1 Step sd ‘从左边向右边绘制,间隔为
x0=(i-picw/2)/dw ‘从横向像像素坐标转换成规定的x轴的单位坐标
y0=a*Sin(w*x0+f) ‘求出相应的单位函数值,即y轴的单位坐标
X=x0*dw+picw/2 ‘再转到横向像素坐标,得出绘制像素点的x坐标
Y=-y0*dw+pich/2 ‘再转到纵向像素坐标,得出绘制像素点的y坐标
Pic.Pset(X,Y) ‘在绘图区的(x,y)点绘像素点
Next i
End If
End Sub
因为在VB绘图中,坐标轴的原点是在图片对像的左上角,x轴向右,y轴向下,如图1(左)所示。
而我们需要显示图像的坐标却如图1(右)所示。根据图1(左)求出来的坐标经过变换后再用于在
图1(右)所示坐标系中绘图。变换方法是:x向右偏移picw/2,y坐标取反后向下偏移pich/2;另外,
还要考虑函数坐标是-10到10之间的实数,转化成相应的像素点坐标后才能用于绘图。
实际显示坐标 绘图区的屏幕坐标
图1
(五)绘制图像
双击“绘制”按钮,加入按钮控制代码:
Private Sub hz_Click( )
Call drawzbz
Call drawhs(a,w,f,Hscolor.Value) End Sub
(六) 清绘图区
6
双击“清屏”按钮,形成以下代码:
Private Sub qp_Click( )
Pic.Cls ‘清除图像对象Pic上的所有内容
Call drawzbz ‘重新绘坐标轴
End Sub
(七) 退出
双击“退出”按钮,形成以下代码
Private Sub tc_Click( ) End
End Sub
四、中间调试
按分步实施、逐步求精的思想,先保证Sin图像绘制正确、各系数的作用正常。
现执行程序以验证sin函数图像绘制的正确性。
操作步骤:
第一步:保存工程。
第二步:运行工程。
第三步:单击“绘制”按钮,使用默认系数绘制函数图像。 第四步:调整系数后,再绘图像。
第五步:单击“清屏”按钮,清除绘图区。
第六步:选中绘制速度中的“慢”项,再单击“绘制”,观看绘图速度的变化。
在调试过程中,如果因为错误地使用了变量、对像属性,或者数据是非法的,都会使程序出错
而不能用运行。根据出错信息修改错误,然后再次调试程序。 五、自动演示
函数图像根据某一系数进行自动变化,更生动、更直观地研究系数的意义。 利用擦除法生成动画,自动演示的变化对图像的影响,具体设计如下: 操作步骤:
第一步:双击“自动演示A”按钮,编写代码:
Private Sub zda_Click( )
Dim I As Integer
Pic.Cls ‘清除绘图区
a=-10 ‘系数a
Call drawhs(a,w,f,HScolor.Value) ‘图像初始化 For i=-9 to 10 ‘数值变化,终值为10
a=i ‘系数赋值
7
csza.Value=a ‘系数值显示
Call drawhs(a-1,w,f,15) ‘用白色绘制前一条函数线,即用擦除法形成动画
Call drawzbz ‘重绘坐标轴,防止擦除坐标轴
Call drawhs(a,w,f,Hscolor.Value) ‘绘制当前函数图像
Next i
End Sub
第二步:双击“自动演示f”按钮,编写代码:
Private Sub zdw_Click( )
Dim i As Integer
Pic.Cls
w=-10
Call drawhs(a,w,f,HScolor.Value) For i=-9 to 10
w=i
cszw.Value=w
Call drawhs(a,w-1,f,15)
Call drawzbz
Call drawhs(a,w,f,Hscolor.Value)
Next i
End Sub
第三步:双击“自动演示f”按钮,编写代码:
Private Sub zdf_Click( )
Dim i As Integer
Pic.Cls
f=-10
Call drawhs(a,w,f,HScolor.Value) For i=-9 to 10
f=i
cszf.Value=f
Call drawhs(a,w,f-1,15)
Call drawzbz
Call drawhs(a,w,f,Hscolor.Value)
Next i
End Sub
8
六、其他函数拓展
其他几个cos、tan、ctan函数相类似。
七、整体调试
全面测试程序,验证软件的各项功能。
运行程序后,调试各种系数、各种按钮,特别是测试临界数据,如Ctan函数中x=0的情况,针对错误修改程序。
八、用户软件生成
生成应用软件可以脱离VB环境使用。
生成软件,提供给研究函数图像的用户使用,具体操作如下。
操作步骤
第一步:执行菜单命令,把工程另存在指定文件夹中,主文件名为“sjhs”。
第二步:执行菜单命令,把窗体另存在指定的文件夹中,主文件名为“sjhs”。
第三步:执行菜单命令,编译工程并生成EXE格式的用户软件,文件名为“sjhs.exe”。
第四步:把sjhs.exe复制到其他软盘或光盘供用户使用。
九、结束语
本游戏软件设计成功后,可以提供给教师、学生试用,在使用中不断发现问题,加以修改。还可以编写用户使用手册,说明安装、卸载方法和注意事项,提供必要的技术支持,让广大师生在欢快愉悦中学习,从而切实减轻学习负担,极大地提高学习效率。
参考文献:
[1]Andrea L Ames, David R Nadeau, John L Moreland著,宗志方等译. VRML资源手册[M]. 北京:电子工业出版社,1998.
[2]顾翔,王汝传. Internet上的虚拟现实建模语言—VRML[J]. 电子工程师,1999,(6):10,13.
9