I've didn't see this before, but it's very very useful. I hope no one minds me bumping this to make a comment, if so sorry.
I've changed the code of someone's on a previous thread so it now makes a 3d maze if anyone is interested. The camera moves a bit fast at the moment.
randomize timer()
sync on
sync rate 0
dim grid(10,10)
for y=1 to 10
for x=1 to 10
read grid(x,y)
next x
next y
a=1
for x=1 to 10
for y=1 to 10
inc a,1
if grid(x,y)=1
make object box a,10,10,10
position object a,x*10,0,y*10
endif
next y
next x
sync
do
if upkey()=1 or keystate(17)=1 then move camera 2
if downkey()=1 or keystate(31)=1 then move camera -2
angy# = camera angle y()
angx# = camera angle x()
xrotate camera 0
if leftkey()=1 or keystate(30)=1 then yrotate camera angy#-90 : move camera 2 : yrotate camera angy#
if rightkey()=1 or keystate(32)=1 then yrotate camera angy#+90 : move camera 2 : yrotate camera angy#
yrotate camera angy#+mousemovex()/2.0
xrotate camera angx#+mousemovey()/2.0
sync
loop
data 1,1,1,1,1,1,1,1,1,1
data 1,0,0,0,0,0,1,1,1,1
data 1,0,1,1,1,0,1,1,1,1
data 1,0,1,1,1,0,0,0,1,1
data 0,0,1,1,1,1,1,0,0,0
data 1,0,0,0,1,1,0,0,1,1
data 1,0,1,0,0,0,0,1,1,1
data 1,0,1,0,1,1,0,0,0,1
data 1,0,0,0,1,1,1,1,0,1
data 1,1,1,1,1,1,1,1,1,1