I'll give you a clue; going back to the example, say we wanted a second map, maybe for a different town that our player could travel to. We'd do something like this.
map(2,x,y)
rem map 1
map(1,0,0) = sea
map(1,1,0) = grass
map(1,2,0) = grass
map(1,3,0) = forest
map(1,4,0) = cave
map(1,0,1) = sea
map(1,1,1) = town
map(1,2,1) = town
....
rem map 2
map(2,0,0) = sea
map(2,1,0) = grass
map(2,2,0) = town
map(2,3,0) = town
map(2,4,0) = grass
map(2,0,1) = grass
map(2,1,1) = town
map(2,2,1) = sea
....
Now we have 3 coordinates: which map we are pointing to, x and y. This is now a 3 dimensional array, so you could say we have a cube and each cross section of the cube is a separate map.
I think I am confusing you a bit with this example, you seem to be thinking of making an array for the screen and then storing the players position in the correct box; that's not a very good way to do it.
You need to use your array differently in your game, you aren't using it as a map, you aren't using the array like a grid, you just need some boxes to store different values in.
rem object([number of objects],[x]+[y]+[speed]+[direction])
DIM object(3,4)
x=1:y=2:speed=3:move=4
object(1,x)=320
object(1,y)=320
object(1,speed)=5
object(1,move)=0
object(2,x)=320
object(2,y)=320
object(2,speed)=8
object(2,move)=0
rem and so on...