VisualFreeBasic游戏趣味编程_7.1_变量作用域与游戏框架

2026-1-22 / 0 评论 / 52 阅读

在程序中变量起作用的范围,称为变量的作用域。根据作用域的不同,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()执行和输入有关的更新。

评论一下?

OωO
取消