rem Sprite Showcase

rem Standard Setup Code for all examples
sync on : sync rate 0 : backdrop on : color backdrop 0

rem Load images
set image colorkey 255,0,255
create animated sprite 1, "animspr.bmp", 4, 4, 16
load image "ship.bmp",2
load image "backdrop.bmp",3

rem Setup backdrop sprite
sprite 1001,0,0,3 : sprite 1002,0,0,3
set sprite priority 1001,0 : set sprite priority 1002,0
size sprite 1001,1024,1024 : size sprite 1002,1024,1024

rem Setup asteroid sprite
sprite 1,320,240,16 : size sprite 1,128,128 : offset sprite 1,64,64

rem Array for finer asteroid data
dim ast#(100)

rem Copy animating sprite
for t=2 to 99
 clone sprite 1,t
 sprite t,rnd(640+256)-128,rnd(1400)-400,16
 ast#(t)=sprite y(t)
 rotate sprite t,rnd(350)
 set sprite frame t,rnd(15)
 set sprite t,0,1
 a#=rnd(350) : s#=32
 sss#=64+(cos(a#)*s#)
 size sprite t,sss#,sss#
 offset sprite t,sss#/2,sss#/2
 if t<50
  set sprite priority t,1
 else
  set sprite priority t,3
 endif
next t

rem Setup ship sprite
sprite 100,200,140,2
set sprite priority 100,2

rem Backdrop shift
shiftx#=0

rem Main loop
do

 rem Move backdrop
 shiftx#=shiftx#+2.0
 sya#=wrapvalue(sya#+0.1)
 sy#=-260+(cos(sya#)*260)
 if shiftx#>1024.0 then shiftx#=shiftx#-1024
 sprite 1001,0-shiftx#,sy#,3 : sprite 1002,1024-shiftx#,sy#,3

 rem Control sprite auto-animation
 for t=1 to 99
  a#=wrapvalue(sprite angle(t)+1+rnd(2))
  rotate sprite t,90
  move sprite t,-3.0
  ast#(t)=ast#(t)-(sin(sya#)*0.3)
  if sprite x(t)<-128 then move sprite t,(640+256) : a#=rnd(350)
  sprite t,sprite x(t),ast#(t),sprite image(t)
  play sprite t,1,16,50
  rotate sprite t,a#
 next t

 rem Glide ship
 g#=wrapvalue(g#+1)
 h#=wrapvalue(h#+0.5)
 sprite 100,200,140+(sin(g#)*10),2
 scale sprite 100,100+sin(h#)*20.0
 rotate sprite 100,sin(sya#)*10.0

 rem Update screen
 sync

rem End loop
loop