В блице можно много раз юзать Dim допустим следующий код :
Dim map(10,10)
map_width=100
map_height=100
Dim map(map_width,map_height)
Это не даст ошибки и не создаст дубликата массива map.
Полный безразмерный массив либо через типы либо так:
Dim map(0,0)
global map_w
global map_h
Для изменения размера вызваем Dim(map_w, map_h) предварительно привсовив им значения.
Пример на практике:
Dim map(0,0)
Global map_width=20 ; Ширина мапы
Global map_height=20 ; Высота мапы
; создаём мапу
Dim map(map_width,map_height)
For poy=0 To map_height
For pox=0 To map_width
map(pox,poy)=Rand(0,9); заполним ячейки случайными числами
Next
Next
; Поработаем с мапкой ^_^
Repeat
Cls
For poy=0 To map_height
For pox=0 To map_width
Rect pox*32,poy*32,32,32,False
Text pox*32,poy*32,map(pox,poy)
Next
Next
Flip
Until KeyHit(1)
Через типы всё немного посложнее:
Опять же если речь идёт о 2D карте:
Type TArray
Field dat
End Type
Global map_width=10
Global map_height=10
; Создаём рандомную мапу с рандомными числами в каждой ячейке
For poY=0 To map_height
For pox=0 To map_width
arr.TArray=New TArray
arr\dat=Rand(0,9); лучайное число от нуля до девяти
Next
Next
; А работать с такой мапой так:
Repeat
pox=0
poy=0
For arr.TArray=Each TArray
Rect pox*32-1,poy*32-1,32,32,False
Text pox*32,poy*32,arr\dat
poy=poy+1
If poy>map_height Then poy=0:pox=pox+1
Next
Flip
Until KeyHit(1)
Личная заметка:
Както так получилось, что первый способ у меня работает быстрее(который без типов) В принципе способ живой и не возбраняется его использовать