数组名作为函数参数时可以修改实际参数的值(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所示

评论一下?