` Grid Bugs LBFN Started 7/5/07 randomize timer() sync on : sync rate 45 hide mouse dim p1(10) : dim spray(30,10) : dim bug(24,20) : dim btu(12) : dim bd(30) dim grid_coordx(8) : dim grid_coordy(7) score=0 level=1 lives=3 bd_master=2500 max_bugs_aat=5 : ` max bugs that can be on the screen at one time (includes larvae) gosub INIT_VARS gosub SCREEN_SETUP gosub MAKE_IMGS gosub TITLE_SCREEN Grid(70,70,10,9,48,48,RGB(255,255,255),RGB(150,70,0)) get image 999,700,150,799,400 ` MAIN LOOP ************************************************************************************* do if (timer()>bd_master_delay or bugs_on_screen=0) and bugs_on_screen<max_bugs_aat and missed_bugs+bugs+bugs_on_screen<total_bugs and bd(3)=0 then gosub NEW_BUGS if bd(3)>0 then gosub MOVE_BUG_DISPENSER gosub MOVE_BUGS gosub USER_INPUT ` gosub DEBUG gosub SPRAY_EM gosub DP_STUFF if missed_bugs+bugs=total_bugs and bugs_on_screen=0 and spray_on=0 and bd(3)=0 then gosub FINISH_LEVEL sync loop ` MAIN LOOP ************************************************************************************* show mouse ` screen back to normal set display mode scr_wid,scr_hgt,scr_dpt sync end ` SUBROUTINES MOVE_BUGS: for i=1 to 24 if bug(i,3)>0 and bug(i,3)<3 if timer()>bug(i,6) bug(i,3)=bug(i,3)+1 if bug(i,3)=2 then bug(i,4)=18 : bug(i,2)=bug(i,2)-4 : bug(i,6)=timer()+2500 if bug(i,3)=3 bug(i,2)=bug(i,2)-4 if rnd(100)>50 if rnd(100)>50 bug(i,4)=20 : ` current pat bug(i,7)=20 : ` min pat bug(i,8)=22 : ` max pat bug(i,9)=8 : ` dir = left bug(i,10)=0-(rnd(2)+1) : ` x add bug(i,11)=0 : ` y add else bug(i,4)=23 bug(i,7)=23 bug(i,8)=25 bug(i,9)=4 : ` dir = right bug(i,10)=rnd(2)+1 bug(i,11)=0 endif else if rnd(100)>50 bug(i,4)=26 : ` current pat bug(i,7)=26 : ` min pat bug(i,8)=28 : ` max pat bug(i,9)=1 : ` dir = up bug(i,10)=0 : ` x add bug(i,11)=0-(rnd(2)+1) : ` y add else bug(i,4)=29 : ` current pat bug(i,7)=29 : ` min pat bug(i,8)=31 : ` max pat bug(i,9)=2 : ` dir = down bug(i,10)=0 : ` x add bug(i,11)=rnd(2)+1 : ` y add endif endif endif endif else if bug(i,3)=3 bug(i,1)=bug(i,1)+bug(i,10) bug(i,2)=bug(i,2)+bug(i,11) ` animate bug if timer()>bug(i,5) bug(i,4)=bug(i,4)+1 if bug(i,4)>bug(i,8) then bug(i,4)=bug(i,7) bug(i,5)=timer()+75 endif ` check to see if the bug is on the grid if bug(i,1)<41 or bug(i,1)>550 or bug(i,2)<41 or bug(i,2)>502 then delete sprite 200+i : bug(i,3)=0 : inc missed_bugs,1 : dec bugs_on_screen,1 endif if bug(i,3)=4 ` bug frying if timer()>bug(i,5) bug(i,4)=bug(i,4)+1 if bug(i,4)>bug(i,8) inc bugs,1 dec bugs_on_screen,1 bug(i,3)=0 delete sprite i+200 endif bug(i,5)=timer()+75 endif endif endif if bug(i,3)>0 then sprite 200+i,bug(i,1),bug(i,2),bug(i,4) next i return MOVE_BUG_DISPENSER: x=bd((bd(3)*2)+4) : y=bd((bd(3)*2)+5) if abs(bd(1)-x)>bd(26) if bd(1)<x bd(1)=bd(1)+bd(26) else bd(1)=bd(1)-bd(26) endif else bd(1)=x endif if abs(bd(2)-y)>bd(27) if bd(2)<y bd(2)=bd(2)+bd(27) else bd(2)=bd(2)-bd(27) endif else bd(2)=y endif if bd(1)=x and bd(2)=y and bug(btu(bd(3)),3)=0 and bd(3)<bd(28)-1 ` we are at the way point bd(4)=15 bd(5)=timer()+150 x=x+41 : y=y+107 sprite btu(bd(3))+200,x,y,17 bug(btu(bd(3)),3)=1 : ` status=small larvae bug(btu(bd(3)),4)=17 bug(btu(bd(3)),6)=2000+timer() bug(btu(bd(3)),1)=x-9 bug(btu(bd(3)),2)=y-5 bd(3)=bd(3)+1 bd(5)=timer()+150 : ` keep img 15 for a split second inc bugs_on_screen,1 bd_master_delay=1000+timer()+rnd(bd_master) endif if bd(3)=bd(28)-1 and bd(1)=x and bd(2)=y then bd(3)=0 if timer()>bd(5) then bd(4)=16 if bd(3)>0 then sprite 300,bd(1),bd(2),bd(4) return NEW_BUGS: ` find bugs to use for i=1 to 4 : btu(i)=0 : next i b=0 for i=1 to 24 if bug(i,3)=0 then inc b,1 : btu(b)=i : if b=8 or (bugs+missed_bugs+bugs_on_screen+b>=total_bugs) or b+bugs_on_screen>=max_bugs_aat then exit next i if b=0 then return : ` no bugs available to use ` set initial spot for bug dispenser d=rnd(2) select d case 0 ` left side bd(1)=-100 bd(2)=rnd((scr_hgt-200)+50) endcase case 1 ` top bd(1)=rnd(400)+50 bd(2)=-170 endcase case 2 ` bottom bd(1)=rnd(400)+50 bd(2)=scr_hgt+150 endcase endselect bd(3)=1 : ` status=moving from initial x,y to first way point bd(4)=16 ` make way points repeat okay=0 for i=0 to b-1 bd(6+(i*2))=grid_coordx(rnd(7)+1)-41 bd(7+(i*2))=grid_coordy(rnd(6)+1)-107 next i ` make sure no pairs are exactly the same c=0 for i=0 to b-1 if c<>i if (bd(6+(c*2))=bd(6+(i*2))) and (bd(7+(c*2))=bd(7+(i*2))) then okay=1 endif next i until okay=0 bd((b*2)+6)=bd(1) : bd((b*2)+7)=bd(2) bd(28)=b+2 return SPRAY_EM: if spacekey()=1 and (spray_on=0 or (spray_on=1 and timer()>spray_timer)) select p1(7) case 1 ` facing up for i=1 to 30 spray(i,1)=p1(3)+rnd(25) : ` x spray(i,2)=p1(4)-rnd(5) : ` y spray(i,3)=1 : ` status = active spray(i,4)=rnd(150)+150 : ` life spray(i,5)=rnd(2) : ` x add if rnd(100)>50 then spray(i,5)=(spray(i,5)*-1) spray(i,6)=0-(rnd(2)+4) : ` y subtract sprite 100+i,spray(i,1),spray(i,2),rnd(4)+10 p1(9)=0 : p1(10)=-22 next i spray_on=1 spray_timer=timer()+250 endcase case 2 ` facing down for i=1 to 30 spray(i,1)=p1(3)+rnd(15) : ` x spray(i,2)=p1(4)+rnd(5)+46 : ` y spray(i,3)=2 : ` status = active spray(i,4)=rnd(150)+150 : ` life spray(i,5)=rnd(2) : ` x add if rnd(100)>50 then spray(i,5)=(spray(i,5)*-1) spray(i,6)=(rnd(2)+4) : ` y subtract sprite 100+i,spray(i,1),spray(i,2),rnd(4)+10 p1(9)=0 : p1(10)=20 next i spray_on=1 spray_timer=timer()+250 endcase case 4 ` facing right for i=1 to 30 spray(i,1)=p1(3)+rnd(15)+48 : ` x spray(i,2)=p1(4)+rnd(9)+3 : ` y spray(i,3)=4 : ` status = active spray(i,4)=rnd(150)+150 : ` life spray(i,5)=rnd(2)+4 : ` x add spray(i,6)=rnd(2) : ` y add if rnd(100)>50 then spray(i,6)=(spray(i,6)*-1) sprite 100+i,spray(i,1),spray(i,2),rnd(4)+10 p1(9)=22 : p1(10)=0 next i spray_on=1 spray_timer=timer()+250 endcase case 8 ` facing left for i=1 to 30 spray(i,1)=p1(3)-rnd(15) : ` x spray(i,2)=p1(4)+rnd(9)+3 : ` y spray(i,3)=8 : ` status = active spray(i,4)=rnd(150)+150 : ` life spray(i,5)=0-(rnd(2)+4) : ` x add spray(i,6)=rnd(2) : ` y add if rnd(100)>50 then spray(i,6)=(spray(i,6)*-1) sprite 100+i,spray(i,1),spray(i,2),rnd(4)+10 p1(9)=-22 p1(10)=0 next i spray_on=1 spray_timer=timer()+250 endcase endselect endif if spray_on=1 ` spray is active, keep moving spray for i=1 to 30 if spray(i,3)>0 spray(i,1)=spray(i,1)+spray(i,5) spray(i,2)=spray(i,2)+spray(i,6) spray(i,4)=spray(i,4)-(abs(spray(i,5))+abs(spray(i,6))) if spray(i,4)<=0 spray(i,3)=0 : delete sprite 100+i spray_on=0 for q=1 to 30 if spray(q,3)>0 then spray_on=1 next q if spray_on=0 then p1(9)=0 : p1(10)=0 : total_spray_time=timer()-spray_timer : `set cursor 0,0 : print "total_spray_time= ";total_spray_time else ` spray particle is still alive sprite 100+i,spray(i,1),spray(i,2),rnd(4)+10 for q=1 to 24 ` check for coinc w/bugs if bug(q,3)>0 and bug(q,3)<>4 if spray(i,1)>=bug(q,1) and spray(i,1)<=(bug(q,1)+sprite width(q+200)) if spray(i,2)>=bug(q,2) and spray(i,2)<=(bug(q,2)+sprite height(q+200)) bug(q,3)=4 : ` frying select bug(q,9) case 1 ` up bug(q,4)=500 : ` current pat bug(q,7)=500 : ` min pat bug(q,8)=505 : ` max pat endcase case 2 ` down bug(q,4)=506 : ` current pat bug(q,7)=506 : ` min pat bug(q,8)=511 : ` max pat endcase case 4 ` right bug(q,4)=512 : ` current pat bug(q,7)=512 : ` min pat bug(q,8)=517 : ` max pat endcase case 8 ` left bug(q,4)=518 : ` current pat bug(q,7)=518 : ` min pat bug(q,8)=523 : ` max pat endcase endselect bug(i,5)=timer()+75 score=score+100 endif endif endif next q if timer()>spray_timer then p1(9)=0 : p1(10)=0 endif endif next i endif return DP_STUFF: paste image 998,650,433 ink rgb(0,255,0),0 text 690,445,str$(score) paste image 997,650,490 ink rgb(255,255,255),0 text 711,500,str$(missed_bugs) return FINISH_LEVEL: copy bitmap 0,1 set current bitmap 0 cls hide sprite 1 hide sprite 2 ink rgb(128,64,255),0 box 40,40,759,560 ink rgb(180,0,180),0 box 60,60,739,540 ink rgb(255,255,255),0 set text size 48 sync center text 400,70,"LEVEL EVALUATION" ink rgb(128,64,255),0 box 60,130,739,140 ink rgb(128,0,255),0 text 80,150,"Your rank is:" set text size 48 ink rgb(156,130,48),0 ` give ranking advance=0 : bonus=0 if missed_bugs=0 ` terminator advance=1 bonus=5000 a$="X Terminator!" endif if missed_bugs>0 and missed_bugs<=3 ` master tech a$="Master Bug Destroyer" advance=1 bonus=2000 endif if missed_bugs>3 and missed_bugs<=5 ` okay average a$="Close, but no cigar." endif if missed_bugs>5 and missed_bugs<=10 ` below average - need to improve a$="The bugs win this round." endif if missed_bugs>10 ` lousy a$="Do better or you'll lose your job!" endif text 80,200,a$ if bonus>0 then text 80,240,"Bonus "+str$(bonus)+" points!" : score=score+bonus if advance=1 if level<10 text 80,280,"Shuss is warming up his next batch." inc level,1 ` good place to shorten times, increase bugs, etc. bd_master=bd_master-250 : if bd_master<250 then bd_master=250 inc total_bugs,5 if max_bugs_aat<16 then inc max_bugs_aat,1 else cls set text size 18 sync text 80,280,"Congratulations!! You have defeated Shuss' bug army!!!" paste image 1005,400,100 sync text 80,400,"Press any key to quit." wait key end ` squashed bug w/white flag , score endif else text 80,360,"You must do better to" text 80,400," take on Shuss' next batch." endif set text size 26 sync ink rgb(26,141,204),0 text 80,480,"Press any key to continue." text 80,510,"Press ESC to quit." wait key cls copy bitmap 1,0 set current bitmap 0 gosub INIT_VARS gosub DP_STUFF show sprite 1 show sprite 2 return USER_INPUT: if leftkey()=1 select p1(7) case 1 ` facing up if p1(1)>68 p1(1)=p1(1)-10 p1(3)=p1(3)-10 else ` switch to facing right p1(1)=0 p1(2)=501 p1(3)=24 p1(4)=501 p1(5)=1 : ` img 1 p1(6)=2 : ` img 2 p1(7)=4 endif endcase case 2 ` facing down if p1(1)<551 p1(1)=p1(1)+10 p1(3)=p1(3)+10 else ` switch to facing left p1(1)=560+47 p1(2)=66 p1(3)=560 p1(4)=66 p1(7)=8 : ` facing left p1(5)=3 : ` img 1 p1(6)=4 : ` img 2 endif endcase case 4 ` facing right if p1(2)>65 p1(2)=p1(2)-10 p1(4)=p1(4)-10 else ` change to facing down p1(1)=73 p1(2)=2 p1(3)=73 p1(4)=2+23 p1(7)=2 : ` facing down p1(5)=5 : ` img 1 p1(6)=6 : ` img 2 endif endcase case 8 ` facing left if p1(2)<506 p1(2)=p1(2)+10 p1(4)=p1(4)+10 else ` switch to facing up p1(1)=549 p1(2)=512+45 p1(3)=549 p1(4)=512 p1(5)=7 : ` img 1 p1(6)=8 : ` img 2 p1(7)=1 endif endcase endselect endif if rightkey()=1 select p1(7) case 1 ` facing up if p1(1)<550 p1(1)=p1(1)+6 p1(3)=p1(3)+6 else ` switch to facing left p1(1)=560+47 p1(2)=505 p1(3)=560 p1(4)=505 p1(7)=8 : ` facing left p1(5)=3 : ` img 1 p1(6)=4 : ` img 2 endif endcase case 2 ` facing down if p1(1)>72 p1(1)=p1(1)-6 p1(3)=p1(3)-6 else ` change to facing right p1(1)=0 p1(2)=62 p1(3)=24 p1(4)=62 p1(5)=1 : ` img 1 p1(6)=2 : ` img 2 p1(7)=4 endif endcase case 4 ` facing right if p1(2)<502 p1(2)=p1(2)+6 p1(4)=p1(4)+6 else ` change to facing up p1(1)=69 p1(2)=512+45 p1(3)=69 p1(4)=512 p1(5)=7 : ` img 1 p1(6)=8 : ` img 2 p1(7)=1 endif endcase case 8 ` facing left if p1(2)>65 p1(2)=p1(2)-6 p1(4)=p1(4)-6 else ` switch to facing down p1(1)=550 p1(2)=2 p1(3)=550 p1(4)=2+23 p1(5)=5 : ` img 1 p1(6)=6 : ` img 2 p1(7)=2 endif endcase endselect endif sprite 1,p1(1)+p1(9),p1(2)+p1(10),p1(5) sprite 2,p1(3),p1(4),p1(6) return INIT_VARS: p1(1)=0 : ` x1 p1(2)=200 : ` y1 p1(3)=24 : ` x2 p1(4)=200 : ` y2 p1(5)=1 : ` img 1 p1(6)=2 : ` img 2 p1(7)=4 : ` direction 1=facing up 2=facing down 4=facing right 8=facing left p1(8)=0 : ` plunger level 0=full out 4=pushed in all the way p1(9)=0 : ` plunger x add p1(10)=0 : ` plunger y add for i=1 to 10 spray(i,3)=0 next i spray_on=0 for i=1 to 24 for g=1 to 10 bug(i,g)=0 next g next i bugs=0 : ` includes active bugs + destroyed bugs total_bugs=49 : ` # of bugs for the entire level bugs_on_screen=0 for i=1 to 30 : bd(i)=0 : next i bd(26)=5 : bd(27)=4 missed_bugs=0 restore grid_coord for i=1 to 8 read grid_coordx(i) if i<8 then grid_coordy(i)=grid_coordx(i) next i bd_master_delay=1000+timer()+rnd(bd_master) return DEBUG: paste image 999,700,150 ink rgb(255,0,255),0 text 700,150,"bd(3))= "+str$(bd(3)) text 700,170,"bugs on scr= "+str$(bugs_on_screen) text 700,190,"bd(28)="+str$(bd(28)) return Function Grid(XPosition,YPosition,Columns,Rows,XSize,YSize,CellColourF,CellColourB) Ink CellColourB,0 Box XPosition,YPosition,XPosition+(Columns*(XSize+1)),YPosition+(Rows*(YSize+1)) Ink CellColourF,0 For N=0 To Rows Line XPosition, N*(YSize+1)+YPosition, Columns*(XSize+1)+XPosition, N*(YSize+1)+YPosition Next N For N=0 To Columns Line N*(XSize+1)+XPosition, YPosition, N*(XSize+1)+XPosition, Rows*(YSize+1)+YPosition Next N Endfunction SCREEN_SETUP: scr_wid=screen width() scr_hgt=screen height() scr_dpt=screen depth() set display mode 800,600,16 sync create bitmap 1,800,600 set current bitmap 0 return MAKE_IMGS: ` P1 a bug sprayer set current bitmap 1 cls x=0 : y=0 ink rgb(255,255,128),0 line x,y+3,x,y+9 ink rgb(128,64,0),0 line x+1,y+3,x+1,y+9 line x+2,y+6,x+23,y+6 ink rgb(0,225,0),0 box x+24,y+2,x+68,y+3 box x+24,y+9,x+68,y+10 ink rgb(0,255,0),0 line x+24,y+6,x+68,y+6 line x+24,y+11,x+68,y+11 ink rgb(0,205,0),0 box x+24,y+4,x+68,y+5 box x+24,y+7,x+68,y+8 ink rgb(0,185,0),0 line x+24,y+6,x+68,y+6 ink rgb(185,0,0),0 cx=59 : cy=12 for i=2 to 3 circle cx,cy,i next i ink rgb(205,0,0),0 for i=4 to 5 circle cx,cy,i next i ink rgb(225,0,0),0 for i=6 to 7 circle cx,cy,i next i ink rgb(255,0,0),0 circle cx,cy,8 get image 1,0,0,23,16 get image 2,24,0,71,24 sprite 7,-100,-100,1 hide sprite 7 cls mirror sprite 7 paste sprite 7,0,0 sync sync get image 3,0,0,23,16 cls sprite 7,-100,-100,2 paste sprite 7,0,0 sync sync get image 4,0,0,47,24 cls ink rgb(255,255,128),0 line x+3,y+1,x+9,y+1 ink rgb(128,64,0),0 line x+3,y,x+9,y line x+6,y+2,x+6,y+23 ink rgb(0,255,0),0 line x+1,y+24,x+1,y+67 line x+11,y+24,x+11,y+67 ink rgb(0,225,0),0 box x+2,y+24,x+3,y+67 box x+9,y+24,x+10,y+67 ink rgb(0,205,0),0 box x+4,y+24,x+5,y+67 box x+7,y+24,x+8,y+67 ink rgb(0,185,0),0 line x+6,y+24,x+6,y+67 ink rgb(185,0,0),0 cx=11 : cy=58 for i=2 to 3 circle cx,cy,i next i ink rgb(205,0,0),0 for i=4 to 5 circle cx,cy,i next i ink rgb(225,0,0),0 for i=6 to 7 circle cx,cy,i next i ink rgb(255,0,0),0 circle cx,cy,8 get image 5,0,0,9,23 get image 6,0,24,24,69 cls sprite 6,-100,-100,6 flip sprite 6 paste sprite 6,0,0 get image 8,0,0,23,48 cls ink rgb(255,255,128),0 line x+3,y+22,x+9,y+22 ink rgb(128,64,0),0 line x+3,y+23,x+9,y+23 line x+6,y,x+6,y+23 get image 7,0,0,9,23 sync flip sprite 6 delete sprite 6 delete sprite 7 sync sync ` make particles for spray cls ink rgb(255,255,255),0 box 0,0,2,2 get image 10,0,0,2,2 cls ink rgb(180+rnd(40),180+rnd(40),180+rnd(40)),0 box 0,0,2,2 get image 11,0,0,2,2 cls ink rgb(140+rnd(40),140+rnd(40),140+rnd(40)),0 box 0,0,2,2 get image 12,0,0,2,2 cls ink rgb(100+rnd(40),100+rnd(40),100+rnd(40)),0 box 0,0,2,2 get image 13,0,0,2,2 cls ink rgb(60+rnd(40),60+rnd(40),60+rnd(40)),0 box 0,0,2,2 get image 14,0,0,2,2 ` make small larvae cls ink rgb(255,255,128),0 line 2,0,4,0 : line 11,0,14,0 dot 1,1 : line 5,1,10,1 line 0,2,0,5 : line 15,1,15,4 line 7,5,10,5 : dot 14,5 dot 1,6 : dot 6,6 : line 10,6,13,6 line 2,7,5,7 ink rgb(195,195,68),0 line 2,1,4,1 : line 11,1,14,1 box 1,2,14,4 line 1,5,6,5 : line 11,5,13,5 line 2,6,5,6 get image 17,0,0,16,8 ` make large larvae cls ink rgb(255,255,128),0 line 3,0,7,0 : line 17,0,21,0 dot 2,1 : line 8,1,9,1 : line 15,1,16,1 : dot 22,1 line 1,2,1,3 : line 10,2,14,2 : line 23,2,23,6 line 0,4,0,8 : line 22,7,22,8 line 11,8,15,8 dot 1,9 : dot 10,9 : line 16,9,21,9 dot 2,10 : dot 9,10 line 3,11,8,11 ink rgb(195,195,68),0 line 3,1,7,1 : line 17,1,21,1 line 2,2,9,2 : line 15,2,22,2 line 2,3,22,3 box 1,4,21,7 : line 22,4,22,6 line 1,8,10,8 : line 16,8,21,8 line 2,9,9,9 line 3,10,8,10 get image 18,0,0,24,12 ` bug facing left cls ink rgb(128,128,128),0 dot 9,0 : line 16,0,16,1 : dot 23,0 line 10,1,10,2 : line 11,2,11,6 line 17,2,17,6 : dot 22,1 line 21,2,21,6 line 11,15,11,19 : line 17,15,17,19 line 21,15,21,19 : line 10,19,10,20 dot 9,21 : line 16,20,16,22 dot 22,20 : dot 23,21 ink rgb(135,0,0),0 box 12,5,16,6 : box 18,5,20,6 dot 10,6 : line 22,6,23,6 line 9,15,10,15 : box 12,15,16,16 box 18,15,20,16 : line 22,15,23,15 ink rgb(215,0,0),0 line 10,7,24,7 : line 9,8,26,8 line 8,9,26,9 : line 10,12,26,12 line 8,13,26,13 : line 8,14,24,14 ink rgb(255,0,0),0 box 9,10,27,11 ink rgb(255,255,0),0 dot 7,9 : dot 8,8 : line 9,6,9,7 dot 7,11 : line 8,12,9,12 ink rgb(188,124,0),0 line 4,6,5,6 : line 2,7,7,7 line 2,13,7,13 : line 4,14,5,14 ink rgb(158,94,0),0 line 1,8,7,8 : line 0,9,3,9 : dot 6,9 line 0,11,6,11 : dot 8,11 line 1,12,3,12 : line 6,12,7,12 ink rgb(128,64,0),0 line 2,10,8,10 ink rgb(5,5,5),0 line 4,9,5,9 : line 4,12,5,12 get image 20,0,0,28,23 sync cls sprite 8,-100,-100,20 mirror sprite 8 paste sprite 8,0,0 sync sync get image 23,0,0,28,23 mirror sprite 8 delete sprite 8 ` anim bug cls ink rgb(128,128,128),0 dot 14,0 : line 7,1,8,1 : line 9,2,10,2 : dot 10,3 : line 11,4,11,6 line 15,1,15,2 : dot 16,3 : line 17,4,17,6 : line 21,1,21,6 line 11,15,11,20 : line 12,21,12,22 : line 17,15,17,19 line 18,20,18,22 : line 21,15,21,17 : line 22,17,22,18 line 23,19,23,20 : dot 24,21 ink rgb(135,0,0),0 box 12,5,16,6 : box 18,5,20,6 dot 10,6 : line 22,6,23,6 line 9,15,10,15 : box 12,15,16,16 box 18,15,20,16 : line 22,15,23,15 ink rgb(215,0,0),0 line 10,7,24,7 : line 9,8,26,8 line 8,9,26,9 : line 10,12,26,12 line 8,13,26,13 : line 8,14,24,14 ink rgb(255,0,0),0 box 9,10,27,11 ink rgb(255,255,0),0 dot 7,9 : dot 8,8 : line 9,6,9,7 dot 7,11 : line 8,12,9,12 ink rgb(188,124,0),0 line 4,6,5,6 : line 2,7,7,7 line 2,13,7,13 : line 4,14,5,14 ink rgb(158,94,0),0 line 1,8,7,8 : line 0,9,3,9 : dot 6,9 line 0,11,6,11 : dot 8,11 line 1,12,3,12 : line 6,12,7,12 ink rgb(128,64,0),0 line 2,10,8,10 ink rgb(5,5,5),0 line 4,9,5,9 : line 4,12,5,12 get image 21,0,0,28,23 sync cls sprite 9,-110,-100,21 mirror sprite 9 paste sprite 9,0,0 sync sync get image 24,0,0,28,23 mirror sprite 9 delete sprite 9 ` 2nd anim bug cls ink rgb(128,128,128),0 line 5,2,7,2 : line 8,3,10,3 : line 11,4,11,6 line 12,1,13,1 : line 14,2,15,2 : dot 16,3 : line 17,4,17,6 dot 18,0 : dot 19,1 : line 20,2,20,3 : line 21,4,21,6 line 11,15,11,17 : line 12,18,12,19 : line 13,20,14,20 : dot 15,21 line 17,15,17,17 : line 18,18,18,19 : line 19,20,20,20 : line 21,21,22,21 line 21,15,21,16 : dot 22,17 : line 23,18,24,18 : line 25,19,26,19 ink rgb(135,0,0),0 box 12,5,16,6 : box 18,5,20,6 dot 10,6 : line 22,6,23,6 line 9,15,10,15 : box 12,15,16,16 box 18,15,20,16 : line 22,15,23,15 ink rgb(215,0,0),0 line 10,7,24,7 : line 9,8,26,8 line 8,9,26,9 : line 10,12,26,12 line 8,13,26,13 : line 8,14,24,14 ink rgb(255,0,0),0 box 9,10,27,11 ink rgb(255,255,0),0 dot 7,9 : dot 8,8 : line 9,6,9,7 dot 7,11 : line 8,12,9,12 ink rgb(188,124,0),0 line 4,6,5,6 : line 2,7,7,7 line 2,13,7,13 : line 4,14,5,14 ink rgb(158,94,0),0 line 1,8,7,8 : line 0,9,3,9 : dot 6,9 line 0,11,6,11 : dot 8,11 line 1,12,3,12 : line 6,12,7,12 ink rgb(128,64,0),0 line 2,10,8,10 ink rgb(5,5,5),0 line 4,9,5,9 : line 4,12,5,12 get image 22,0,0,28,23 sync cls sprite 9,-100,-100,22 mirror sprite 9 paste sprite 9,0,0 sync sync get image 25,0,0,28,23 mirror sprite 9 delete sprite 9 ` bug facing up cls ink rgb(128,128,128),0 dot 0,15 : line 1,13,1,14 : line 2,12,3,12 : line 4,11,6,11 line 0,21,0,22 : line 1,19,1,20 : line 2,18,3,18 : line 4,17,6,17 line 2,25,2,26 : line 3,23,3,24 : dot 4,22 : line 5,21,6,21 line 15,11,17,11 : line 18,8,18,10 : line 19,5,19,7 line 15,17,17,17 : dot 18,16 : line 19,14,19,15 : line 20,12,20,13 line 15,21,17,21 : line 18,20,19,20 : dot 20,19 : dot 21,18 ink rgb(135,0,0),0 line 6,9,6,10 : box 5,12,6,16 : box 5,18,6,20 : line 6,22,6,23 dot 15,10 : box 15,12,16,16 : box 15,18,16,20 : line 15,22,15,23 ink rgb(215,0,0),0 line 7,8,7,24 : line 8,8,8,26 : line 9,10,9,26 line 12,8,12,26 : line 13,10,13,26 : line 14,10,14,24 ink rgb(255,0,0),0 box 10,9,11,27 ink rgb(255,255,0),0 line 9,8,9,9 : dot 10,7 : dot 12,7 : dot 13,8 : line 14,9,15,9 ink rgb(188,124,0),0 line 7,4,7,5 : line 8,2,8,7 : line 14,2,14,7 : line 15,4,15,5 ink rgb(158,94,0),0 line 9,1,9,3 : line 9,6,9,7 : line 10,0,10,6 : dot 10,8 line 12,0,12,3 : dot 12,6 : line 13,1,13,7 ink rgb(128,64,0),0 line 11,2,11,8 ink rgb(5,5,5),0 line 9,4,9,5 : line 12,4,12,5 get image 26,0,0,22,28 cls sprite 7,-100,-100,26 flip sprite 7 paste sprite 7,0,0 sync sync get image 29,0,0,22,28 cls flip sprite 7 delete sprite 7 sync sync ` bug facing up anim cls ink rgb(128,128,128),0 dot 0,12 : line 1,11,6,11 : line 0,18,1,18 : line 2,17,6,17 line 0,23,1,23 : line 2,22,4,22 : line 4,21,6,21 line 15,11,17,11 : line 18,10,19,10 : line 20,9,21,9 line 15,17,17,17 : line 19,15,21,15 : dot 18,16 line 15,21,19,21 : line 20,20,21,20 ink rgb(135,0,0),0 line 6,9,6,10 : box 5,12,6,16 : box 5,18,6,20 : line 6,22,6,23 dot 15,10 : box 15,12,16,16 : box 15,18,16,20 : line 15,22,15,23 ink rgb(215,0,0),0 line 7,8,7,24 : line 8,8,8,26 : line 9,10,9,26 line 12,8,12,26 : line 13,10,13,26 : line 14,10,14,24 ink rgb(255,0,0),0 box 10,9,11,27 ink rgb(255,255,0),0 line 9,8,9,9 : dot 10,7 : dot 12,7 : dot 13,8 : line 14,9,15,9 ink rgb(188,124,0),0 line 7,4,7,5 : line 8,2,8,7 : line 14,2,14,7 : line 15,4,15,5 ink rgb(158,94,0),0 line 9,1,9,3 : line 9,6,9,7 : line 10,0,10,6 : dot 10,8 line 12,0,12,3 : dot 12,6 : line 13,1,13,7 ink rgb(128,64,0),0 line 11,2,11,8 ink rgb(5,5,5),0 line 9,4,9,5 : line 12,4,12,5 get image 27,0,0,22,28 sync cls sprite 10,-100,-100,27 flip sprite 10 paste sprite 10,0,0 sync sync get image 30,0,0,22,28 cls flip sprite 10 delete sprite 10 sync sync ` 3rd anim - bug facing up cls ink rgb(128,128,128),0 line 2,5,2,7 : line 3,8,3,10 : line 4,11,6,11 line 1,12,1,13 : line 2,14,2,15 : dot 3,16 : line 4,17,6,17 dot 0,18 : dot 1,18 : line 2,20,3,20 : line 4,21,6,21 line 15,11,17,11 : line 18,12,19,12 : line 20,13,20,14 : dot 21,15 line 15,17,17,17 : line 18,18,19,18 : line 20,19,20,20 : line 21,21,21,22 line 15,21,16,21 : dot 17,22 : line 18,23,18,24 : line 19,25,19,26 ink rgb(135,0,0),0 line 6,9,6,10 : box 5,12,6,16 : box 5,18,6,20 : line 6,22,6,23 dot 15,10 : box 15,12,16,16 : box 15,18,16,20 : line 15,22,15,23 ink rgb(215,0,0),0 line 7,8,7,24 : line 8,8,8,26 : line 9,10,9,26 line 12,8,12,26 : line 13,10,13,26 : line 14,10,14,24 ink rgb(255,0,0),0 box 10,9,11,27 ink rgb(255,255,0),0 line 9,8,9,9 : dot 10,7 : dot 12,7 : dot 13,8 : line 14,9,15,9 ink rgb(188,124,0),0 line 7,4,7,5 : line 8,2,8,7 : line 14,2,14,7 : line 15,4,15,5 ink rgb(158,94,0),0 line 9,1,9,3 : line 9,6,9,7 : line 10,0,10,6 : dot 10,8 line 12,0,12,3 : dot 12,6 : line 13,1,13,7 ink rgb(128,64,0),0 line 11,2,11,8 ink rgb(5,5,5),0 line 9,4,9,5 : line 12,4,12,5 get image 28,0,0,22,28 sync sprite 7,-100,-100,28 flip sprite 7 cls sync paste sprite 7,0,0 sync sync get image 31,0,0,22,28 cls flip sprite 7 delete sprite 7 sync sync ` make bug dispenser cls r=180+rnd(40) : g=110+rnd(40) : b=35+rnd(40) ink rgb(r,g,b),1 for i=2 to 36 inc r,1 : inc g,1 : inc b,1 ink rgb(r,g,b),0 circle 49,49,i circle 50,50,i circle 51,50,i next i sprite 8,-360,-360,20 paste sprite 8,33,39 sync sync get image 15,11,0,91,92 paste image 15,100,0 get image 15,43,60,57,95 paste image 15,43,87 get image 15,40,70,60,79 paste image 15,40,105 paste image 15,129,87 get image 15,11,0,91,72+36+6 get image 16,100,0,191,97 delete sprite 8 ` light switch - down position cls ink rgb(255,255,128),0 box 0,0,50,99 ink rgb(225,225,108),0 box 3,3,49,97 ink rgb(255,255,128),0 box 18,33,31,66 line 48,3,48,96 line 3,96,48,96 ink rgb(96,96,96),0 box 19,34,29,50 ink rgb(225,225,108),0 line 49,3,49,97 line 2,97,49,97 line 20,52,29,52 line 29,52,29,63 line 20,63,29,63 line 21,54,27,54 line 27,54,27,61 get image 50,0,0,51,100 cls sprite 8,-100,-100,50 flip sprite 8 paste sprite 8,0,0 sync sync get image 51,0,0,51,100 flip sprite 8 delete sprite 8 sync ` White bug facing left cls ink rgb(255,255,255),0 dot 9,0 : line 16,0,16,1 : dot 23,0 line 10,1,10,2 : line 11,2,11,6 line 17,2,17,6 : dot 22,1 line 21,2,21,6 line 11,15,11,19 : line 17,15,17,19 line 21,15,21,19 : line 10,19,10,20 dot 9,21 : line 16,20,16,22 dot 22,20 : dot 23,21 box 12,5,16,6 : box 18,5,20,6 dot 10,6 : line 22,6,23,6 line 9,15,10,15 : box 12,15,16,16 box 18,15,20,16 : line 22,15,23,15 line 10,7,24,7 : line 9,8,26,8 line 8,9,26,9 : line 10,12,26,12 line 8,13,26,13 : line 8,14,24,14 box 9,10,27,11 dot 7,9 : dot 8,8 : line 9,6,9,7 dot 7,11 : line 8,12,9,12 line 4,6,5,6 : line 2,7,7,7 line 2,13,7,13 : line 4,14,5,14 line 1,8,7,8 : line 0,9,3,9 : dot 6,9 line 0,11,6,11 : dot 8,11 line 1,12,3,12 : line 6,12,7,12 line 2,10,8,10 line 4,9,5,9 : line 4,12,5,12 get image 518,0,0,28,23 sync cls sprite 11,-100,-100,518 mirror sprite 11 paste sprite 11,0,0 sync sync get image 512,0,0,28,23 mirror sprite 11 delete sprite 11 bow=5 for i=513 to 517 cls paste image 512,0,0 `box 29-bow,0,29,28 get image i,0,0,28-bow,23 inc bow,5 next i bow=5 for i=519 to 523 cls paste image 518,0,0 ` box 0,0,bow,28 get image i,bow,0,28,23 cls paste image i,bow,0 get image i,0,0,28,23 inc bow,5 next i ` white bug facing up cls ink rgb(255,255,255),0 dot 0,15 : line 1,13,1,14 : line 2,12,3,12 : line 4,11,6,11 line 0,21,0,22 : line 1,19,1,20 : line 2,18,3,18 : line 4,17,6,17 line 2,25,2,26 : line 3,23,3,24 : dot 4,22 : line 5,21,6,21 line 15,11,17,11 : line 18,8,18,10 : line 19,5,19,7 line 15,17,17,17 : dot 18,16 : line 19,14,19,15 : line 20,12,20,13 line 15,21,17,21 : line 18,20,19,20 : dot 20,19 : dot 21,18 line 6,9,6,10 : box 5,12,6,16 : box 5,18,6,20 : line 6,22,6,23 dot 15,10 : box 15,12,16,16 : box 15,18,16,20 : line 15,22,15,23 line 7,8,7,24 : line 8,8,8,26 : line 9,10,9,26 line 12,8,12,26 : line 13,10,13,26 : line 14,10,14,24 box 10,9,11,27 line 9,8,9,9 : dot 10,7 : dot 12,7 : dot 13,8 : line 14,9,15,9 line 7,4,7,5 : line 8,2,8,7 : line 14,2,14,7 : line 15,4,15,5 line 9,1,9,3 : line 9,6,9,7 : line 10,0,10,6 : dot 10,8 line 12,0,12,3 : dot 12,6 : line 13,1,13,7 line 11,2,11,8 line 9,4,9,5 : line 12,4,12,5 get image 500,0,0,22,28 cls sprite 7,-100,-100,500 flip sprite 7 paste sprite 7,0,0 sync sync get image 506,0,0,22,28 cls flip sprite 7 delete sprite 7 sync sync bow=5 for i=501 to 505 cls paste image 500,0,0 get image i,0,bow,22,28 inc bow,5 cls paste image i,0,bow get image i,0,0,22,28 next i bow=5 for i=507 to 511 cls paste image 506,0,0 ` box 0,28-bow,22,28 get image i,0,0,22,28-bow inc bow,5 next i cls ` We give up! ink rgb(255,255,255),0 box 14,0,35,25 ink rgb(0,128,255),0 line 19,1,19,5 : line 20,6,21,6 : line 22,4,22,5 : line 23,6,24,6 line 25,1,25,5 : line 27,3,27,5 : dot 28,2 : line 28,4,29,4 : line 28,6,29,6 line 16,10,16,14 : line 17,9,19,9 : dot 20,10 : line 17,15,19,15 line 19,13,20,13 : dot 20,14 : dot 23,10 : line 23,12,23,15 line 26,12,26,14 : dot 27,15 : line 28,12,28,14 : dot 31,11 line 30,12,30,14 : line 32,12,32,14 : dot 31,13 : line 31,15,32,15 line 18,18,18,22 : line 19,23,21,23 : line 22,18,22,22 : line 24,20,24,24 line 24,20,26,20 : line 25,22,26,22 : dot 27,21 : line 31,18,31,21 : dot 31,23 ink rgb(128,64,0),0 line 13,0,13,40 ink rgb(135,0,0),0 line 4,33,5,33 : dot 7,33 : dot 11,32 : line 10,33,12,33 : line 5,34,12,34 dot 17,32 : dot 19,32 : box 16,33,19,34 : line 21,34,22,34 : dot 25,32 line 24,33,27,33 : line 25,34,28,34 ink rgb(215,0,0),0 line 5,35,12,35 : line 6,36,12,36 : line 14,35,30,35 : line 14,36,32,36 dot 7,37 : dot 4,38 : dot 1,36 ink rgb(255,0,0),0 line 0,38,1,38 : dot 1,37 : line 3,35,4,35 : line 4,36,5,36 line 4,37,6,37 : dot 5,38 : box 9,37,10,38 : dot 11,38 : dot 12,37 line 14,37,33,37 : line 14,38,19,38 : line 21,38,25,38 : line 27,38,31,38 ink rgb(255,255,0),0 dot 0,33 : dot 1,34 : dot 2,35 : dot 2,38 : dot 3,37 ink rgb(128,128,128),0 dot 11,37 : line 12,38,12,39 : dot 14,40 : dot 20,38 : dot 21,39 : dot 22,40 dot 21,41 : dot 26,38 : dot 27,39 : line 28,40,29,40 get image 1005,0,0,36,42 set current bitmap 0 return TITLE_SCREEN: hide mouse set text size 48 set text to italic set text to bold sync for i=1 to 24 bug(i,3)=3 bug(i,1)=(i*19)+261 bug(i,2)=310 : if i>=13 then bug(i,1)=(i-11)*19+260 : bug(i,2)=326 bug(i,6)=timer()+50 if rnd(100)>50 if rnd(100)>50 bug(i,4)=20 : ` current pat bug(i,7)=20 : ` min pat bug(i,8)=22 : ` max pat bug(i,9)=8 : ` dir = left bug(i,10)=0-(rnd(3)+4) : ` x add bug(i,11)=0 : ` y add else bug(i,4)=23 bug(i,7)=23 bug(i,8)=25 bug(i,9)=4 : ` dir = right bug(i,10)=(rnd(3)+4) bug(i,11)=0 endif else if rnd(100)>50 bug(i,4)=26 : ` current pat bug(i,7)=26 : ` min pat bug(i,8)=28 : ` max pat bug(i,9)=1 : ` dir = up bug(i,10)=0 : ` x add bug(i,11)=0-(rnd(3)+4) : ` y add else bug(i,4)=29 : ` current pat bug(i,7)=29 : ` min pat bug(i,8)=31 : ` max pat bug(i,9)=2 : ` dir = down bug(i,10)=0 : ` x add bug(i,11)=(rnd(3)+4) : ` y add endif endif next i sprite 8,700,250,50 sync wait 1500 ink rgb(255,255,255),0 box 0,0,799,599 sprite 8,700,250,51 ink rgb(0,255,0),0 center text 400,300,"GRID BUGS" ` scramble bugs set text size 26 sync bug_off=0 repeat for i=1 to 24 if bug(i,3)=3 bug(i,1)=bug(i,1)+bug(i,10) : bug(i,2)=bug(i,2)+bug(i,11) sprite i+200,bug(i,1),bug(i,2),bug(i,4) if timer()>bug(i,6) ` animate bug(i,4)=bug(i,4)+1 if bug(i,4)>bug(i,8) then bug(i,4)=bug(i,7) bug(i,6)=timer()+50 endif if bug(i,1)<-30 or bug(i,1)>800 or bug(i,2)<-30 or bug(i,2)>600 delete sprite i+200 bug(i,3)=0 : inc bugs_off,1 : if bugs_off>=12 then text 720,550,"by LBFN" endif endif next i sync until bugs_off=24 text 50,400,"Press {ENTER} to view game info." text 50,440,"Press ESC to QUIT." text 50,480,"Press any other key to PLAY." delete sprite 8 do if returnkey()=1 then gosub GAME_INFO if returnkey()=0 and len(inkey$())>0 then exit sync loop cls ink rgb(0,91,215),0 box 644,0,799,599 set text font "Arial" set text to italic set text to bold set text size 48 sync ink rgb(255,255,0),0 text 648,0,"Grid" text 675,40,"Bugs" set text to normal set text size 12 sync text 740,95,"by LBFN" set text size 26 sync ink rgb(0,255,0),0 center text 721,413,"SCORE" get image 998,650,433,750,473 ink rgb(255,255,255),0 center text 721,470,"MISSED" get image 997,650,490,750,530 sync return GAME_INFO: set text size 48 sync cls ink rgb(0,128,255),0 center text 400,10,"GAME INFO" set text size 18 sync ink rgb(255,255,0),0 text 10,70,"The world's gone BUGGY!" text 10,95,"Your boss just put in a new grid and what happens? His neighbor, Mel I. Shuss, gets jealous because your boss's grid" text 10,120,"is bigger and better than his. So what does he do? He sends drone bug dispensers to fill your boss's grid with" text 10,145,"unsightly bugs. Fortunately for you, your boss owns a pest control business. The only problem is that he is a" text 10,170,"cheapskate and uses antiquated equipment. He's given you a sprayer to use to get rid of the bugs and a concentrated " text 10,195,"form of Deet that will surely be able to tackle whatever Shuss sends. Friends of the boss say that Shuss plans on" text 10,220,"sending 10 waves of bugs to infiltrate your boss' grid. You HAVE to get them. You can't have your boss, the" text 10,245,"exterminator, with bugs crawling around his grid can you? The boss plans to rate you after every wave of bugs comes." text 10,270,"Shuss will only send faster, smarter bugs, when you have defeated enough of the current wave of bugs." text 10,295,"Insiders say that the left and right arrow keys move the sprayer around the boss's grid. The sprayer is pumped" text 10,320,"when the {SPACEBAR} is pressed. You must get the bugs before they climb over the edge of the grid (and then head" text 10,345,"for the boss's house!)" text 10,395,"Some hints: The spray mist will travel quite a ways if you let it. The bugs Shuss is placing are still in the" text 10,420,"larvae stage when they arrive - spray them before they quickly grow into full size bugs and scatter off! Follow" text 10,445,"the bug dispenser as close as you can. Learn the controls well; they take a little getting used to." text 10,470,"Good luck, and spray on, bug destroyers, spray on!" text 10,520,"Press ESC to quit. Press any other key to play." return grid_coord: data 120,169,218,267,316,365,414,463