Challenge: 
Winner?: 
Yes
Code Snippet: 
REM Project: Space Invaders
REM Created: 7/11/2006 10:41:16 AM
REM
REM ***** Main Source File *****
REM
createsound("explosion",1,100,1000,8000,0.01,0,0,0,0,0,10)
createsound("opening1",2,400,2000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening2",3,350,2000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening3",4,300,2000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening4",5,350,1500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening5",6,375,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening6",7,256,1000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening6",8,256,4000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening7",9,213,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening9",10,150,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("shot",16,100,100,8000,0,1.5,0,0,0,0,10)
createsound("enemy,explosion",17,500,500,8000,0,0,0.05,0.4,0.5,1800,10)
createsound("move",18,256,100,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("down",19,235,100,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("ending 1",20,128,1000,8000,0,0,0,0,0,0,10)
createsound("ending 2",21,118,1000,4000,0,0,0,0,0,0,10)
createsound("ending 3",22,98,6000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen1",23,293.67,1000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen2",24,440,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen3",25,349.23,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen4",26,392,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen5",27,329.63,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen6",28,261.6,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen7",29,220,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen8",30,146.83,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen9",31,493.88,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen10",32,146.83,1000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen11",33,329.63,1000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen12",34,493.88,1000,4000,0,0,0.05,0.3,0.05,1800,10)
dim dotx(300)
dim doty(300)
dim shots(2)

global finnalnote=1
make camera 1
dim l(8)
dim fire(4)
dim score#(2)
dim score(2)
dim ri(2)
sync on

move camera 1,-30




make object box 50,1,1,1
make mesh from object 1,50
for i=1 to 26
add limb 50,i,1
next i
lim=0

restore topalien
for y=1 to 7
   for x=1 to 7
 if y=7 and x=3 then l(1)=lim
   if y=7 and x=5 then l(2)=lim
   read r
      if x=4 and y=4 then goto skip1
         if r=1
         offset limb 50,lim,4-x,4-y,0
         lim=lim+1
         endif
      skip1:
   next x
next y

scale object 50,100/7,100/7,100/7
make mesh from object 2,50



make object box 51,1,1,1
lim=0

for i=1 to 22
add limb 51,i,1
next i

restore twoalien
for y=1 to 7
   for x=1 to 9
   if y=5 and x=1 then l(3)=lim
   if y=5 and x=7 then l(4)=lim
   read r
      if x=5 and y=4 then goto skip2
         if r=1
         offset limb 51,lim,5-x,4-y,0
         lim=lim+1
         endif
      skip2:
   next x
next y

scale object 51,100/9,100/7,100/7
make mesh from object 3,51
position object 51,500,0,0



make object box 52,1,1,1
lim=0
for i=1 to 33
add limb 52,i,1
next i

restore threealien
for y=1 to 9
   for x=1 to 7
   if y=9 and x=1 then l(5)=lim
   if y=9 and x=7 then l(6)=lim
   read r
      if x=4 and y=5 then goto skip3
         if r=1
         offset limb 52,lim,4-x,5-y,0
         lim=lim+1
         endif
      skip3:
   next x
next y

scale object 52,100/7,100/8,100/7
make mesh from object 4,52
position object 52,500,0,0



make object box 53,1,1,1
lim=0
for i=1 to 23
add limb 53,i,1
next i

restore fouralien
for y=1 to 7
   for x=1 to 7
   if y=7 and x=3 then l(7)=lim
   if y=7 and x=5 then l(8)=lim
   read r
      if x=4 and y=4 then goto skip4
         if r=1
         offset limb 53,lim,4-x,4-y,0
         lim=lim+1
         endif
      skip4:
   next x
next y

scale object 53,100/7,100/7,100/7
make mesh from object 5,53
position object 53,500,0,0





color backdrop 1,0
make object cone 60,5
color object 60,rgb(0,0,75)
make object cone 61,1
move object up 61,2.05
color object 61,0
set ambient light 1
move object down 50,5
color object 50,69458459
p=-1
s=2
do
if sound playing(s-1)=0 and s<8 and thru<2
if s=7 and sound playing(6)=0
   s=2
   thru=thru+1
endif
play sound s
s=s+1
endif
if mouseclick()=1 then goto game
a$="The aliens were looking for a place to expand, more land, more resources."
b$="One of the reconnaissance ships found somthing amazing..."
text screen width()/2-text width(a$)/2,screen height()-text height(a$)*3,a$
text screen width()/2-text width(b$)/2,screen height()-text height(a$)*2,b$
wait 1
tic=tic+1
if tic=400 then goto part1
sync
loop


do
part1:
if sound playing(s-1)=0 and s<8 and thru<2
if s=7 and sound playing(6)=0
   s=2
   thru=thru+1
endif
play sound s
s=s+1
endif
a$="Sjxcigonsj fjxidl ixnweisj."
b$="Translation: Turn on those headlights its dark out here."
text screen width()/2-text width(a$)/2,screen height()-text height(a$)*3,a$
text screen width()/2-text width(b$)/2,screen height()-text height(a$)*2,b$
move object right 50,0.125
wait 50
right=right+1
if right>80 then goto shipleft
sync
loop

shipleft:
do
if sound playing(s-1)=0 and s<8 and thru<2
if s=7 and sound playing(6)=0
   s=2
   thru=thru+1
endif
play sound s
s=s+1
endif
if mouseclick()=1 then goto game
a$="Sjxcigonsj fjxidl ixnweisj."
b$="Translation: Turn on those headlights its dark out here."
text screen width()/2-text width(a$)/2,screen height()-text height(a$)*3,a$
text screen width()/2-text width(b$)/2,screen height()-text height(a$)*2,b$
move object left 50,0.125
wait 50
right=right+1
if right>160 then goto suckup1
sync
loop

suckup1:
set ambient light 50
do
if sound playing(s-1)=0 and s<8 and thru<2
if s=7 and sound playing(6)=0
   s=2
   thru=thru+1
endif
play sound s
s=s+1
endif
if thru=2
if sound playing(2)=0 and sound playing(6)=0 and p=-1
play sound 7
p=0
endif
if sound playing(7)=0 and p=0
play sound 9
p=1
endif
if sound playing(9)=0 and p=1
play sound 7
p=2
endif
if sound playing(7)=0 and p=2
play sound 9
p=3
endif
if sound playing(9)=0 and p=3
play sound 10
p=4
endif
if sound playing(10)=0 and p=4
play sound 9
p=5
endif
if sound playing(9)=0 and p=5
play sound 7
p=6
endif
endif
if mouseclick()=1 then goto game
a$="Axidksnlsinenshad!!!"
b$="Translation: IT'S A WORMHOLE. GET OUT OF HERE!"
text screen width()/2-text width(a$)/2,screen height()-text height(a$)*3,a$
text screen width()/2-text width(b$)/2,screen height()-text height(a$)*2,b$
move object up 50,0.06
wait 50
right=right+1
if right>250 then goto suckup2
sync
loop

suckup2:
make light 1
position light 1,0,0,250
point light 1,0,20,400
delete object 60
delete object 61
make object sphere 60,5
set ambient light 1
color object 60,rgb(0,0,100)
make object sphere 61,100
move object 61,400
move object up 61,40
color object 61,rgb(200,200,0)
do
if sound playing(s-1)=0 and s<8 and thru<2
if s=7 and sound playing(6)=0
   s=2
   thru=thru+1
endif
play sound s
s=s+1
endif
if thru=2
if sound playing(2)=0 and sound playing(6)=0 and p=-1
play sound 7
p=0
endif
if sound playing(7)=0 and p=0
play sound 9
p=1
endif
if sound playing(9)=0 and p=1
play sound 7
p=2
endif
if sound playing(7)=0 and p=2
play sound 9
p=3
endif
if sound playing(9)=0 and p=3
play sound 10
p=4
endif
if sound playing(10)=0 and p=4
play sound 9
p=5
endif
if sound playing(9)=0 and p=5
play sound 8
p=6
endif
endif
if mouseclick()=1 then goto game
a$="Dskxoien skdinklll ixelkshen."
b$="Translation: Contact our mothership. "
c$="We've found our new home."
text screen width()/2-text width(a$)/2,screen height()-text height(a$)*3,a$
text screen width()/2-text width(b$)/2,screen height()-text height(a$)*2,b$
text screen width()/2-text width(c$)/2,screen height()-text height(a$)*1,c$
wait 50
right=right+1
if right>400 then goto game
sync
loop

sw=1
p=-1



game:
for i=2 to 6
if sound playing(i)=1 then stop sound i
next i
if light exist(1)=1 then delete light 1
if object exist(61)=1 then delete object 61
if object exist(60)=1 then delete object 60
position object 50,0,-8,0
sync
move camera 1,-10
make light 5
make light 6
position light 5,0,0,30
position light 6,0,0,-30
point light 5,0,0,0
point light 6,0,0,0

make object box 57,1,1,1
make mesh from object 1,57
lim=0
for i=1 to 32
add limb 57,i,1
next i
scale object 57,100/2,100/2,100
position object 57,0,16,0
color object 57,rgb(0,0,150)

restore the
for y=1 to 5
   for x=1 to 15
   read r
      if x=7 and y=3 then goto skip7
         if r=1
         offset limb 57,lim,x-7,3-y,0
         lim=lim+1
         endif
      skip7:
   next x
   wait 100
   sync
next y



make object box 58,1,1,1
lim=0
for i=1 to 82
add limb 58,i,1
next i
scale object 58,100/2,100/2,100
position object 58,11,3,0
color object 58,rgb(100,0,0)

restore renewed
for y=1 to 5
   for x=1 to 35
   read r
      if x=18 and y=3 then goto skip8
         if r=1
         offset limb 58,lim,x-18,3-y,0
         lim=lim+1
         endif
      skip8:
   next x
   wait 100
   sync
next y



make object box 59,1,1,1
lim=0
for i=1 to 51
add limb 59,i,1
next i
scale object 59,100/2,100/2,100
position object 59,-16,0,0
color object 59,rgb(0,0,150)

restore space
for y=1 to 5
   for x=1 to 23
   read r
      if x=12 and y=3 then goto skip9
         if r=1
         offset limb 59,lim,x-23,3-y,0
         lim=lim+1
         endif
      skip9:
   next x
   wait 100
   sync
next y


make object 600,2,0
lim=0
for i=1 to 90
add limb 600,i,2
color object 600,rgb(0,0,150)

next i
position object 600,7,-10,0
scale object 600,100/2,100/2,100
restore invaders
for y=1 to 5
   for x=1 to 43
   read r
      if x=22 and y=3 then goto skip10
         if r=1
         offset limb 600,lim,x-22,3-y,0
         lim=lim+1
         endif
      skip10:
   next x
   wait 100
   sync
next y










change#=1
dif=1
a=1
life=3
dim button1(100)

set text size 40
set text font "Arial"
randomize timer()


d$="Created by Spopovich"
e$="Press the space key to continue."



ink rgb(100,0,100),rgb(100,0,100)

for i=1 to 300
dotx(i)=rnd(screen width())
doty(i)=rnd(screen height())
next i


ink rgb(255,255,255),rgb(255,255,255)
move camera -5

global p1=-1
global pa=0


for i=1 to 40
if spacekey()=1 then goto outofsound
move object down 57,0.25
move object left 58,0.25
move object right 59,0.25
move object up 600,0.25
wait 50
sync
for j=1 to 300
dot dotx(j),doty(j)
next j
next i

do
position camera 1,0,0,0
turn camera right 1,3
move camera 1,-35
text screen width()/2-text width(d$)/2,screen height()/2+text height(d$)*3,d$
text screen width()/2-text width(e$)/2,screen height()/2+text height(e$)*4,e$
if color=0
color object 57,rgb(0,0,150)
color object 58,rgb(100,0,0)
color object 59,rgb(0,0,150)
color object 600,rgb(0,0,150)
color=1
goto pastcolor
endif
color=color+1
if color=3
color object 57,rgb(100,0,0)
color object 58,rgb(0,0,150)
color object 59,rgb(100,0,0)
color object 600,rgb(100,0,0)
color=0
endif
pastcolor:
song(0,1,10,23,24,25,26,33,23,24,25,26,33)
song(1,2,10,23,27,25,26,33,23,26,24,28,34)
song(2,0,6,23,25,26,23,29,32,0,0,0,0)
wait 100
ink rgb(255,255,255),rgb(255,255,255)
for i=1 to 300
dot dotx(i),doty(i)
next i
ink rgb(100,0,100),rgb(100,0,100)
sync
if spacekey()=1 then goto outofsound
loop
outofsound:
delete camera 1
delete object 600
delete object 57
delete object 58
delete object 59
set text size 20
position object 50,500,0,0
color backdrop 0
sync
ink rgb(255,255,255),rgb(255,255,255)

global m=1
global p=1
delete light 5
delete light 6
butoncheck:

song(0,1,10,23,24,25,26,33,23,24,25,26,33)

song(1,2,10,23,27,25,26,33,23,26,24,28,34)

song(2,0,6,23,25,26,23,29,32,0,0,0,0)

button("Play",20,1,1)
button("Version",20,81,2)
button("Difficulty",20,162,3)
button("Controlls",20,243,4)
button("Players",20,324,5)
if p=2 then button("co-op or duel",20,405,6)
a$="version "+str$(a)
b$="difficulty "+str$(dif)
c$="players "+str$(p)
if m=1 then d$="co-op"
if m=2 then d$="duel"
text 0,0,a$
if p=2 then text text width(a$)+10,0,d$
text screen width()-text width(b$),0,b$
text screen width()-text width(b$)-10-text width(c$),0,c$
sync
goto butoncheck

play2:
cls
a$="Loading..."
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
sync
set ambient light 50

level#=1

lim=0
make object box 100,1,1,1
make mesh from object 1,100
for i=1 to 23
add limb 100,i,1
next i
restore ship
for y=1 to 7
   for x=1 to 7
   read r
      if x=4 and y=3 then goto skip
         if r=1
         offset limb 100,lim,4-x,3-y,0
         lim=lim+1
         endif
      skip:
   next x
next y

scale object 100,100/7,100/3,100/7
make mesh from object 9,100
make camera 1
color backdrop 1,0
set camera range 1,100000


restore ship
for y=1 to 7
   for x=1 to 7
   read r
      if r=1
         if x=4 and y=2 then ink rgb(150,0,0),rgb(150,0,0)
         if x=3 and y=3 then ink rgb(0,0,150),rgb(0,0,150)
         if x=1 and y=6 then ink rgb(255,255,255),rgb(255,255,255)
         if x=4 and y=6 then ink rgb(0,0,150),rgb(0,0,150)
         if x=7 and y=6 then ink rgb(255,255,255),rgb(255,255,255)
         if x=1 and y=7 then ink rgb(0,0,150),rgb(0,0,150)
         box x*3,y*6,(x+1)*3,(y+1)*6
      endif
   next x
next y
get image 1,0,0,30,60
cls
ink rgb(255,255,255),rgb(255,255,255)
line 20,0,20,40
line 0,20,40,20
get image 3,0,0,40,40
cls

if a=1
for i=1000 to 1300
a$="Loading..."
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
make object sphere i,5
position object i,rnd(4000)-2000,rnd(2500)-1250,rnd(1000)+1000
next i
endif

if a=2 and m=1
for i=1000 to 1300
a$="Loading..."
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
make object sphere i,5
position object i,rnd(4000)-2000,rnd(2500)+1000,rnd(2000)-1000
next i
endif

if a=2 and m=2
for i=1000 to 1150
a$="Loading..."
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
make object sphere i,5
position object i,rnd(4000)-2000,rnd(2500)+1000,rnd(2000)-1000
next i
for i=1151 to 3000
a$="Loading..."
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
make object sphere i,5
position object i,rnd(4000)-2000,-1*rnd(2500)-1000,rnd(2000)-1000
next i
endif

move camera 1,-30
move object down 100,12

color limb 100,0,rgb(150,0,0)

color limb 100,14,rgb(0,0,150)

for i=1 to 12
color limb 100,i,rgb(0,0,150)
next i

for i=16 to 23
color limb 100,i,rgb(0,0,150)
next i



move=1
randomize timer()
make light 1
position light 1,object position x(100),object position y(100)+1,object position z(100)
point light 1,0,15,0

if a=2
position camera 1,object position x(100),object position y(100),object position z(100)-1
pitch camera up 1,90
endif



for i=60 to 67
make object sphere i,.2
position object i,500,0,0
if a=1 then pitch object up i, 90
turn object right i,(i-60)*45
color object i,rgb(100,0,0)
next i




if p=2
clone object 98,100

color limb 98,0,rgb(0,0,150)

color limb 98,14,rgb(150,0,0)

for i=1 to 12
color limb 98,i,rgb(150,0,0)
next i

for i=16 to 23
color limb 98,i,rgb(150,0,0)
next i
endif

sprite 4,0,0,3

if a=2 and p=2
sprite 2,screen width()/2-sprite width(4)/2,screen height()/4+sprite height(4)/2,3
sprite 3,screen width()/2-sprite width(4)/2,screen height()/4*3+sprite height(4)/2,3
endif
delete sprite 4

if m=2 then goto duel

for i=1 to 10
clone object i,50
color object i,rgb(200,0,185)
position object i,1.5*i-8,15-1,0
if a=2 then pitch object up i,90
fix object pivot i
next i

for i=11 to 20
clone object i,51
color object i,5869458459
position object i,1.5*i-23,15-1-2,0
if a=2 then pitch object up i,90
fix object pivot i
next i

for i=21 to 30
clone object i,52
color object i,69458459
position object i,1.5*i-38,15-1-4,0
if a=2 then pitch object up i,90
fix object pivot i
next i

for i=31 to 40
clone object i,53
color object i,948459
position object i,1.5*i-53,15-1-6,0
if a=2 then pitch object up i,90
fix object pivot i
next i
sprite 4,0,0,3
if a=2 and p=1 then sprite 2,screen width()/2-sprite width(4)/2,screen height()/2+5,3

if a=2 and p=2
sprite 2,screen width()/2-sprite width(4)/2,screen height()/4,3
sprite 3,screen width()/2-sprite width(4)/2,screen height()/4*3,3
make camera 2
set camera view 1,0,0,screen width(),screen height()/2
set camera view 2,0,screen height()/2,screen width(),screen height()
color backdrop 2,0
pitch camera up 2,90
position camera 2,object position x(98),object position y(98),object position z(98)-1
endif



delete sprite 4

level:

if level#<16 then change#=level#

for i=1 to 10
position object i,1.5*i-8,15-1,0
show object i
next i

for i=11 to 20
position object i,1.5*i-23,15-1-2,0
show object i
next i

for i=21 to 30
position object i,1.5*i-38,15-1-4,0
show object i
next i

for i=31 to 40
position object i,1.5*i-53,15-1-6,0
show object i
next i


for i=201 to 204
if object exist(i)=0
make object box i,1,1,1
endif
next i

position object 201,-8.5,-9.5,0
position object 202,-7.5,-9.5,0
position object 203,-8.5,-10.5,0
position object 204,-7.5,-10.5,0

for i=205 to 208
if object exist(i)=0
make object box i,1,1,1
endif
next i

position object 205,-0.5,-9.5,0
position object 206,0.5,-9.5,0
position object 207,-0.5,-10.5,0
position object 208,0.5,-10.5,0

for i=209 to 212
if