That's true but I wouldn't worry too much about that, unless your machine is very low-spec.
You can leave the 0 position empty, as it's a bit hard to use it with objects when they start at 1.
But that said, you are starting in the right place, arrays are cool, they make life easier if you learn how to map them out and write your game around that map
You might do something like:
dim soldiers#(10,3)
dim soldiers(10,1)
for soldier=1 to 10
load object "your_object_here.x",soldier
position object soldier,rnd(500.0),0.0,rnd(500.0)
soldiers#(soldier,1)=object position x(soldier)
soldiers#(soldier,2)=object position y(soldier)
soldiers#(soldier,3)=object position z(soldier)
soldiers(soldier,1)=1
next soldier
Your array map should be drawn on paper first and look something like:
soldiers#(soldier,posinfo#[3 slots])
slot 1=xpos#
slot 2=ypos#
slot 3=zpos#
soldiers(soldier,liveordead[1 slot])
slot 1=1 for alive, 0 for dead
So you left slot 0 free for something else.
and you can just keep adding slots for more info, using the float array for float values, and the int array for int values. More dimensions come into play when you want to neaten things up, but get your head around the basics first
to use that info, like to find out where youre soldiers went:
for soldier=1 to 10
`check if the soldier is alive:
if soldiers(soldier,1)=1
`if so, find out where he is:
x#=soldiers#(soldier,1)
y#=soldiers#(soldier,2)
z#=soldiers#(soldier,3)
`text that info to the screen
text object screen x(soldier),object screen y(soldier),"Soldier number:"+str$(soldier)+" X="+str$(x#)," Y="+str$(y#)+" Z="+str$(z#)
endif
next soldier
ZX Spectrum 48k Issue 3, Radio shack Tape drive, Rank arena 12" T.V. set.