Hey! This looks very much like a 20-liner I write ages ago!! (under 'Galactic Invaders'). Check it out:
draw to back : backdrop off : autocam off : sync rate 60 : sync on : hide mouse : ebs=1
px=400 : score=0 : dim ex(8,5) : dim ey(8,5) : dim bulletx(5) : dim bullety(5)=110 : dim bulletdy(5)=0 : bulletcount=1 : adx=1 : sp=600 : aliencount=0 : position camera 400,300,-500 : make object cube 500,70 : make object cube 501,5 : make object cube 502,5 : make object cube 503,5 : make object cube 504,5 : make object cube 505,5 : bulletwait=0 : eby=0 : make object cube 499,8 : lives=3
start:
ebs=ebs+1 : for x= 1 to 8 : for y= 1 to 5 : make object cube ((x-1)*5) + y,30 : ex(x,y)=x*50 : ey(x,y)=sp-(y*50) : position object ((x-1)*5) + y,ex(x,y),ey(x,y),0 : next y : next x
do : position object 500,px,50,0 : if leftkey()=1 then px=px-3
box 0,0,screen width(),screen height(),0,rgb(0,0,100),rgb(0,0,100),0
if rightkey()=1 then px=px+3
if spacekey()=1 and bulletwait >20
bulletcount=bulletcount+1 : if bulletcount > 5 then bulletcount=1
bulletwait=1 : bullety(bulletcount)=113 : bulletx(bulletcount)=px : endif : bulletwait=bulletwait+1 : for t=1 to 5 : if bullety(t)>600 then bullety(t)=110
if bullety(t)>110 then bullety(t)=bullety(t)+6 else bulletx(t)=px
position object 500+t,bulletx(t),bullety(t),0 : next t : for t=1 to 5 : oh=object hit(500+t,0) : if oh>0 and oh<499
aliencount=aliencount+1 : bullety(t)=110 : delete object oh : score=score+10 : endif : next t : flag=0 : for t=1 to 8 : for t2=1 to 5 : if object exist(((t-1)*5)+t2) and (ex(t,t2)<10 or ex(t,t2)>790) then flag=1
next t2 : next t : if flag=1 then adx=0-adx : for drop=1 to 10 : for x=1 to 8 : for y=1 to 5 : ey(x,y)=ey(x,y)-2 : if object exist(((x-1)*5)+y) then position object ((x-1)*5)+y,ex(x,y),ey(x,y),0 : flag=1
next y : next x : sync : next drop : for t=1 to 8 : for t2=1 to 5 : ex(t,t2)=ex(t,t2)+adx*((aliencount+11)/10) : if object exist (((t-1)*5)+t2) then position object ((t-1)*5) + t2,ex(t,t2),ey(t,t2),0
next t2 : next t : if aliencount=40 then aliencount=0 : sp=sp-20 : goto start
eby=eby-ebs : if eby < 10 then enemyfire=rnd(39)+1 : if object exist(enemyfire) = 1 then ebx= object position x(enemyfire) : eby = object position y(enemyfire)
text 10,10,"Score :"+str$(score)+" " : text 300,10,"lives :"+str$(lives) : position object 499,ebx,eby,0 : go=object hit(500,0) : if go<499 and go>0 then text 100,360,"GAME OVER" : sync : wait 5000 : end
if go = 499 then text 250,340,"AAARGH! You lose a life!" : sync : wait 2000 : lives=lives-1 : if lives = 0 then text 100,360,"GAME OVER" : sync : wait 5000 : end
sync : loop
See!
Conrad Brown