space invader application by Anonymous Coder11th Mar 2009 18:08
|
---|
Summary game space invader sprite application Description Code ` This code was downloaded from The Game Creators ` It is reproduced here with full permission ` http://www.thegamecreators.com Rem Project: spaceinvader02 Rem Created: , March 11, 2009 Rem ***** Main Source File ***** rem sync on sync rate 100 rem // backdrop on autocam on set dir "media" randomize timer() global false as integer global true as integer type _map01 nmap as integer posx as integer posy as integer numspr as integer numshot as integer flghide as integer endtype type _ripp nmap as integer posx as integer posy as integer numspr as integer flghide as integer endtype type _mshot nmap as integer posx as integer posy as integer numspr as integer flghide as integer flgtemp as integer endtype global dim mshot(14) as _mshot global dim ripp1(10,14) as _ripp global dim ripp2(10,14) as _ripp global dim ripp3(10,14) as _ripp global dim ripp4(10,14) as _ripp global dim map01(7,15) as _map01 global comtimer as dword global comt as dword global dim levelgame(7) as integer global playgame as integer global score as integer=0 global level as integer=1 global lvl as integer=3 global v as integer=75 global vie as integer=v global flgend as integer=false global flg3600 as integer=false global flg8400 as integer=false global flg14400 as integer=false global flg21600 as integer=false rem rem rem ==================================== gosub ldimg gosub defmap rem ======================== rem rem =====================loop rem do cls loop music 1 gosub displaygame // play music 1 sync loop end rem =============================== mapp04: data 0,1,1,1,1,1,1,1,1,1,1,1,1,0 data 0,1,1,1,1,1,1,1,1,1,1,1,1,0 data 0,1,1,1,1,1,1,1,1,1,1,1,1,0 data 0,1,1,1,1,1,1,1,1,1,1,1,1,0 data 0,1,1,1,1,1,1,1,1,1,1,1,1,0 data 0,1,1,1,1,1,1,1,1,1,1,1,1,0 ripp01: data 0,0,0,0,0,0,0,0,0,0,0,0,0,0 data 0,1,1,1,1,1,1,1,1,1,1,1,1,0 data 0,1,1,1,1,1,1,1,1,1,1,1,1,0 data 0,1,1,1,1,1,0,0,1,1,1,1,1,0 data 0,1,1,1,1,1,0,0,1,1,1,1,1,0 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0 mapshot: data 0,1,1,1,1,1,1,1,1,1,1,1,1,0 rem rem ================================ ldimg: load image "Cyn.png",1 load image "e14.png",2 load image "shot1011.png",3 load image "rip01.png",4 load image "fire1.png",5 load image "s15.png",6 load music "music.mp3",1 load sound "die.wav",2 load sound "shotimpulse.wav",3 load sound "explosion1.wav",4 gosub setsprite return setsprite: sprite 2,0,0,2 hide sprite 2 set sprite 2,1,1 sprite 6,0,0,6 hide sprite 6 set sprite 6,1,1 sprite 5,0,0,5 hide sprite 5 set sprite 5,1,1 sprite 4,0,0,4 hide sprite 4 set sprite 4,1,1 sprite 3,0,0,3 hide sprite 3 set sprite 3,1,1 clone sprite 3,10 clone sprite 3,11 return rem rem Rem ***** Included Source File ***** rem ============================== defmap: gosub defvar gosub defe14 gosub defripp gosub defmshot return rem =================================== defmshot: restore mapshot for k=1 to 14 read a mshot(k).nmap=a mshot(k).posx=k mshot(k).flghide=false mshot(k).flgtemp=false if a<>0 mshot(k).numspr=4000+k clone sprite 6,mshot(k).numspr endif next k return rem ==================defvar============================== defvar: false=0 true=-1 for k=1 to 7 levelgame(k)=false next k playgame=false yyy=0 yshot=0 xshot=0 zzz=0 xxx=0 kx=0 kkk=0 kend=0 flgtimer=false ky=0 sk=0 return rem ============================================ defe14: zzz=0 restore mapp04 for k=1 to 7 for j=1 to 14 read a map01(k,j).nmap=a map01(k,j).posx=j map01(k,j).posy=k map01(k,j).flghide=false if a=1 inc zzz,1 inc zzzz,1 map01(k,j).numspr=zzz+1000 endif // set cursor j*30,k*30 // print map01(k,j).posx next j next k rem ============ for k=1 to 7 for j=1 to 14 if map01(k,j).nmap<>0 clone sprite 2,map01(k,j).numspr // set cursor j*40,k*30 // print map01(k,j).numspr endif next j next k return rem ========================================== defripp: xxx=40 zzz=0 restore ripp01 for k=1 to 10 for j=1 to 14 read a ripp1(k,j).nmap=a ripp1(k,j).posx=j*5+xxx ripp1(k,j).posy=k*10+350 ripp1(k,j).flghide=0 if a=1 inc zzz,1 ripp1(k,j).numspr=zzz+3000 clone sprite 4,ripp1(k,j).numspr endif ripp2(k,j).nmap=a ripp2(k,j).posx=j*5+140+xxx ripp2(k,j).posy=k*10+350 ripp2(k,j).flghide=0 if a=1 inc zzz,1 ripp2(k,j).numspr=zzz+3000 clone sprite 4,ripp2(k,j).numspr endif ripp3(k,j).nmap=a ripp3(k,j).posx=j*5+325+xxx ripp3(k,j).posy=k*10+350 ripp3(k,j).flghide=0 if a=1 inc zzz,1 ripp3(k,j).numspr=zzz+3000 clone sprite 4,ripp3(k,j).numspr endif ripp4(k,j).nmap=a ripp4(k,j).posx=j*5+480+xxx ripp4(k,j).posy=k*10+350 ripp4(k,j).flghide=0 if a=1 inc zzz,1 ripp4(k,j).numspr=zzz+3000 clone sprite 4,ripp4(k,j).numspr endif // set cursor j*35,k*35 // print ripp2(k,j).numspr next j next k rem return rem rem =======================================display rem displaygame: play music 1 if playgame=false gosub playonoff endif cls // sync gosub dise14 play music 1 gosub disshot gosub disripp gosub cylon gosub collision gosub collisionripp gosub collisionshot gosub endgamelevel gosub texttext play music 1 return rem ========================================== playonoff: cls sync if flgend = false text 400,10,"by vitaluciano@hotmail.fr" set text size 50 text 20,20,"space invader " set text size 25 text 10,80,"mouse move Cylon chip and click left fire" if score<3600 s99$="Level 1 Score 0000 "+"Life "+str$(vie) endif text 10,150,s99$ text 10,450,"press a key to start.............." // sync endif 1001: if flgend = true flgend = false text 400,10,"by vitaluciano@hotmail.fr" set text size 50 text 20,20,"space invader " text 50,100,"game over" set text size 25 text 10,180,s100$ text 10,220,"Your Score "+str$(yscore) text 10,450,"press a key to start.............." // sync endif sync wait key playgame=true return rem ===================================== texttext: // text 400,10,str$(mousex())+" "+str$(mousey()) // text 400,20,str$(aa)+" "+str$(bb) text 400,10,"by vitaluciano@hotmail.fr" s1$="Space Invader " s2$="level " s3$=str$(level)+" " s4$="Score " s5$=str$(score)+" " s6$="Life " s7$=str$(vie)+" " text 10,10,s1$+s2$+s3$+s4$+s5$+s6$+s7$ return rem ===================================== disshot: play music 1 for j=1 to 14 if mshot(j).nmap=1 and mshot(j).flghide=false show sprite mshot(j).numspr inc yyy,1 if yyy>475 yyy=yshot for k=1 to 14 mshot(k).flgtemp=false next k endif if mshot(j).flgtemp=false sprite mshot(j).numspr,j*40+kx+19,yyy,6 endif endif next j return rem ================================================= disripp: play music 1 for k=1 to 10 for j=1 to 14 if ripp1(k,j).nmap<>0 and ripp1(k,j).flghide=false sprite ripp1(k,j).numspr,ripp1(k,j).posx,ripp1(k,j).posy,4 show sprite ripp1(k,j).numspr endif if ripp2(k,j).nmap<>0 and ripp2(k,j).flghide=false sprite ripp2(k,j).numspr,ripp2(k,j).posx,ripp2(k,j).posy,4 show sprite ripp2(k,j).numspr endif if ripp3(k,j).nmap<>0 and ripp3(k,j).flghide=false sprite ripp3(k,j).numspr,ripp3(k,j).posx,ripp3(k,j).posy,4 show sprite ripp3(k,j).numspr endif if ripp4(k,j).nmap<>0 and ripp4(k,j).flghide=false sprite ripp4(k,j).numspr,ripp4(k,j).posx,ripp4(k,j).posy,4 show sprite ripp4(k,j).numspr endif next j next k return rem ============================================= dise14: gosub calctimer for k=0 to lvl-1 lk=k+1 for j=1 to 14 if lk=1 and map01(1,j).nmap=1 mshot(j).flghide=map01(lk,j).flghide if mshot(j).flghide=true sprite mshot(j).numspr,0,0,6 hide sprite mshot(j).numspr endif yshot=lk*40+kkk xshot=j*40+kx endif if map01(lk,j).nmap=1 if map01(lk,j).flghide=false sprite map01(lk,j).numspr,j*40+kx,lk*40+kkk,2 show sprite map01(lk,j).numspr kend=lk*40+kkk endif endif next j next k return rem ============================================= calctimer: if flgtimer=false comtimer=timer()+750 flgtimer=true inc kkk,3 if kkk mod 4=0 kx=0 ky=kkk endif if kkk mod 4=1 kx=-40 ky=kkk endif if kkk mod 4=2 kx=40 ky=kkk endif endif comt=timer() if comt>=comtimer then flgtimer=false return rem rem =======================================cylon rem cylon: sprite 1,mousex(),430,1 show sprite 1 if mousex()>600 sprite 1,600,430,1 endif if mouseclick() if sk<1 then sk=435 skx1=mousex()+8 skx2=mousex()+26 play sound 3 endif dec sk,10 sprite 10,skx1,sk,3 show sprite 10 // move sprite 10,17 sprite 11,skx2,sk,3 show sprite 11 // move sprite 11,17 return rem ======================================= collision: num1=sprite collision(10,0) num2=sprite collision(11,0) if num1>1000 and num1<2000 or num2>1000 and num2<2000 if num1=num2 num=num1 sk=0 gosub collision01 else if num1<>0 num=num1 sk=0 gosub collision01 endif // else if num2<>0 num=num2 sk=0 gosub collision01 endif // endif endif endif return rem ============================================= collision01: for k=1 to lvl for j=1 to 14 if num=map01(k,j).numspr aa=map01(k,j).posx bb=map01(k,j).posy sprite map01(k,j).numspr,0,0,2 hide sprite map01(k,j).numspr map01(k,j).flghide=true paste sprite 5,j*40+kx,k*40+kkk play sound 4 inc score,100 // show sprite 5 endif next j next k return rem =========================================== collisionripp: nrip1=sprite collision(10,0) nrip2=sprite collision(11,0) if nrip1>3000 and nrip1<4000 or nrip2>3000 and nrip2<4000 if nrip1<>0 sk=0 nrip=nrip1 gosub collisionrip01 endif if nrip2<>0 sk=0 nrip=nrip2 gosub collisionrip01 endif endif return rem ====================================== collisionrip01: aa=0 bb=0 for k=1 to 10 for j=1 to 14 if nrip=ripp1(k,j).numspr sprite ripp1(k,j).numspr,0,0,4 hide sprite ripp1(k,j).numspr ripp1(k,j).flghide=true endif if nrip=ripp2(k,j).numspr sprite ripp2(k,j).numspr,0,0,4 hide sprite ripp2(k,j).numspr ripp2(k,j).flghide=true endif if nrip=ripp3(k,j).numspr sprite ripp3(k,j).numspr,0,0,4 hide sprite ripp3(k,j).numspr ripp3(k,j).flghide=true endif if nrip=ripp4(k,j).numspr sprite ripp4(k,j).numspr,0,0,4 hide sprite ripp4(k,j).numspr ripp4(k,j).flghide=true endif next j next k return rem =========================================== collisionshot: for j=1 to 14 if mshot(j).numspr<>0 nsh=sprite collision(mshot(j).numspr,0) if nsh>3000 and nsh<4000 sprite mshot(j).numspr,0,0,6 hide sprite mshot(j).numspr mshot(j).flgtemp=true endif endif if nsh=1 hide sprite 1 paste sprite 5,mousex(),450 play sound 2 dec vie,1 endif next j return rem ============================================ endgamelevel: if kend>350 playgame=false vie=v yscore=score score=0 s100$="Space Invader win Cylon base" flg3600=false flg8400=false flg14400=false flg21600=false gosub defvar gosub restoremap gosub restoreripp gosub restoreshot level=1 lvl=3 flgend=true cls endif if vie=0 or vie<0 s100$="Space Invader win Cylon base" playgame=false vie=v yscore=score score=0 flg3600=false flg8400=false flg14400=false flg21600=false gosub defvar gosub restoremap gosub restoreripp gosub restoreshot level=1 lvl=3 flgend=true cls endif if score=3600 and flg3600=false flg3600=true playgame=false level=2 lvl=4 vie=vie+10 s99$="Level 2 Score 3600 "+"Life "+str$(vie) gosub resgrup endif if score=8400 and flg8400=false flg8400=true vie=vie+15 s99$="Level 3 Score 8400 "+"Life "+str$(vie) playgame=false level=3 lvl=5 gosub resgrup endif if score=14400 and flg14400=false flg14400=true vie=vie+20 s99$="Level 4 Score 14400 "+"Life "+str$(vie) playgame=false level=4 lvl=6 gosub resgrup endif if score=21600 and flg21600=false bonus=0 flg21600=true s100$="Cylon base win Space Invader" playgame=false level=1 lvl=3 yscore=score score=0 flg3600=false flg8400=false flg14400=false flg21600=false gosub resgrup flgend=true vie=v endif return rem ============================= resgrup: gosub defvar gosub restoremap gosub restoreripp gosub restoreshot return rem ======================== restoremap: for k=1 to 7 for j=1 to 14 map01(k,j).flghide=false if map01(k,j).nmap=1 sprite map01(k,j).numspr,0,0,2 hide sprite map01(k,j).numspr endif next j next k return rem ======================== restoreripp: for k=1 to 10 for j=1 to 14 ripp1(k,j).flghide=0 ripp2(k,j).flghide=0 ripp3(k,j).flghide=0 ripp4(k,j).flghide=0 next j next k return rem =============================== restoreshot: for k=1 to 14 mshot(k).flghide=false mshot(k).flgtemp=false next k return rem |