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