MODULE››; SPACE TRAVEL›; VER.1,4 (2010)››; WER. 0,8›; BY TOMASZ CIE$LEWICZ IN MARCH 1994›; ATARI MAGAZYN››; PROGRAM (GRA) DO WKLEPANIA››BYTE A,B,C,C1,D,E,E1,F,EE,OPE›,BX,BY,B1,B2,BC,BD,BC1,BB,WYB,WY2›,Q1,Q2,Q3,Q4,Q5›,ZYC,LEVEL›,P1,P2,P3,P4›,ILP,ILZP,BAZA,POW,ILP1›,K=764,KON=53279,JO=$278,FIRE›,RND=$D20A›CARD CZAS,CZMAX››BYTE ARRAY PRZECE= [0 0 0 0 0 0 0 0]›BYTE ARRAY PRZECF= [0 0 0 0 0 0 0 0]›BYTE ARRAY PRZECE1=[0 0 0 0 0 0 0 0]›BYTE ARRAY STRX=[0 0 0 0 0 0 0 0]›BYTE ARRAY STRY=[0 0 0 0 0 0 0 0]›BYTE ARRAY STR1=[0 0 0 0 0 0 0 0]››BYTE ARRAY PSX=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]›BYTE ARRAY PSY=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]›BYTE ARRAY PS1=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]›BYTE PSM,PSI››BYTE TRU›››PROC TX(BYTE X,Y BYTE ARRAY T)BYTE Q1 CARD Q3,Q4 Q1=T(0)Q3=40000+X+Y*40 Q4=PEEKC(@ T)MOVEBLOCK(Q3,Q4+1,Q1)[96]››PROC PO(BYTE X,Y BYTE ARRAY T)›POSITION(X,Y)›PRINTE(T)›[96]››PROC RYSPRZ(BYTE X,Y)›;TX(X,Y ,"  ")›;TX(X,Y+1,"” ")›;TX(X,Y+2,"Š ˆ")›TX(X,Y ,"H€J")›TX(X,Y+1,"RÔ€")›TX(X,Y+2,"Ê€È")›[96]››PROC RYSWYB(BYTE X,Y)›TX(X,Y ,"")›TX(X,Y+1,"")›TX(X,Y+2,"")›[96]››PROC LUDZ(BYTE X,Y)›TX(X,Y ,"")›TX(X,Y+1,"J")›TX(X,Y+2,"Ï€€Î€J")›TX(X,Y+3,"")›[96]››PROC RYSBAZ(BYTE X,Y)›IF POW>20 THEN›;TX(X,Y ,"")›;TX(X,Y+1," ")›;TX(X,Y+2,"ü")›;TX(X,Y+3," ’„")›;TX(X,Y+4,"ü")›;TX(X,Y+5," •")›;TX(X,Y+6,"")›› TX(X,Y ,"")› TX(X,Y+1,"GF€U")› TX(X,Y+2,"FQüR")› TX(X,Y+3,"R€ÒÄR")› TX(X,Y+4,"GZüR")› TX(X,Y+5,"FG€Õ")› TX(X,Y+6,"")› [96]›ELSEIF POW>7 & POW<21 THEN› TX(X,Y ,"")› TX(X,Y+1,"FÌO")› TX(X,Y+2,"FKüR")› TX(X,Y+3,"R€ÒÄR")› TX(X,Y+4,"GCüR")› TX(X,Y+5,"NÏÕ")› TX(X,Y+6,"")› [96]›ELSEIF POW<8 THEN› TX(X,Y ,"")› TX(X,Y+1,"Ì")› TX(X,Y+2,"QÉR")› TX(X,Y+3,"RUÌÄR")› TX(X,Y+4,"CÓR")› TX(X,Y+5,"NÏL")› TX(X,Y+6,"")› [96]›FI›[96]››PROC SOUWY()›WY2==+1›IF WY2=3 THEN WY2=0 FI››IF WYB>0 & WY2=0 THEN WYB==-1 › SOUND(0,51+WYB,8,WYB)› IF BAZA=0 THEN› SOUND(1,40+WYB,6,WYB)› SOUND(2,60,12,WYB&7)› ELSE› SOUND(1,60+WYB,10,2)› SOUND(2,62+WYB,10,2)› IF WYB=0 THEN SOUND(1,0,0,0)SOUND(2,0,0,0)FI› FI ›FI›[96]››PROC REKLAMOWKA()›GRAPHICS(0)POKE(752,1) ›POKE(710,0)››PO(13,1,"SPACE TRAVEL")›PO(7,3,"BY TOMASZ CIE$LEWICZ 1994")›PO(13,5,"ATARI MAGAZYN")››DO› IF K=28 THEN EXIT FI› IF KON=6 THEN EXIT FI›OD›K=255›[96]››PROC RYNCHR()›[173 $D40B 201 0 208 249]›[96]››PROC RUCHYJO()›RYNCHR()›IF JO=14 & B>4 THEN B==-1 FI›IF JO=13 & B<22 THEN B==+1 FI›IF JO=7 & A<28 THEN A==+1 FI›IF JO=11 & A>1 THEN A==-1 FI››LUDZ(A-1,B-1)›[96]››PROC LUDZSTR()›BYTE Q1› FOR Q1=1 TO 3 DO› C1=STR1(Q1)› C=STRX(Q1)› D=STRY(Q1)› IF C1=1 THEN › C==+1› POKE(40000+C+D*40,78)› POKE(39999+C+D*40,0)› IF C=39 THEN C1=0 POKE(40000+C+D*40,0)FI› STR1(Q1)=C1› STRX(Q1)=C› STRY(Q1)=D› FI› OD›[96]››PROC RYSZYC()›SETBLOCK(40040+21,8,83)›SETBLOCK(40040+21,ZYC,84)›[96]››PROC RYSPUN()›IF P1>9 THEN P1==-10 P2==+1 FI ›IF P2>9 THEN P2==-10 P3==+1 FI ›IF P3>9 THEN › IF P1>9 THEN P1==-10 FI IF P2>9 THEN P2==-10 FI› P3=0 P4==+1› ZYC==+1 RYSZYC()› FI››POKE(40040+11,16+P1)›POKE(40040+10,16+P2)›POKE(40040+9,16+P3)›POKE(40040+8,16+P4)›[96]››PROC OPGR()›TX(0,0,"QWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWE")›TX(0,1,"ASwynikSSzyciaSSSSSSSSSSSSSSSSSSSD")›TX(0,2,"ZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC")››RYSZYC()›RYSPUN()›[96]››PROC PRZECSTR()›BYTE Q1›FOR Q1=0 TO PSM›DO› IF PS1(Q1)=1 THEN› IF PSX(Q1)>0 THEN› PSX(Q1)==-1› TX(PSX(Q1),PSY(Q1),"T")› ELSE› PS1(Q1)=0› POKE(40000+PSX(Q1)+PSY(Q1)*40,0)› FI› FI›OD›[96]››PROC PRZECWYB()›FOR EE=1 TO ILP DO› E=PRZECE(EE)› E1=PRZECE1(EE)› F=PRZECF(EE)› IF E1=255 THEN › TX(E,F ," ")› TX(E,F+1," ")› TX(E,F+2," ")› FI› IF E1=253 THEN › TX(E,F ," ")› TX(E,F+1," ")› TX(E,F+2," ")› FI› IF E1=251 THEN › TX(E,F ," ")› TX(E,F+1," ")› TX(E,F+2," ")› FI› IF E1=249 THEN › TX(E,F ,"")› TX(E,F+1,"")› TX(E,F+2,"")› E1=0› FI› IF E1>240 THEN E1==-1 FI› PRZECE(EE)=E› PRZECE1(EE)=E1› PRZECF(EE)=F›OD›[96]››PROC PRZECMEN()› E=PRZECE(EE)› E1=PRZECE1(EE)› F=PRZECF(EE)› IF E1=1 THEN E==-1› ;STRZELANIE:› IF E>8 THEN› IF RND>200 & RNDPSM THEN PSI=0 FI› FI› FI› FI›› RYSPRZ(E,F)› IF E=0 THEN E1=0 FI› FI› IF E1=0 & CZAS<(CZMAX+TRU)THEN › Q1=0 › FOR Q2=1 TO ILP DO› Q3=PRZECE1(Q2)› Q4=PRZECE(Q2)› IF Q3=1 & Q4>33 THEN Q1==+1 FI› OD› IF Q1=0 THEN › E1=1› E=37 F=RAND(19)+3› ILZP==+1› RYSPRZ(E,F)› FI› FI› PRZECE(EE)=E› PRZECE1(EE)=E1› PRZECF(EE)=F›[96]››PROC CZARY(BYTE X,Y)›POW=0;ZMIENNA POMOCNICZA›FOR Q1=0 TO 40 DO› FOR Q2=0 TO 20 DO› Q3=(RND&3)+(RND&1)› Q4=(RND&3)+(RND&1)› Q5=RND&127› POKE(40000+X+Q3+(Q4+Y+1)*40,Q5)› OD› POW==+1› IF POW=4 THEN PRZECSTR() POW=0 FI› LUDZSTR()› RUCHYJO()› SOUWY()›OD› ›RYSBAZ(BX,BY)››[96]››PROC ZERTAB()›FOR Q1=0 TO 7 DO PRZECE1(Q1)=0 OD›FOR Q1=0 TO PSM DO PS1(Q1)=0 OD›FOR Q1=0 TO 4 DO STR1(Q1)=0 OD›[96]››PROC NEXTLEV()›ZERO(40000+3*40,21*40)›› IF ILZP=ILP1 THEN› TX(13,13,"congratulations")› P2==+1› WHILE STRIG(0)=1 DO› RUCHYJO()› OD› RYSPUN()› FI››LEVEL==+1››Q1=LEVEL/10›Q2=LEVEL MOD 10›WHILE STRIG(0)=1 DO RUCHYJO()› TX(17,7,"brawo")› TX(12,9,"ukonczylespoziom")› IF LEVEL<100 THEN› TX(10,16,"rozpoczynaszpoziom")› IF LEVEL>9 THEN› POKE(40000+30+16*40,Q1+16)› POKE(40000+31+16*40,Q2+16)› ELSE› POKE(40000+31+16*40,LEVEL+16)› FI› FI› SOUWY()› PRZECSTR()›OD›CZAS=0 BAZA=0 ››IF TRU<235 THEN TRU==+14 FI››P2==+2›RYSPUN()››ZERO(40000+3*40,21*40)›ZERTAB()›POKE(77,0)›[96]››PROC STRATAZYC(BYTE X)›LUDZ(A-1,B-1)›PRZECE(1)=X-1›PRZECE1(1)=255›PRZECF(1)=B›PRZECWYB()››ZERTAB()›IF CZAS>150 THEN CZAS==-150 FI››Q1=50›DO› RYNCHR()› SOUWY()› Q1==+1› IF Q1=150 THEN EXIT FI›OD›ZYC==-1 RYSZYC()›ZERO(40000+3*40,21*40)››A=2 B=11›[96]››PROC DANEPOCZ()›ZERTAB()›ZYC=5›P1=0 P2=0 P3=0 P4=0 OPE=0 FIRE=0›A=2 B=11 C1=0 ILP=6 ILZP=0 ILP1=0› CZMAX=2000 ›CZAS=0 BAZA=0 POW=0 WYB=0 WY2=0 ››LEVEL=1›TRU=1›[96]››PROC GRA()›GRAPHICS(0)POKE(752,1)POKE(710,$A0)POKE(709,$0B)›DANEPOCZ()›OPGR()››LUDZ(A-1,B-1)››DO››RUCHYJO()›SOUWY();ODGLOS WYBUCHU››››;STRZELANIE :›LUDZSTR()››IF STRIG(0)=1 THEN FIRE=0 FI››IF STRIG(0)=0 & FIRE=0 THEN › FOR Q1=1 TO 3 DO› Q2=STR1(Q1)› IF Q2=0 THEN › C=A+6› STRX(Q1)=C› D=B+1› STRY(Q1)=D› STR1(Q1)=1› POKE(40000+C+D*40,78)› FIRE=1 EXIT› FI› OD›FI›››;PRZECIWNICY›IF BAZA=0 THEN› OPE==+1›› EE=OPE PRZECMEN()› › IF OPE=1 % OPE=4 THEN› PRZECSTR()› FI›› IF OPE=6 THEN OPE=0 PRZECWYB()› FI›ELSE›; BAZA :›› B2== XOR 1› IF B2=1 THEN › IF B1=1 THEN › BY==+1› IF BY=19 THEN B1=2 FI› FI› IF B1=2 THEN › BY==-1› IF BY=4 THEN B1=1 FI› FI›› ;STRZELA MALYMI:› IF RND>200 & RNDBY+4 THEN› PSX(PSI)=BX-1› PSY(PSI)=BY+4› PS1(PSI)=1› PSI==+1› IF PSI>PSM THEN PSI=0 FI› FI› FI›› PRZECSTR()›› RYSBAZ(BX,BY)› ELSE › IF BC1=1 THEN › BC==-1› BB==XOR 1› IF BB=0 THEN› POKE(40000+BC+BD*40,70)› ELSE› POKE(40000+BC+BD*40,71)› FI› IF BC=0 THEN BC1=0› ZERO(40000+BC+BD*40,5)› POKE(40000+BC+BD*40,0)› FI› IF BC+5<30 THEN › POKE(40005+BC+BD*40,0)› FI› FI›› IF BC1=0 THEN › IF RND>200 THEN› BC1=1› BC=BX› BD=BY+3› FI› FI› FI››FI››;KOLIZJE :››IF BAZA=0 THEN › FOR Q1=1 TO 3 DO› C1=STR1(Q1)› C=STRX(Q1)› D=STRY(Q1)› IF C1=1 THEN› FOR Q2=1 TO ILP DO› E=PRZECE(Q2)› E1=PRZECE1(Q2)› F=PRZECF(Q2)› IF E1=1 & C>E-1 & CF-1 › THEN › PRZECE1(Q2)=255› STR1(Q1)=0› RYSWYB(E,F)› P1==+1 RYSPUN()› ILZP==+1› WYB=15› FI› OD› FI› OD›ELSE› FOR Q1=1 TO 3› DO› C1=STR1(Q1)› C=STRX(Q1)› D=STRY(Q1)› IF C1=1 & C>BX & CBY & D(CZMAX+TRU) & BAZA=0 THEN›Q1=0› FOR EE=1 TO ILP DO› E1=PRZECE1(EE)› IF E1>0 THEN Q1==+1 FI› OD› IF Q1=0 THEN› BX=30 BY=10 B1=1 B2=0 BC1=0 BB=0› CZARY(BX,BY)› POW=35+TRU/2› BAZA=1 › FI›FI›››; KOLIZJE:›FOR Q1=0 TO PSM›DO› IF PS1(Q1)=1 THEN› IF PSY(Q1)=B+1 THEN› Q2=PSX(Q1)› IF Q2>A & Q2B-2 THEN› IF Q2A & Q2BC & ABX THEN› IF B+1>BY THEN› IF B+128›DO›› POKE(77,0)› REKLAMOWKA()› › GRA()››UNTIL KON=5›OD›GRAPHICS(0)›PRINTE(" ")›PRINTE("ATARI FALCON IS POWER !")›SNDRST()›K=42›RETURN››