Well, you really should consider making a global list for each type. Each type should have a function that returns a new instance of that type and adds it to a global list. Also, you might consider making an update method in the type which will move and draw the type. You want your objects stored in some container or they will get deleted as soon as all references to them go out of scope. Bmax has automatic garbage collection. If you use "new" you must store a reference to that new object either in a list or other structure. Or it will be deleted automatically.
You then can do something like this.
global ship_list:tlist = new tlist
type ship
field x:float, y:float
function construct(x_pos:float, y_pos:float)
local s:ship = new ship
s.x=x_pos
s.y =y_pos
listaddlast(ship_list,s)
endfunction
method draw()
'draw sprite here
endmethod
method move()
'move ship here
endmethod
method update()
move()
draw()
endmethod
method destroy()
listremove(ship_list,self)
endmethod
endtype
For local s:ship = eachin(ship_list)
s.update()
next