Here's the method I'm using for my Asteroids game.
function update_bullets()
rem move bullets
array index to top bullets(0)
do
rem if we hit the last bullet, stop the loop
if array index valid(bullets(0)) = 0 then exit
rem if the bullets run out of life, make them dissapear
dec bullets().life
if bullets().life <= 0
rem make bullet dissapear
delete sprite bullets().id
array delete element bullets(0)
else
rem move the bullet
move sprite bullets().id, bullets().speed
rem wrap the bullet
if sprite x(bullets().id) < 0 then sprite bullets().id, 640, sprite y(bullets().id), 3
if sprite x(bullets().id) > 640 then sprite bullets().id, 0, sprite y(bullets().id), 3
if sprite y(bullets().id) < 0 then sprite bullets().id, sprite x(bullets().id), 480 , 3
if sprite y(bullets().id) > 480 then sprite bullets().id, sprite x(bullets().id), 0, 3
rem check if the bullet is hitting anything
bullet_collision()
next array index bullets(0)
endif
loop
endfunction
First, make a bullet type, then dim an empty array. Whenever you want to make a bullet, add an array slot, set the life to default, and put the value from a free_obj() function in the id field. The code I posted loops through each bullet, decrements it's life, moves it, and if its life has run out, delete it.
[edit]
Oops... Thought this was about Pro.
Confucius Say...