home *** CD-ROM | disk | FTP | other *** search
Wrap
AMOS Source Code | 1991-06-13 | 11.3 KB | 588 lines
Default Make Mask Priority On Reserve Zone 6 Dim NAST(3),TREE(5,2) Global LIVES,SCORE,FON,MUS,NAST(),DIFF,TREE(),TERMINATE,UPD Proc INIT Procedure INIT Flash Off Curs Off Hide On Double Buffer Bob Update Off Cls 0 Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Pen 5 : Paper 0 Locate 0,0 Centre "Please note" : Print Centre "If you have access to any young trees" : Print Centre "And it's still before the end of Nov.91" : Print Centre "Please consider donating a sapling" : Print Centre "In order to help improve the environment" : Print Centre "Send donations to" : Print Centre "Thirsk school,Topcliffe road,Thirsk" : Print Centre "North Yorkshire,England" : Print Centre "We're running a tree " : Print Centre "distribution project" : Print Centre "To improve the environment" : Print Centre "Please enjoy this game" : Print Centre "Produced using AMOS" : Print Fade 15 To -1 Wait 600 End Proc 1 Proc TITLE[0] Goto 2 NULEV: Proc TITLE[1] Procedure TITLE[N] If N=1 Then Goto SKIP Autoback 2 Fade 10 Wait 150 Music 1 For T=1 To 4 Sprite T+7,(T*65)+120,245,1 Channel T-1 To Sprite T+7 Amal T-1,"A0,(1,5)(7,5);L:M0,-40,"+Str$((T*5)+10)+";M0,40,"+Str$((T*5)+20)+";JL" Amal On T-1 Next T 3 Cls 0 Paste Bob 135,150,44 For X=0 To 1 For Y=0 To 5 Paste Bob X*280,Y*32,Rnd(1)+24 Next Y Next X Locate 0,10 Centre "Save The Trees" Locate 0,12 Centre "By Mark Potter" Print : Centre "press fire to play" Print : Centre "T=toggle Music/Fx" Print : Centre "C=Controls" Fade 15 To -1 Wait 255 For T=0 To 15 Colour(T+16),Colour(T) Next T MUS=1 While Fire(1)=0 : Paste Bob Rnd(200)+50,Rnd(50),Rnd(1)+24 I$=Upper$(Inkey$) If I$="T" MUS=1-MUS Locate 0,16 If MUS=1 Centre "MUSIC" Else Centre "SOUND" End If End If If I$="C" Cls 0 Locate 0,0 Print "controls:" Print "up/down/left/right=obvious" Print "fire while stationary=raise/lower scoop" Print "fire while moving=fire missile" Print "(if scoop is up)" Print "P=Pause game-anykey restarts" Wait Key Goto 3 End If Wend Amal Off Sprite Off Cls 0 LIVES=3 : SCORE=0 : FON=0 : TERMINATE=0 : UPD=0 : DIFF=0 SKIP: Bob 0,160,50,1 Channel 0 To Bob 0 A$="LRA=0;LR1=0;S:P;LR0=J1;IR0=1JU;IR0=8JR;IR0=2JD;IR0=4JL;IR0=16JC;JS" A$=A$+";C:P;IR1=0JB;LR1=0;LA=A-6;M0,0,5;JS;B:LR1=6;LA=A+6;M0,0,5;JS" A$=A$+";U:IY<1JS;LRB=1;A0,(1+R1,3)(2+R1,3);W:P;LR0=J1;M0,-2,1;IY<1JT;IR0<>1JM;JW;M:IR0<16JT;LRA=1;JW" A$=A$+";R:IX>319JS;LRB=2;A0,(5+R1,3)(6+R1,3);X:P;LR0=J1;M2,0,1;IX>319JT;IR0<>8JN;JX;N:IR0<16JT;LRA=1;JX" A$=A$+";D:IY>199JS;LRB=3;A0,(3+R1,3)(4+R1,3);Y:P;LR0=J1;M0,2,1;IY>199JT;IR0<>2JO;JY;O:IR0<16JT;LRA=1;JY" A$=A$+";L:IX<1JS;LRB=4;A0,($8000+R1+5,3)($8000+R1+6,3);V:P;LR0=J1;M-2,0,1;IX<1JT;IR0<>4JQ;JV;Q:IR0<16JT;LRA=1;JV" A$=A$+";T:LR2=A;A1,(R2,1);JS" Amal 0,A$ Amal On 0 For T=1 To 6 Bob T,Rnd(200)+60,Rnd(60)+90,22 Set Zone T,X Bob(T)-5,Y Bob(T)-5 To X Bob(T)+5,Y Bob(T)+5 TREE(T-1,0)=X Bob(T) TREE(T-1,1)=Y Bob(T) TREE(T-1,2)=100 Channel T+5 To Bob T Amal T+5,"LR0=0:A1,(22,2000)(24,1000)(25,1000);M0,0,4000;LR0=1" Amal On T+5 Amreg(T+5,0)=0 Next T If MUS=0 Then Music Off Autoback 0 Amreg(25)=0 UPD=2 For T=0 To 3 NAST(T)=0 Next T End Proc 2 Do Bob Clear Proc CHECKFIRE Proc NAST Proc ROVER Proc HITNME Proc CUTDOWN Proc WHOOPS If UPD>0 Then Dec UPD : Pen 1 : Paper 0 : Locate 0,23 : Print LIVES;" ";SCORE;" " If TERMINATE=2 or LIVES=0 Then Bob Update On : Wait 50 : Bob Update Off : Proc GAMEOVER : Goto 1 If TERMINATE=1 Then Inc TERMINATE If Amreg(25)>0 Then Amreg(25)=Amreg(25)-1 For T=0 To 5 If TREE(T,2)>0 If Amreg(T+6,0)=1 Proc WONSCREEN : Goto NULEV End If End If Next T If Upper$(Inkey$)="P" Then Amal Freeze : Wait Key : Amal On Bob Draw Screen Swap Wait Vbl Loop Procedure CHECKFIRE If Amreg(0)=1 and Amreg(0,1)=6 If FON=0 FON=1 A=Amreg(1) If A=1 B=13 : V=-4 : H=0 End If If A=2 B=16 : V=0 : H=4 End If If A=3 B=14 : V=4 : H=0 End If If A=4 B=15 : V=0 : H=-4 End If Sprite 8,X Hard(X Bob(0)),Y Hard(Y Bob(0)),B Channel 1 To Sprite 8 Amal 1,"LR0=0;L:M"+Str$(H)+","+Str$(V)+",1;IX>450JM;IX<126JM;IY<48JM;IY>252JM;P;JL;M:LR0=1" Amal On 1 If MUS=0 Sam Raw %1111,Start(12),13086,10000 End If Else Amreg(0)=0 End If End If If FON=1 If Amreg(1,0)=1 FON=0 : Sprite Off 8 End If End If End Proc Procedure NAST Amreg(23)=X Bob(0) Amreg(24)=Y Bob(0) For T=0 To 3 If NAST(T)=-1 If Amreg(T+2,9)=1 NAST(T)=0 Bob T+10,-50,-50, End If End If Next T CCC=0 If DIFF>2 Then CCC=2 For T=CCC To 3 If NAST(T)=4 If Amreg(T+2,3)>0 A=Amreg(T+2,3) Y=0 If A=1 N=36 : Y=-10 End If If A=2 N=35 End If If A=3 N=37 End If If A=4 N=34 End If Bob T+8,X Bob(T+10),Y Bob(T+10)+Y,N Channel T To Bob T+8 Amal T,"" Amal On T Amreg(T,9)=1 NAST(T-2)=-1 End If End If If NAST(T)=5 If Amreg(T+2,3)>0 A=Amreg(T+2,3) If A=1 N=13 End If If A=2 N=16 End If If A=3 N=14 End If If A=4 N=15 End If Bob T+8,X Bob(T+10),Y Bob(T+10),N Channel T To Bob T+8 Amal T,"M0,0,1;IR0=1JU;IR0=2JR;IR0=3JD;IR0=4JL;U:A1,(13,1);M0,-250,100;JT;L:A1,(15,1);M-350,0,150;JT;D:A1,(14,1);M0,250,100;JT;R:A1,(16,1);M350,0,150;T:LX=-10;LY=-10;LR9=1;LA=33" Amal On T Amreg(T,0)=A NAST(T-2)=-1 End If End If If NAST(T)>0 If Amreg(T+2,2)<6 Amreg(T+2,0)=TREE(Amreg(T+2,2),0) Amreg(T+2,1)=TREE(Amreg(T+2,2),1) Else Amreg(T+2,0)=X Bob(0) Amreg(T+2,1)=Y Bob(0) End If End If If NAST(T)=0 If DIFF>0 NAST(T)=Rnd(DIFF) Else NAST(T)=0 End If If DIFF>2 If DIFF>3 NAST(T)=Rnd(DIFF-3)+3 Else NAST(T)=3 End If End If Inc NAST(T) N=5 If NAST(T)=1 A=26 A$="A0,(26,5)(27,5);S:IX<R0JR;A:IX>R0JL;B:IY>R1JU;C:IY<R1JD;P;JS" A$=A$+";U:M0,-1,3;JC;D:M0,1,3;JS;L:M-1,0,3;JB;R:M1,0,3;JA" N=5 End If If NAST(T)=2 A=29 A$="S:P;IX<R0JR;IX>R0JL;IY>R1JU;IY<R1JD;JS" A$=A$+";U:A1,(32,1);M0,-1,1;JS;D:A1,(31,1);M0,1,1;JS;L:A1,(29,1);M-1,0,1;JS;R:A1,(30,1);M1,0,1;JS" N=6 End If If NAST(T)=3 A=38 A$="A0,(38,2)(39,3);S:IX<R0JR;A:IX>R0JL;B:IY>R1JU;C:IY<R1JD;P;JS" A$=A$+";U:M0,-1,1;JC;D:M0,1,1;JS;L:M-1,0,1;JB;R:M1,0,1;JA" N=6 End If If NAST(T)=4 A=33 A$="A1,(33,1);S:IX=RXJF;IY=RYJG;N:IX<R0JR;A:IX>R0JL;B:IY>R1JU;C:IY<R1JD;P;JS" A$=A$+";U:M0,-1,1;JC;D:M0,1,1;JS;L:M-1,0,1;JB;R:M1,0,1;JA" A$=A$+";F:IY>RYJE;LR3=3;JN;E:LR3=1;JN;G:IX>RXJH;LR3=4;JN;H:LR3=2;JN" Bob T+8,-10,-10,13 N=10 End If If NAST(T)=5 A=40 A$="LR4=0;S:P;LR3=0;LR4=R4-1;IX=RXJF;IY=RYJA;N:IX<R0JR;IX>R0JL;IY>R1JU;IY<R1JD;JS" A$=A$+";U:A1,(43,1);M0,-1,2;JS;D:A1,(42,1);M0,1,2;JS;L:A1,(40,1);M-1,0,2;JS;R:A1,(41,1);M1,0,2;JS" A$=A$+";F:IR4>0JN;IR3>0JN;LR4=100;IY>RYJB;LR3=3;JN;B:LR3=1;JN;A:IR4>0JN;IR3>0JN;LR4=100;IX>RXJC;LR3=2;JN;C:LR3=4;JN" Bob T+8,-10,-10,13 N=8 End If If Rnd(1)=0 X=Rnd(320) : Y=Rnd(1)*200 Else X=Rnd(1)*320 : Y=Rnd(200) End If Bob T+10,X,Y,A Channel T+2 To Bob T+10 Amal T+2,A$ Amal On T+2 Amreg(T+2,2)=Rnd(N) End If Next T End Proc Procedure ROVER If Bob Col(0,10 To 13)=-1 For T=10 To 13 If Col(T)=-1 If NAST(T-10)>0 or(NAST(T-10)=-1 and T<12 and DIFF>2) If NAST(T-10)=1 Amal T-8,"LR9=0;A0,(28,1);M0,0,150;LR9=1" Amal On T-8 Inc SCORE UPD=2 If MUS=0 Shoot End If NAST(T-10)=-1 Else D=1 If Amreg(25)>0 D=0 End If If Amreg(0,1)=0 If Amreg(1)=1 and Y Bob(T)<Y Bob(0) D=0 End If If Amreg(1)=2 and X Bob(T)>X Bob(0) D=0 End If If Amreg(1)=3 and Y Bob(T)>Y Bob(0) D=0 End If If Amreg(1)=4 and X Bob(T)<X Bob(0) D=0 End If End If If NAST(T-10)=-1 and T<12 and DIFF>2 If NAST(T-8)=4 Goto SKP2 End If End If Amal T-8,"LR9=0;A1,(17,2)(18,2)(19,2)(20,2);M0,0,8;LR9=1" Amal On T-8 If NAST(T-10)=-1 and T<12 and DIFF>2 If NAST(T-8)=5 Bob T,-10,-10, End If End If SCORE=SCORE+NAST(T-10) NAST(T-10)=-1 If MUS=0 Boom End If UPD=2 SKP2: If D=1 D=0 Proc DEATH End If End If End If End If Next T End If End Proc Procedure HITNME If Spritebob Col(8,10 To 13)=-1 For T=10 To 13 If Col(T)=-1 and NAST(T-10)>0 Amal 1,"A1,(17,2)(18,2)(19,2)(20,2);M0,0,8;LR0=1" Amal On 1 If MUS=0 Boom End If If NAST(T-10)>0 SCORE=SCORE+NAST(T-10) UPD=2 NAST(T-10)=0 End If End If Next T End If End Proc Procedure CUTDOWN For T=10 To 13 If NAST(T-10)>0 Z=Zone(X Bob(T),Y Bob(T)) If Z>0 If TREE(Z-1,2)>0 Dec TREE(Z-1,2) If TREE(Z-1,2)<1 Bob Z,,,23 If MUS=0 Boom End If Amal Off Z+5 Reset Zone Z TERMINATE=1 For R=0 To 5 If TREE(R,2)<1 For S=0 To 5 If TREE(S,2)>0 TREE(R,0)=TREE(S,0) TREE(R,1)=TREE(S,1) TERMINATE=0 End If Next S End If Next R End If End If End If End If Next T End Proc Procedure WHOOPS Z=Zone(X Bob(0),Y Bob(0)) If Z>0 If Amreg(0,1)=0 If MUS=0 Boom End If Amal Off Z+5 Reset Zone Z Bob Z,,,23 TREE(Z-1,2)=0 TERMINATE=1 For R=0 To 5 If TREE(R,2)<1 For S=0 To 5 If TREE(S,2)>0 TREE(R,0)=TREE(S,0) TREE(R,1)=TREE(S,1) TERMINATE=0 End If Next S End If Next R Else If Amreg(25)<1 Proc DEATH End If End If End If End Proc Procedure DEATH Dec LIVES UPD=2 If MUS=0 Then Boom A$="LRZ=200;A1,(17,3)(18,3)(19,3)(20,3)(21,3);M0,0,100;LRZ=100;LRA=0;LR1=0;S:P;LR0=J1;IR0=1JU;IR0=8JR;IR0=2JD;IR0=4JL;IR0=16JC;JS" A$=A$+";C:P;IR1=0JB;LR1=0;LA=A-6;M0,0,5;JS;B:LR1=6;LA=A+6;M0,0,5;JS" A$=A$+";U:IY<1JS;LRB=1;A0,(1+R1,3)(2+R1,3);W:P;LR0=J1;M0,-2,1;IY<1JT;IR0<>1JM;JW;M:IR0<16JT;LRA=1;JW" A$=A$+";R:IX>319JS;LRB=2;A0,(5+R1,3)(6+R1,3);X:P;LR0=J1;M2,0,1;IX>319JT;IR0<>8JN;JX;N:IR0<16JT;LRA=1;JX" A$=A$+";D:IY>199JS;LRB=3;A0,(3+R1,3)(4+R1,3);Y:P;LR0=J1;M0,2,1;IY>199JT;IR0<>2JO;JY;O:IR0<16JT;LRA=1;JY" A$=A$+";L:IX<1JS;LRB=4;A0,($8000+R1+5,3)($8000+R1+6,3);V:P;LR0=J1;M-2,0,1;IX<1JT;IR0<>4JQ;JV;Q:IR0<16JT;LRA=1;JV" A$=A$+";T:LR2=A;A1,(R2,1);JS" Amal 0,A$ Amal On 0 End Proc Procedure WONSCREEN If MUS=0 Then Bell Autoback 2 Pen 5 For T=10 To 13 : Bob Off T : NAST(T-10)=0 : Next T Cls 0 Locate 0,0 Centre "Well Done,Level "+Str$(DIFF+1)+" Solved" Paste Bob 135,150,44 N=0 For T=0 To 5 If TREE(T,2)>0 Then Inc N Next T Wait 50 Locate 0,5 Pen 4 Print "Tree Bonus: "+Str$(N)+" X 100 =";Str$(N*100) SCORE=SCORE+(N*100) Wait 50 For T=1 To 100 Paste Bob Rnd(320),Rnd(200),22 Next T Bob Off Sprite Off FON=0 Bob Draw Inc DIFF UPD=2 Cls 0 Screen Swap Bob Clear Bob Draw Cls 0 Autoback 0 Bob Draw If DIFF>4 Then TERMINATE=1 End Proc Procedure GAMEOVER Bob Off Sprite Off Bob Clear Cls 0 Screen Swap Bob Clear Cls 0 Pen 4 Locate 0,0 Centre "Game Over" Print A$="Your Score:"+Str$(SCORE) Centre A$ Print Print Pen 5 If DIFF=0 Print "Total failure,the trees are all " Print "destroyed." Print "causing the atmosphere to deteriorate" Print "until all life suffocates." Print "The sun's unshielded rays cause the" Print " seas to boil." Print "All life is wiped out,the earth is" Print "reduced to a ball of lifeless rock." Paste Bob 135,160,48 End If If DIFF=1 Print "Disaster" Print "The destruction of the trees" Print "leads to the destruction of the " Print "atmosphere." Print "The human race becomes extinct" Print "life is reduced to single celled" Print " organisms." Print "it takes millions of years to restore" Print "the balance" Paste Bob 135,160,47 End If If DIFF=2 Print "Pretty bad" Print "The destruction of the trees" Print " and industrial pollution" Print "desecrates 1/3 of the worlds" Print " land surface." Print "9/10 of the human race die" Paste Bob 135,160,45 End If If DIFF=3 or DIFF=4 Print "bad" Print "The destruction of many trees creates" Print "holes in the ozone layer." Print "The full unshielded power of the sun" Print " causes " Print "The poles to melt,causing flooding" Print "And putting most of the planet's" Print "surface beneath the sea" Print "1/3 of the human race die" Paste Bob 135,160,46 End If If DIFF=5 Pen 4 Print "well done" Print "Due to your actions,global deforestation " Print "has" Print "been put to an end.The environment is " Print "safe" Print "and the human race is saved from it's" Print "ignorance and greed." Print "(apart from captain chainsaw and his " Print "men)" Paste Bob 135,160,44 End If Screen Swap While Fire(1)=0 : Wend End Proc