在程序中变量起作用的范围,称为变量的作用域。根据作用域的不同,FB语言中的变量可分为局部变量和全局变量。
在函数内部定义的变量称为局部变量,其作用域从变量定义处开始,到}处结束。
Sub fun()
Dim a As Long '局部变量,仅能在fun函数内部使用
a=10
End Sub
Sub 游戏执行过程(hWndForm As hWnd)
Dim x As Long '局部变量,仅能在[游戏执行过程]函数内部使用
x = 1
End Sub
在以上代码中,变量a的作用域在函数fun()内部,如果在其他区域使用变量a,程序报错;变量x的作用域在函数【游戏执行过程()】内部,如果在其他区域使用变量x,程序报错。
在所有函数之外定义的变量称为全局变量,其作用域从变量定义处开始,到整个程序最后结束。
Dim Shared m As Long '全局变量,整个程序都可以访问
Sub fun()
m=3
End Sub
Sub 游戏执行过程(hWndForm As hWnd)
Print mm = 2
Print m
fun()
Print m
End Sub
在上面代码中,变量m在函数外定义,为全局变量,因此在函数外、函数fun()与main()内都可以访问。程序运行后输出:
1
2
3
提示
如果全局变量与局部变量同名,则在局部变量的作用域内访问的是局部变量,全局变量将被“屏蔽”
利用函数和变量作用域的知识,我们设定了一个简化的游戏开发框架:
'全局变量定义
Sub startup() '初始化函数
End Sub
Sub show() '绘制函数
End Sub
Sub updateWithoutInput() '与输入无关的更新
End Sub
Sub updateWithInput() ' 和输入有关的更新
End Sub
Sub 游戏执行过程(hWndForm As hWnd)
Dim gg As yGDI = hWndForm
startup() ' 初始化函数,仅执行一次
Do
gg.Cls
show() ' 进行绘制
updateWithoutInput() '和输入无关的更新
updateWithInput() ' 和输入有关的更新
gg.Redraw
Sleep 100
Loop
End Sub
首先在函数外定义一些游戏数据变量,这些全局变量在整个程序中均可以访问。具体的游戏功能在startup()、show()、updateWithoutInput()、updateWithInput()这4个函数中实现。
程序从主函数开始,首先运行一次startup(),进行游戏的初始化。然后开始循环执行3个函数:show()进行绘制、updateWithoutInput()执行和输入无关的更新、updateWithInput()执行和输入有关的更新。
评论一下?