I would create an array for projectiles like this:
type ProjectileType
SpriteNo as integer
Velocity as integer
endtype
DIM Projectiles(0) as ProjectileType
And then create some code in your main loop that moves and updates all the projectiles in the array, like this:
for c=1 to array count(Projectiles(0))
move sprite Projectiles(c).SpriteNo,Projectiles(c).Velocity
if sprite x(Projectiles(c).SpriteNo)<-100 or sprite x(Projectiles(c).SpriteNo)>screen width(c)+100 or sprite y(Projectiles(c).SpriteNo)<-100 or sprite y(Projectiles(c).SpriteNo)>screen height(c)+100
delete sprite Projectiles(c).SpriteNo
array delete element Projectiles(0),c
endif
next c
And finally some code that starts the projectile:
if controlkey()=1
array insert at bottom Projectiles(0)
temp=array count(Projectiles(0))
Projectiles(temp).SpriteNo=FreeSprite() `Of course you'll need a FreeSprite function
Projectiles(temp).Velocity=Velocity
sprite Projectiles(temp).SpriteNo,sprite x(PlayerSprite),sprite y(PlayerSprite),ImageNo
`[Rotate sprite properly if you need to]
`[Play any player animation]
endif
All code untested, but you should get the idea.