Rafael's link is better documented than this.
In fact this following code was adapted from some guy's on Blitzcoder - I couldn't get my head round his, so I kind of taught myself through his - if that makes sense.
If you want me to comment it, I might.
Graphics 640,480,32,2
SetBuffer BackBuffer()
Dim map(19,19)
Global px=20
Global py=20
Global gpx,gpy
readmap()
While Not KeyHit(1)
Cls
drawmap()
checkmove()
drawplayer()
showstats()
Flip
Wend
End
; FUNCTIONS
; Player Map Collision
Function playermapcollision()
For x=-1 To 1
For y=-1 To 1
If map(gpx+x,gpy+y)=1
If RectsOverlap (px,py,20,20,((px/20)*20)+x*20,((py/20)*20)+y*20,20,20) Then Return True
End If
Next
Next
End Function
; Show Stats
Function showstats()
Text 430,10,"Grid Ref: "+gpx+","+gpy
Text 430,30,map(gpx-1,gpy-1)+" "+map(gpx,gpy-1)+" "+map(gpx+1,gpy-1)
Text 430,40,map(gpx-1,gpy)+" "+map(gpx,gpy)+" "+map(gpx+1,gpy)
Text 430,50,map(gpx-1,gpy+1)+" "+map(gpx,gpy+1)+" "+map(gpx+1,gpy+1)
End Function
; Check Move
Function checkmove()
ox=px
oy=py
If KeyDown(205)
px=px+2
End If
If KeyDown(203)
px=px-2
End If
If KeyDown(200)
py=py-2
End If
If KeyDown(208)
py=py+2
End If
If px>360 Or px<20 Then px=ox
If py>360 Or py<20 Then py=oy
gpx=px/20
gpy=py/20
If playermapcollision() = True Then px=ox:py=oy
End Function
; Draw Player
Function drawplayer()
Rect px,py,20,20
End Function
; Draw Map
Function drawmap()
For ac=0 To 19
For dn=0 To 19
Color 0,0,255
If map(ac,dn)=1 Then Rect ac*20,dn*20,20,20
Color 0,255,0
Line ac*20,0,ac*20,400
Line 0,dn*20,400,dn*20
Color 255,255,255
Next
Next
End Function
; Read Map
Function readmap()
Restore level1
For dn=0 To 19
For ac=0 To 19
Read a
map(ac,dn)=a
Next
Next
End Function
.level1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,1
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1
Data 1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1
Data 1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1
Data 1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1
Data 1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1