VisualFreeBasic游戏趣味编程_10.9_指针与数组

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

数组名作为函数参数时可以修改实际参数的值(8.4节),这是因为数组的名字就是一个指针:

Sub 游戏执行过程(hWndForm As hWnd)
   Dim a(4) As Long ={1,2,3,4,5}
   Print @a(0)
End Sub

将指针变量p赋为数组的首地址,则可以通过以下方式访问数组元素:

Sub 游戏执行过程(hWndForm As hWnd)
   Dim a(4) As Long     = {1, 2, 3, 4, 5}
   Dim p    As Long Ptr = @a(0)
   Dim i    As Long
   For i = 0 To 4
      Print a(i)
   Next
   For i = 0 To 4
      Print p[i]
   Next   
   For i = 0 To 4
      Print *p 
      p +=1
   Next

End Sub

程序运行后输出:

1  2  3  4  5
1  2  3  4  5
1  2  3  4  5

由于数组元素在内存中是依次排列的,由于p=a,因此 p[i]也等于a(i)。
在消除类游戏中,经常会有游戏难度越大、画面越大的需求,这时就需要用变量设定数组的大小,比如:

Sub 游戏执行过程(hWndForm As hWnd)
   Dim a() As Long 
  Print UBound(a)
   ReDim a(5) 
   Print UBound(a)
   ReDim a(6) 
   Print UBound(a)
End Sub

程序运行后输出:

-1
5
6

Dim a() As Long 是定义动态数组 ,ReDim a(5) 执行代码时随时改变数组大小
UBound(a) 获取数组大小。返回-1 表示 数组没初始化,不可用,一用就崩溃。

读者可以修改的代码,实现随着游戏关卡数的增加,游戏画面越来越大、方块个数越来越多的效果,如图10-13所示

评论一下?

OωO
取消