I don't understand why you see this as a problem. You have described what you need to do, which is exactly what you need to do.
Make 3 arrays - enemy(), dog() and turtle()
Then each time you create a new enemy (for example) store it sprite number in the next available enemy 'slot'. then when you want to iterate through your enemy sprites, the actual sprite number is irrelevant.
Wait one - I'll knock up an example. - Done, I hope it helps.
#constant TRUE 1
#constant FALSE 0
#constant iEnemy 1
#constant iDog 2
#constant iTurtle 3
type tEntity
spNum as integer
x as float
y as float
endtype
global qtyEnemies as integer
global qtyDogs as integer
global qtyTurtles as integer
global D_Pressed as boolean
global E_Pressed as boolean
global T_Pressed as boolean
global counter as float
MakeImage("Enemy", iEnemy)
MakeImage("Dog", iDog)
MakeImage("Turtle", iTurtle)
dim enemy(0) as tEntity
dim dog(0) as tEntity
dim turtle(0) as tEntity
sync on
sync rate 60
do
if E_PressedOnce()
CreateEnemy()
endif
if D_PressedOnce()
CreateDog()
endif
if T_PressedOnce()
CreateTurtle()
endif
MoveAllEnemies()
MoveAllDogs()
MoveAllTurtles()
inc counter, 1
sync
loop
end
function MoveAllEnemies()
if qtyEnemies < 1 then exitfunction
for k = 0 to qtyEnemies-1
sprite enemy(k).spNum, enemy(k).x, enemy(k).y + sin(counter) * 100, iEnemy
next k
endfunction
function MoveAllDogs()
if qtyDogs < 1 then exitfunction
for k = 0 to qtyDogs-1
sprite dog(k).spNum, dog(k).x + sin(counter) * 100, dog(k).y, iDog
next k
endfunction
function MoveAllTurtles()
if qtyTurtles < 1 then exitfunction
for k = 0 to qtyTurtles-1
sprite turtle(k).spNum, turtle(k).x + sin(counter) * 100, turtle(k).y + cos(counter) * 100, iTurtle
next k
endfunction
function D_PressedOnce()
if keystate(32)
if D_Pressed = FALSE
D_Pressed = TRUE
exitfunction TRUE
endif
else
D_Pressed = FALSE
endif
endfunction FALSE
function E_PressedOnce()
if keystate(18)
if E_Pressed = FALSE
E_Pressed = TRUE
exitfunction TRUE
endif
else
E_Pressed = FALSE
endif
endfunction FALSE
function T_PressedOnce()
if keystate(20)
if T_Pressed = FALSE
T_Pressed = TRUE
exitfunction TRUE
endif
else
T_Pressed = FALSE
endif
endfunction FALSE
function CreateEnemy()
dim enemy(qtyEnemies) as tEntity // Recreating array does not delete old current entries
enemy(qtyEnemies).spNum = FindFreeSprite()
enemy(qtyEnemies).x = rnd(500)
enemy(qtyEnemies).y = rnd(300)
sprite enemy(qtyEnemies).spNum, enemy(qtyEnemies).x,enemy(qtyEnemies).y, iEnemy
inc qtyEnemies
endfunction
function CreateDog()
dim dog(qtyDogs) as tEntity // Recreating array does not delete old current entries
dog(qtyDogs).spNum = FindFreeSprite()
dog(qtyDogs).x = rnd(500)
dog(qtyDogs).y = rnd(300)
sprite dog(qtyDogs).spNum, dog(qtyDogs).x,dog(qtyDogs).y, iDog
inc qtyDogs
endfunction
function CreateTurtle()
dim turtle(qtyTurtles) as tEntity // Recreating array does not delete old current entries
turtle(qtyTurtles).spNum = FindFreeSprite()
turtle(qtyTurtles).x = rnd(500)
turtle(qtyTurtles).y = rnd(300)
sprite turtle(qtyTurtles).spNum, turtle(qtyTurtles).x,turtle(qtyTurtles).y, iTurtle
inc qtyTurtles
endfunction
function FindFreeSprite()
repeat
s = rnd(65535)
until sprite exist(s) = FALSE
endfunction s
function MakeImage(imageText as string, imageNumber )
create bitmap 1, text width(imageText), text height(imageText)
text 0, 0, imageText
get image imageNumber, 0, 0, text width(imageText), text height(imageText),1
delete bitmap 1
endfunction
I should point out that when you run this code, it appears to do nothing. You need to press E,D or T to create an Enemy, Dog or Turtle.