10 'Игровая программа *Вертолет* 10 'Любутов О.Д. г. Ереван ул. Церетели 10 'д. 46 кв. 38 тел. 42-53-96 10 'Версия 1.1 1989 г. 10 DIM KS%(1%),KB%(1%),KR%(3%),KT%(3%),KO%(3%),KX%(3%) 20 DW%=1% 30 DEF USR0=&O440 40 DEF USR1=&O520 50 ?CHR$(&O224)CHR$(&O214)CHR$(&O214) CHR$(&O236) 60 PSET (0%,190%),3% 70 DRAW "S16C3E2R3E2R1F1D3R2U3E1F1D3R7E4F2R1E2R1D4R2U3F2D1R7U4;" 80 DRAW "C3R2F1E1R1F2E1F1E1D3R2U3E1F2D2R8D8L64;" 90 PAINT (1%,221%),2%,3% 100 COLOR 2% 110 ? AT(0%,1%);"СЧЕТ:" 120 ? AT(13%,22%);"=LOD=" 130 FOR T%=1% TO II% 140 GOSUB 1370 150 NEXT T% 160 FOR T%=&O400 TO &O550 STEP 2% 170 READ TT% 180 POKE T%,TT% 190 NEXT T% 200 GOSUB 1100 210 GOSUB 400 220 FOR R%=1% TO 5% 230 IF (R% MOD 2%)=0% THEN 250 240 GOSUB 520 250 ON DW% GOTO 280,340,310,270,300,330,260 260 GOSUB 2450 270 GOSUB 630 280 GOSUB 1440 290 GOTO 350 300 GOSUB 1440 310 GOSUB 2450 320 GOTO 350 330 GOSUB 2450 340 GOSUB 630 350 NEXT R% 360 IF HV%=0% THEN 210 370 GOSUB 1030 380 HV%=0% 390 GOTO 210 400 S%=S%+1% 410 IF S%<>21% THEN 500 ELSE S%=0% 420 POKE &O402,&O40012 430 POKE &O406,&O67671 440 POKE &O522,&O6 450 A%=USR1(A%) 460 POKE &O402,&O40022 470 POKE &O406,&O67664 480 POKE &O522,&O2 490 A%=USR1(A%) 500 A%=USR0(A%) 510 RETURN 520 DV%=0% 521 IF INP(&O177716,64%)<>0% THEN 530 522 IF INP(-78%,&O1/7)=&O10 THEN DV%=-1% 523 IF INP(-78%,&O177)=&O31 THEN DV%=1% 524 IF INP(-78%,&O177)=&O32 THEN DV%=-128% 525 IF INP(-78%,&O177)=&O33 THEN DV%=128% 530 KV%=KV%+DV% 540 GOTO 1690 550 IF KV%<&O44700 OR KV%>&O62350 OR (KV% MOD 64%)>40% THEN KV%=KV%-DV% 560 POKE &O402,&O40001 570 POKE &O406,KV% 580 POKE &O522,&O10 590 A%=USR1(A%) 600 POKE &O177716,64% 610 POKE &O177716,0% 620 RETURN 630 POKE &O522,&O3 640 IF NN%=3% THEN 690 650 IF ABS(S1%-S%)<4% THEN 690 ELSE S1%=S% 660 NN%=NN%+1% 670 KO%(NN%)=-64% 680 KR%(NN%)=&O66175-S% 690 IG%=-1% 700 IG%=IG%+1% 710 IF IG%>NN% THEN RETURN ELSE KR%(IG%)= KR%(IG%)+KO%(IG%)*4%-1% 720 IF KR%(IG%)<&O45300 THEN KO%(IG%)=-KO%(IG%) 730 PE%=PEEK(KR%(IG%)+&O300) 740 POKE &O4O2,&O40122-KO%(IG%) 750 POKE &O4O6,KR%(IG%) 760 A%=USR1(A%) 770 IF (KR%(IG%) MOD 64%)<=0% THEN GOSUB 830 780 IF PE%=0% OR PE%=-17408% THEN 700 ELSE XX%=KR%(IG%) 790 GOSUB 1590 800 GOSUB 850 810 GOSUB 890 820 GOTO 700 830 XX%=KR%(IG%) 840 GOSUB 1650 850 KR%(IG%)=KR%(NN%) 860 KO%(IG%)=KO%(NN%) 870 NN%=NN%-1% 880 RETURN 890 IF ABS(KV%-XX%)<&O2200 AND ABS(((KV%+&O3) MOD 64%)-(XX% MOD 64%))<6% THEN 970 900 FOR I%=0% TO 1% 910 IF ABS((XX% MOD 64%)-(KB%(I%) MOD 64%))> 2% OR ABS(KB%(I%)-XX%)>&O2100 THEN 950 920 XX%=KB%(I%) 930 KB%(I%)=0% 940 GOSUB 1590 950 NEXT I% 960 RETURN 970 FOR J%=1% TO 3% 980 FOR XX%=KV%+1% TO KV%+5% STEP 2% 990 GOSUB 1590 1000 NEXT XX% 1010 NEXT 0% 1020 OO%=(40%*WW%+200%)*(DW%-1%+7%*WW%) 1030 KS%(1%)=0% 1040 KB%(1%)=0% 1050 KB%(0%)=0% 1060 KS%(0%)=0% 1070 FOR I%=2% TO 16% 1080 ? AT(0%,I%)SPC(32%); 1090 NEXT I% 1100 LINE (0%,20%)-(255%,20%),3% 1110 ? AT(16%,1%):"ЭТАП:";DW%+WW%*7% 1120 ? AT(6%,1%);OO%;" " 1130 KV%=&O54027 1140 RR%=-1% 1150 NN%=-1% 1160 RV%=0% 1170 FOR I%=1% TO 80% 1180 GOSUB 400 1190 GOSUB 520 1200 NEXT I% 1210 RETURN 1220 DATA &O40202,&O40702,&O52074,&O327,&O327,&O174,&O52500,&O52400 1230 DATA &O40204,&O41740,&O52525,&O10000,&O52400,&O52524,&O2005,&O2005,&O2004,&O52524,&O52520,&O52520,&O52500,&O401,&O404,&O52520 1240 DATA &O40206,&O41706,&O52525,&O0,&O1,&O125,&O404,&O2004,&O10004,&O32525,&O12525,&O2525,&O525,&O40100,&O10100,&O2525 1250 DATA &O40312,&O42012,&O140000,&O30000,&O6000,&O6000,&O177700,&O177760,&O177760,&O177760,&O125250,&O170076,&O6076,&O6010,&O170040,&O125200 1260 DATA &O40314,&O42014,&O1777,&O1403,&O1403,&O1403,&O1777,&O1777,&O1777,&O1777,&O125252,&O1700,&O146063,&O146063,&O1700,&O125252 1270 DATA &O40116,&O42016,&O300,&O1760,&O7674,&O37677,&O1760,&O1760,&O1760,&O7674,&O37677,&O36217,&O25252,&O136017,&O136060,&O20060,&O4017,&O1252 1280 DATA &O40422,&O41722,&O300,&O1760,&O1660,&O7674,&O37677,&O1760,&O1760,&O1760,&O1760,&O7674,&O37677,&O36217 1290 DATA &O40326,&O42026,&O10101,&O12105,&O12525,&O12525,&O2524,&O520,&O520,&O2524,&O12525,&O12525,&O12525,&O2524,&O520,&O100 1300 DATA &O40432,&O41532,&O14,&O124060,&O125200,&O125250,&O177752,&O125250,&O125200,&O124360,&O60,&O1777 1310 DATA &O40434,&O41534,&O30000,&O6052,&O1252,&O25252,&O125777,&O25252,&O1252,&O7452,&O6000,&O177700 1320 DATA &O40242,&O41742,&O11001,&O100,&O46014,&O1440,&O20104,&O7343,&O44620,&O3564,&O31642,&O107100,&O3622,&O11000,&O20,&O41001 1330 DATA &O12700,&O0,&O12701,&O0,&O12702,&O22,&O111011,&O62700,&O100,&O62701,&O100,&O5302,&O1402,&O137,&O414,&O203 1340 DATA &O12737,&O67600,&O402,&O12737,&O67677,&O406,&O4337,&O400,&O12704,&O77,&O12705,&O67600 1350 DATA &O110537,&O406,&O105205,&O110537,&O402,&O4337,&O400,&O5304,&O1402,&O137,&O470,&O207 1360 DATA &O12704,&O0,&O4337,&O400,&O5237,&O402,&O5237,&O406,&O5304,&O1402,&O137,&O524,&O207 1370 READ II% 1380 READ JJ% 1390 FOR I%=II% TO JJ% STEP 64% 1400 READ K% 1410 POKE I%,K% 1420 NEXT I% 1430 RETURN 1440 POKE &O522,&O2 1450 IF RV%<>0% THEN 1480 1460 Q%=1%-Q% 1470 RV%=&O66135-S%+Q%*21% 1480 RV%=RV%-256% 1490 POKE &O402,&O40222 1500 POKE &O406,RV% 1510 PE%=PEEK(RV%) 1520 A%=USR1(A%) 1530 IF PE%=0% AND RV%>&O46000 THEN RETURN 1540 XX%=RV% 1550 GOSUB 1590 1560 RV%=0% 1570 IF XX%>&O46000 THEN GOSUB 890 1580 RETURN 1590 POKE &O402,&O40042 1600 POKE &O406,XX% 1610 A%=USR1(A%) 1620 BEEP 1630 BEEP 1640 BEEP 1650 POKE &O402,&O40066 1660 POKE &O406,XX% 1670 A%=USR1(A%) 1680 RETURN 1690 E1%=E% 1700 E$=INKEY$ 1710 II%=-1% 1720 II%=II%+1% 1730 IF II%>1% THEN 550 1740 IF E$<>" " OR E1%<>0% THEN 1770 1750 IF KS%(II%)=0% THEN KS%(II%)=KV%+582% 1760 IF KB%(II%)=0% THEN KB%(II%)=KV%+&O1404 1770 IF KS%(II%)=0% THEN 1860 1780 POKE KS%(II%),0% 1790 KS%(II%)=KS%(II%)+2% 1800 IF PEEK(KS%(II%))=0% THEN 1850 1810 XX%=KS%(II%) 1820 GOSUB 2150 1830 KS%(II%)=0% 1840 GOTO 1860 1850 IF (KS%(II%) MOD 64%)<=4% THEN KS%(II%)=0% ELSE POKE KS%(II%),&O125252 1860 IF KB%(II%)=0% THEN 1980 1870 KB%(II%)=KB%(II%)+&O300 1880 IF PEEK(KB%(II%)+&O2000)=0% AND KB%(II%)<&O65300 THEN 1940 1890 XX%=KB%(II%) 1900 GOSUB 1590 1910 IF KB%(II%)<&O65300 THEN GOSUB 2150 ELSE GOSUB 1990 1920 KB%(II%)=0% 1930 GOTO 1980 1940 POKE &O402,&O40026 1950 POKE &O522,&O2 1960 POKE &O406,KB%(II%) 1970 A%=USR1(A%) 1930 GOTO 1720 1990 IE%=0% 2000 IF ABS(((&O67672-S%-21%*IE%) MOD 64%)-(XX% MOD 64%))<3% THEN 2050 2010 IF ABS(((&O67663-S%-21%*IE%) MOD 64%)-(XX% MOD 64%))<2% THEN 2100 2020 IE%=IE%+1% 2030 IF IE%<=2% THEN 2000 2040 RETURN 2050 POKE &O522,&O6 2060 XX%=&O67570-S%-21%*IE% 2070 GOSUB 1590 2080 OO%=OO%+8% 2090 GOTO 2360 2100 POKE &O522,&O2 2110 XX%=&O67563-S%-21%*IE% 2120 GOSUB 1590 2130 OO%=OO%+17% 2140 GOTO 2360 2150 IG%=0% 2160 IF IG%>RR% THEN 2180 2170 IF ABS(KT%(IG%)-XX%)<&O2200 AND ABS(((KT%(IG%)+2%) MOD 64%}-(XX% MOD 64%))<6% THEN 2240 2180 IF IG%>NN% THEN 2220 2190 IF ABS(KR%(IG%)-XX%)<&O2200 AND ABS((KR%(IG%) MOD 64%)-(XX% MOD 64%))<2% THEN 2280 2200 IG%=IG%+1% 2210 IF IG%<=3% THEN 2160 2220 IF ABS(RV%-XX%)<&O2200 AND ABS((RV% MOD 64%)-(XX% MOD 64%))<2% THEN 2310 2230 RETURN 2240 XX%=KT%(IG%) 2250 POKE &O522,&O4 2260 GOSUB 2740 2270 GOTO 2340 2280 XX%=KR%(IG%) 2290 GOSUB 850 2300 GOTO 2330 2310 XX%=RV% 2320 RV%=0% 2330 POKE &O522,&O2 2340 GOSUB 1590 2350 OO%=OO%+3% 2360 ? AT(6%,1%);OO% 2370 IF OO%<(40%*WW%+200%)*(DW%+WW%*7%) THEN RETURN 2380 DW%=DW%+1% 2390 IF DW%<8% THEN 2430 2400 DW%=1% 2410 WW%=WW%+1% 2420 IF WW%<9% THEN 2430 ELSE WW%=1% 2430 HV%=5% 2440 RETURN 2450 POKE &O522,&O5 2460 FF%=FF%+1% 2470 IF RR%=3% OR FF%<27% THEN 2520 2480 FF%=0% 2490 RR%=RR%+1% 2500 KT%(RR%)=&O45573+INT(RND(1%)*70%)*64% 2510 KX%(RR%)=SGN(RND(1%)-0.5!)*64% 2520 IG%=-1% 2530 IF RR%<0% THEN RETURN 2540 IG%=IG%+1% 2550 IF IG%>RR% THEN RETURN 2560 KT%(IG%)=KT%(IG%)+KX%(IG%)*4%-1% 2570 IF KT%(IG%)>&O45200 AND KT%(IG%)<&O62400 THEN 2640 2580 KX%(IG%)=-KX%(IG%) 2590 IF (KT%(IG%) MOD 64%)>1% THEN 2640 2600 XX%=KT%(IG%) 2610 GOSUB 2740 2620 GOSUB 1650 2630 GOTO 2540 2640 PE%=PEEK(KT%(IG%)+256%) 2650 POKE &O402,&O40132-KX%(IG%) 2660 POKE &O406,KT%(IG%) 2670 A%=USR1(A%) 2680 IF PE%=-22% OR PE%=-5632% OR PE%=0% THEN 2540 2690 XX%=KT%(IG%) 2700 GOSUB 1590 2710 GOSUB 2740 2720 GOSUB 890 2730 GOTO 2540 2740 KT%(IG%)=KT%(RR%) 2750 KX%(IG%)=KX%(RR%) 2760 RR%=RR%-1% 2770 RETURN