luigi jam by Anonymous Coder4th Mar 2009 5:01
|
---|
Summary application game luigi jam-cheese 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: luigi02 Rem Created: Thursday, February 26, 2009 rem autor vitaluciano@hotmail.fr Rem ***** Main Source File ***** rem sync on sync rate 20 set display mode 800,600,32 set dir "media" // set image colorkey 0,0,0 // backdrop on // color backdrop rgb(128,0,0) randomize timer() rem type _piespr posx as integer posy as integer numimg as integer flghide as integer endtype global dim piespr(18,20) as _piespr type _gamevie posx as integer posy as integer flgvie as integer endtype global dim bonus(25) as integer global dim gamevie(2,5) as _gamevie global false=0 global true=-1 global giu=0 global su=-1 global comt# global ct global dim flg_monta(4) as integer global xx as integer global yy as integer // global dim map$(18,20) global dim flgmonta(3) global dim flglevely(4) global dim comlevely(4) global dim flglevelx(3) global dirx as integer global mr as integer global score as integer global dim flgdwn(3) as integer global flgup as integer global dim mstry(4) as integer global dim mstrx(4,2) as integer global dim mxx(25) as integer global dim flgmstr(25) as integer global upsize as integer global oldscore as integer global comzy as integer global zy as integer global comzx as integer global dim combig(3) as integer global comvi as integer global flg1 as integer global flg2 as integer global dim flg3(3) as integer rem gosub flglvlxyandvar rem intiliose variables gosub inmap gosub ldimg rem rem =====================main loop================= rem do //rgb(128,0,0) cls rgb(128,128,255) // show sprite 35 // color backdrop rgb(128,0,0) if spacekey() gosub flglvlxyandvar rem intiliose variables gosub inmap endif loop music 1 gosub displaymap gosub monster if flg2=false then gosub luigimove if flg2=true stop music 1 stop sound 3 endif // gosub luigimove gosub collisionmonster gosub crtlcheese sync loop end rem rem ====================mappa mymap: data 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3 data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3 data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3 data 1,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,3 data 1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,3 data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3 data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3 data 1,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,3 data 1,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3 data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3 data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3 data 1,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,3 data 1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,3 data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3 data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3 data 1,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,3 data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4 rem rem ====================load image rem ldimg: load music "M3.mid",1 load sound "start.wav",2 load sound "die.wav",3 load sound "chomp.wav",4 load image "img002.png",1 load image "img003.png",2 load image "img004.png",3 load image "img005.png",4 load image "luigi.png",5 load image "luigiDead.png",6 load image "luigiWalk1.png",7,0 load image "luigiWalk2.png",9,0 load image "luigiWalk3.png",11,0 load image "Cheese.png",14,0 load image "mont01.jpg",31,0 load image "mont01.jpg",32,0 load image "mont01.jpg",33,0 load image "ciel1p.png",35,0 load image "BlueDrop.png",50,0 load image "GreenDrop.png",51,0 load image "Ahriman.png",70,0 load image "RedDrop.png",52,0 load image "Floateye.png",71,0 load image "Zombie.png",100,0 load image "BigMalboro.png",101,0 load image "MadOscar.png",102,0 load image "Star.png",500,0 rem ======def sprite gosub spr return rem rem ===============sprite rem spr: sprite 500,0,0,500 hide sprite 500 set sprite 500,1,1 sprite 100,0,0,100 hide sprite 100 set sprite 100,1,1 sprite 101,0,0,101 hide sprite 101 set sprite 101,1,1 sprite 102,0,0,102 hide sprite 102 set sprite 102,1,1 sprite 35,0,0,35 set sprite 35,1,1 size sprite 35,800,600 hide sprite 35 sprite 1,0,0,5 hide sprite 1 set sprite 1,1,1 sprite 2,0,0,6 hide sprite 2 set sprite 2,1,1 sprite 3,0,0,7 hide sprite 3 set sprite 3,1,1 clone sprite 3,4 mirror sprite 4 sprite 5,0,0,9 hide sprite 5 set sprite 4,1,1 clone sprite 5,6 mirror sprite 6 sprite 7,0,0,11 hide sprite 7 set sprite 7,1,1 clone sprite 7,8 mirror sprite 8 sprite 14,0,0,14 hide sprite 14 set sprite 14,1,1 for k=50 to 52 rem =====================monster sprite k,0,0,k hide sprite k set sprite k,1,1 next k clone sprite 50,53 clone sprite 50,54 sprite 70,0,0,70 hide sprite 70 set sprite 70,1,1 sprite 71,0,0,71 hide sprite 71 set sprite 71,1,1 clone sprite 70,72 mirror sprite 72 clone sprite 71,73 mirror sprite 73 clone sprite 50,80 clone sprite 51,81 clone sprite 52,82 clone sprite 70,83 clone sprite 71,84 return rem rem ===========================routines rem Rem ***** Included Source File ***** inmap: restore mymap for k=1 to 18 for j=1 to 20 read a piespr(k,j).posx=j piespr(k,j).posy=k piespr(k,j).numimg=a piespr(k,j).flghide=false // set cursor j*10,k*10 // print piespr(k,j).numimg next j next k return rem rem ========================display map rem displaymap: for k=1 to 18 for j=1 to 20 //and score mod 56 = 0// if piespr(k,j).numimg=0 then paste sprite 500,j*30,k*30 if piespr(k,j).numimg=1 then paste image 1,j*30,k*30 if piespr(k,j).numimg=2 then paste image 2,j*30,k*30 if piespr(k,j).numimg=3 then paste image 3,j*30,k*30 if piespr(k,j).numimg=4 then paste image 4,j*30,k*30 if piespr(k,j).numimg=5 and piespr(k,j).flghide=false paste sprite 14,j*30,k*30 endif if piespr(k,j).numimg=1 or piespr(k,j).numimg=2 or piespr(k,j).numimg=3 or piespr(k,j).numimg=4 if score mod 56 = 0 then paste sprite 500,j*30,k*30 endif next j next k rem // if score=14 then paste sprite 100,30*2,30*4 // if combig(1)=0 then paste sprite 100,comzx*30,zy // if combig(2)=0 then paste sprite 101,comzx*30,zy // if combig(3)=0 then paste sprite 102,comzx*30,zy rem for k=1 to 2 for j=1 to 5 if gamevie(k,j).flgvie=false paste sprite 1,gamevie(k,j).posx*30,gamevie(k,j).posy*30 endif next j next k rem // if flgmonta(1)=true if comlevely(1)>=flglevely(2) and flgmonta(1)=true paste image 31,flglevelx(2)-30,comlevely(1) endif if comlevely(2)>=flglevely(3) and flgmonta(2)=true paste image 32,flglevelx(1),comlevely(2) endif if comlevely(3)>=flglevely(4) and flgmonta(3)=true paste image 33,flglevelx(2)-30,comlevely(3) endif if flg2=true set text size 50 text 630,505,"g a m e" text 630,540,"o v e r" set text size 25 endif rem // text 670,10,str$(yy)+" "+str$(ny+30)+" "+str$(nyy+30)+" "+str$(nyyy+30) // text 670,20,str$(xx)+" "+str$(mxx(15))+" "+str$(mxx(16))+" "+str$(mxx(17)) // text 700,30,str$(comlevely(1)) // text 700,40,str$(yy) // text 700,50,str$(comlevely(2)) // text 700,60,str$(score) // text 700,70,str$(oldscore) tsize=30 set text size 40 text 640,tsize*2,"LUIGI" text 640,tsize*3,"jam-cheese" set text size 25 text 640,tsize*6,"upkey: jump " text 640,tsize*7,"leftkey: move " text 640,tsize*8,"rightkey: move " text 640,tsize*9,"downkey: go up/down" text 640,tsize*10,"spacekey: reset game" set text size 40 text 640,tsize*13,"SCORE" text 640,tsize*14,str$(score*100) set text size 25 text screen width()/2,575,"by:vitaluciano@hotmail.fr" return rem rem ========================levely initvariables rem play sound 2 flglvlxyandvar: ct=rnd(3333)+1 flg2=false upsize=60 oldscore=-1 score=0 flglevely(1)=540 flglevely(2)=420 flglevely(3)=300 flglevely(4)=180 comlevely(1)=540 comlevely(2)=420 comlevely(3)=300 comlevely(4)=180 flglevelx(1)=60 flglevelx(2)=600-30 for k=1 to 3 flgmonta(k)=false flgdwn(k)=false combig(k)=true next k xx=flglevelx(1) yy=flglevely(1)-30 dirx=1 mr=false flgup=false for k=1 to 2 for j=1 to 5 gamevie(k,j).posx=j+20 gamevie(k,j).posy=k+16 gamevie(k,j).flgvie=false next j next k gamevie(1,1).flgvie=true mstry(1)=flglevely(1)-30 mstry(2)=flglevely(2)-30 mstry(3)=flglevely(3)-30 mstry(4)=flglevely(4)-30 mstrx(1,1)=120 mstrx(1,2)=420 mstrx(2,1)=120 mstrx(2,2)=420 mstrx(3,1)=120 mstrx(3,2)=420 mstrx(4,1)=120 mstrx(4,2)=420 mxx(1)=120 mxx(2)=420 mxx(3)=120 mxx(4)=420 mxx(5)=220 mxx(6)=120 mxx(7)=200 mxx(8)=300 mxx(9)=420 mxx(10)=120 mxx(11)=420 mxx(12)=300 mxx(13)=190 mxx(14)=360 mxx(15)=360 mxx(16)=150 mxx(17)=350 return rem rem ========================luigi move rem luigimove: if upkey() comyy=yy-upsize flgup=true else flgup=false endif if downkey() if xx>flglevelx(2)-60 and yy>=flglevely(2)-30 gosub monta1 else if xx<flglevelx(1)+60 and yy>=flglevely(3)-30 gosub monta2 else if xx>flglevelx(2)-60 and yy>=flglevely(4)-30 gosub monta3 endif endif endif endif if rightkey() inc dirx,1 inc xx,2 mr=false endif if leftkey() inc dirx,1 dec xx,2 mr=true endif if dirx>3 then dirx=1 if xx<=flglevelx(1) then xx=flglevelx(1) if xx>=flglevelx(2) then xx=flglevelx(2) if mr=false select dirx case 1 if flgup =true paste sprite 3,xx,comyy else paste sprite 3,xx,yy endif endcase case 2 if flgup =true paste sprite 5,xx,comyy else paste sprite 5,xx,yy endif endcase case 3 if flgup =true paste sprite 7,xx,comyy else paste sprite 7,xx,yy endif endcase endselect endif if mr=true select dirx case 1 if flgup =true paste sprite 4,xx,comyy else paste sprite 4,xx,yy endif endcase case 2 if flgup =true paste sprite 6,xx,comyy else paste sprite 6,xx,yy endif endcase case 3 if flgup =true paste sprite 8,xx,comyy else paste sprite 8,xx,yy endif endcase endselect endif return rem rem ========================control chesse rem crtlcheese: for k=1 to 18 for j=1 to 20 if piespr(k,j).numimg=5 and (piespr(k,j).posx*30)=xx and (piespr(k,j).posy*30)=yy and piespr(k,j).flghide=false and flgup=false piespr(k,j).flghide=true inc score,1 play sound 4 endif next j next k rem if flglevely(1)-30=yy and score=14 paste image 31,flglevelx(2)-30,comlevely(1),1 flgmonta(1)=true endif if flglevely(2)-30=yy and score=28 paste image 32,flglevelx(1),comlevely(2),1 flgmonta(2)=true endif if flglevely(3)-30=yy and score=42 paste image 33,flglevelx(2)-30,comlevely(3),1 flgmonta(3)=true endif rem if score mod 56 = 0 if score>0 for j=1 to 4 gamevie(1,j).flgvie=false next j for k=1 to 18 for j=1 to 20 piespr(k,j).flghide=false next j next k endif endif return rem rem ========================control key down rem monta1: if comlevely(1)>flglevely(2) and flgmonta(1)=true and flgdwn(1)=giu dec yy,1 dec comlevely(1),1 endif // if comlevely(1)>flglevely(2) and flgmonta(1)=true and flgdwn(1)=su if flgmonta(1)=true and flgdwn(1)=su inc yy,1 inc comlevely(1),1 endif if comlevely(1)=flglevely(2) flgdwn(1)=su sleep 500 endif if comlevely(1)=flglevely(1) flgdwn(1)=giu sleep 500 endif return rem rem ==========================dwn key monta2 rem monta2: if comlevely(2)>flglevely(3) and flgmonta(2)=true and flgdwn(2)=giu dec yy,1 dec comlevely(2),1 endif // if comlevely(1)>flglevely(2) and flgmonta(1)=true and flgdwn(1)=su if flgmonta(2)=true and flgdwn(2)=su inc yy,1 inc comlevely(2),1 endif if comlevely(2)=flglevely(3) flgdwn(2)=su sleep 500 endif if comlevely(2)=flglevely(2) flgdwn(2)=giu sleep 500 endif return rem rem ==========================dwn key monta3 rem monta3: if comlevely(3)>flglevely(4) and flgmonta(3)=true and flgdwn(3)=giu dec yy,1 dec comlevely(3),1 endif // if comlevely(1)>flglevely(2) and flgmonta(1)=true and flgdwn(1)=su if flgmonta(3)=true and flgdwn(3)=su inc yy,1 inc comlevely(3),1 endif if comlevely(3)=flglevely(4) flgdwn(3)=su sleep 500 endif if comlevely(3)=flglevely(3) flgdwn(3)=giu sleep 500 endif return rem rem ==========================display monsters rem monster: gosub monster1 gosub monster2 gosub monster3 gosub monster4 gosub zombie return monster1: if mxx(1)>mstrx(1,2) then flgmstr(1)=true if mxx(1)<mstrx(1,1) then flgmstr(1)=false if mxx(2)>mstrx(1,2) then flgmstr(2)=true if mxx(2)<mstrx(1,1) then flgmstr(2)=false if flgmstr(1)=false inc mxx(1),rnd(3)+1 paste sprite 50,mxx(1),mstry(1) endif if flgmstr(1)=true dec mxx(1),rnd(4)+1 paste sprite 50,mxx(1),mstry(1) endif if flgmstr(2)=false inc mxx(2),rnd(3)+1 paste sprite 53,mxx(2),mstry(1) endif if flgmstr(2)=true dec mxx(2),rnd(4)+1 paste sprite 53,mxx(2),mstry(1) endif return monster2: if mxx(3)>mstrx(2,2) then flgmstr(3)=true if mxx(3)<mstrx(2,1) then flgmstr(3)=false if mxx(4)>mstrx(2,2) then flgmstr(4)=true if mxx(4)<mstrx(2,1) then flgmstr(4)=false if mxx(5)>mstrx(2,2) then flgmstr(5)=true if mxx(5)<mstrx(2,1) then flgmstr(5)=false if flgmstr(3)=false inc mxx(3),rnd(2)+1 paste sprite 54,mxx(3),mstry(2) endif if flgmstr(3)=true dec mxx(3),rnd(3)+1 paste sprite 54,mxx(3),mstry(2) endif if flgmstr(4)=false inc mxx(4),rnd(2)+1 paste sprite 51,mxx(4),mstry(2) endif if flgmstr(4)=true dec mxx(4),rnd(3)+1 paste sprite 51,mxx(4),mstry(2) endif if flgmstr(5)=false inc mxx(5),rnd(2)+1 paste sprite 52,mxx(5),mstry(2) endif if flgmstr(5)=true dec mxx(5),rnd(3)+1 paste sprite 52,mxx(5),mstry(2) endif return monster3: if mxx(6)>mstrx(3,2) then flgmstr(6)=true if mxx(6)<mstrx(3,1) then flgmstr(6)=false if mxx(7)>mstrx(3,2) then flgmstr(7)=true if mxx(7)<mstrx(3,1) then flgmstr(7)=false if mxx(8)>mstrx(3,2) then flgmstr(8)=true if mxx(8)<mstrx(3,1) then flgmstr(8)=false if mxx(9)>mstrx(3,2) then flgmstr(9)=true if mxx(9)<mstrx(3,1) then flgmstr(9)=false if flgmstr(6)=false inc mxx(6),rnd(2)+1 paste sprite 70,mxx(6),mstry(3) endif if flgmstr(6)=true dec mxx(6),rnd(3)+1 paste sprite 70,mxx(6),mstry(3) endif rem if flgmstr(7)=false inc mxx(7),rnd(2)+1 paste sprite 73,mxx(7),mstry(3) endif if flgmstr(7)=true dec mxx(7),rnd(3)+1 paste sprite 73,mxx(7),mstry(3) endif rem if flgmstr(8)=false inc mxx(8),rnd(2)+1 paste sprite 71,mxx(8),mstry(3) endif if flgmstr(8)=true dec mxx(8),rnd(3)+1 paste sprite 71,mxx(8),mstry(3) endif rem if flgmstr(9)=false inc mxx(9),rnd(2)+1 paste sprite 72,mxx(9),mstry(3) endif if flgmstr(9)=true dec mxx(9),rnd(3)+1 paste sprite 72,mxx(9),mstry(3) endif return monster4: if mxx(10)>mstrx(4,2) then flgmstr(10)=true if mxx(10)<mstrx(4,1) then flgmstr(10)=false if mxx(11)>mstrx(4,2) then flgmstr(11)=true if mxx(11)<mstrx(4,1) then flgmstr(11)=false if mxx(12)>mstrx(4,2) then flgmstr(12)=true if mxx(12)<mstrx(4,1) then flgmstr(12)=false if mxx(13)>mstrx(4,2) then flgmstr(13)=true if mxx(13)<mstrx(4,1) then flgmstr(13)=false if mxx(14)>mstrx(4,2) then flgmstr(14)=true if mxx(14)<mstrx(4,1) then flgmstr(14)=false rem if flgmstr(10)=false inc mxx(10),rnd(2)+1 paste sprite 80,mxx(10),mstry(4) endif if flgmstr(10)=true dec mxx(10),rnd(3)+1 paste sprite 80,mxx(10),mstry(4) endif rem if flgmstr(11)=false inc mxx(11),rnd(2)+1 paste sprite 81,mxx(11),mstry(4) endif if flgmstr(11)=true dec mxx(11),rnd(3)+1 paste sprite 81,mxx(11),mstry(4) endif rem if flgmstr(12)=false inc mxx(12),rnd(2)+1 paste sprite 82,mxx(12),mstry(4) endif if flgmstr(12)=true dec mxx(12),rnd(3)+1 paste sprite 82,mxx(12),mstry(4) endif rem if flgmstr(13)=false inc mxx(13),rnd(2)+1 paste sprite 83,mxx(13),mstry(4) endif if flgmstr(13)=true dec mxx(13),rnd(3)+1 paste sprite 83,mxx(13),mstry(4) endif rem if flgmstr(14)=false inc mxx(14),rnd(2)+1 paste sprite 84,mxx(14),mstry(4) endif if flgmstr(14)=true dec mxx(14),rnd(3)+1 paste sprite 84,mxx(14),mstry(4) endif return zombie: comt#=timer() if comt# mod 1111/2 = 0 then inc comtt,rnd(64)+1 if comtt mod 2 = 0 then stry=mstry(1)-30 if comtt mod 3 = 0 then stry=mstry(4)-30 if comtt mod 4 = 0 then stry=mstry(3)-30 if comtt mod 5 = 0 then stry=mstry(2)-30 if mxx(15)>mstrx(1,2)+120 then flgmstr(15)=true if mxx(15)<mstrx(1,1) then flgmstr(15)=false if flgmstr(15)=false inc mxx(15),rnd(2)+1 paste sprite 101,mxx(15),stry endif if flgmstr(15)=true dec mxx(15),rnd(3)+1 paste sprite 101,mxx(15),stry endif if comt# mod 3333/5 = 0 then inc comttt,rnd(64)+1 if comttt mod 2 = 0 then stryy=mstry(2)-30 if comttt mod 3 = 0 then stryy=mstry(3)-30 if comttt mod 4 = 0 then stryy=mstry(1)-30 if comttt mod 5 = 0 then stryy=mstry(4)-30 if mxx(16)>mstrx(1,2)+120 then flgmstr(16)=true if mxx(16)<mstrx(1,1) then flgmstr(16)=false if flgmstr(16)=false inc mxx(16),rnd(2)+1 paste sprite 100,mxx(16), stryy endif if flgmstr(16)=true dec mxx(16),rnd(3)+1 paste sprite 100,mxx(16), stryy endif if comt# mod 3333/7 = 0 then inc comtttt,rnd(64)+1 if comtttt mod 2 = 0 then stryyy=mstry(2)-30 if comtttt mod 3 = 0 then stryyy=mstry(1)-30 if comtttt mod 4 = 0 then stryyy=mstry(3)-30 if comtttt mod 5 = 0 then stryyy=mstry(4)-30 if mxx(17)>mstrx(1,2)+120 then flgmstr(17)=true if mxx(17)<mstrx(1,1) then flgmstr(17)=false if flgmstr(17)=false inc mxx(17),rnd(2)+1 paste sprite 102,mxx(17),stryyy endif if flgmstr(17)=true dec mxx(17),rnd(3)+1 paste sprite 102,mxx(17),stryyy endif return rem rem ==========================collision monsters rem collisionmonster: flgcoll=false for k=1 to 2 if mxx(k)=xx and mstry(1)=yy and flgup=false then flgcoll=true next k for k=3 to 5 if mxx(k)=xx and mstry(2)=yy and flgup=false then flgcoll=true next k for k=6 to 9 if mxx(k)=xx and mstry(3)=yy and flgup=false then flgcoll=true next k for k=10 to 14 if mxx(k)=xx and mstry(4)=yy and flgup=false then flgcoll=true next k ny=stry+30 nyy=stryy+30 nyyy=stryyy+30 if mxx(15)=xx and flgup=false and ny=yy then flgcoll=true if mxx(16)=xx and flgup=false and nyy=yy then flgcoll=true if mxx(17)=xx and flgup=false and nyyy=yy then flgcoll=true if flgcoll=true play sound 3 flg1=false flg2=false for k=1 to 2 for j=1 to 5 if flg1=false if gamevie(k,j).flgvie=false gamevie(k,j).flgvie=true flg1=true endif endif next j next k if flg1=false rem todo game over for k=3 to 8 hide sprite k next k text 630,540,"game over" flg2=true endif endif return rem rem ============================= rem |