ПРИЛУНЕНИЕ
Очень занимательная игра, хотя в ней нет ни стрельбы, ни лабиринтов, а только колонки цифр, за которыми, тем не менее, скрывается настоящая трагедия. Похожая ситуация возникла во время полета на Луну американского космического корабля Аполлон, когда на нем неожиданно
произошла авария, и астронавтам пришлось брать управление на себя. Для благополучного возвращения на Землю пришлось вычислить единственно возможную траекторию полета и в соответствии с ней ориентировать корабль в пространстве, включая двигатели на строго заданное время (в нашей игре это
придется делать вам, определяя дозы топлива для двигателя).
Игра начинается с небольшого предисловия, после которого на экране появляется подробная информация о всех возможных параметрах прилунения. Эти параметры в процессе игры будут выводиться на экран в виде столбиков цифр, вы должны анализировать их и задавать программе одну-единственную величину -дозу топлива. Она может принимать значения от 8 до 200 условных единиц или 0. Последняя цифра означает, что ваш корабль свободно падает не расходуя топлива, при этом в соответствии с законами тяготения скорость падения непрерывно возрастает.
Задача игрока состоит в том, чтобы к моменту достижения поверхности Луны скорость корабля оказалась максимально близкой к нулю. Сколько на все маневры понадобится времени и сколько останется горючего, особого значения не имеет, но за последним параметром надо постоянно следить. Программа сделана так, чтобы горючего только-только хватило на идеальную посадку (высота = 0, скорость = 0).
Когда вы достигнете поверхности, появится информация о характере прилунения. Держим пари, что с первого раза никто из вас не посадит корабль не только ПРЕКРАСНО, но даже НЕУДАЧНО. Почти уверены, что и со второй попытки вам это не удастся, а вот когда удастся - зависит не столько от ваших математических способностей, сколько от сообразительности.
Программа 42. ПРИЛУНЕНИЕ.
10 BORDER 0: PAPER 0: INK 7: CLS 20 PRINT AT 10,10;"PLEASE WAIT" 30 GO SUB 9900
41 GO SUB 1700: CLS
42 INK 3
45 PRINT AT 10,8; FLASH 1;"ПОСАДИТЕ ЛУННИК" 47 PAUSE 250 50 GO SUB 1000 60 CLS
70 GO SUB 1500
90 REM ** НАЧАЛЬНЫЕ УСЛОВИЯ **
100 LET L=0
101 LET A=120
102 LET V=1
103 LET M=33000
104 LET N=16500
105 LET G=0.001
106 LET Z=1.8
107 LET K=0
108 LET YP=3
110 CLS
111 PRINT AT 0,11; INVERSE 1; INK 3;"ПОСАДКА" 120 INK 6
125 PRINT AT 2,0;"Д0ЗА ВРЕМЯ ВЫСОТА СКОР. ГОРЮЧЕЕ" 130 PRINT AT 4,0;
210 IF A<=1 THEN GO TO 213
211 LET H=INT A
212 GO TO 214
213 LET H=1000*(A-INT (A)): LET H=INT H
214 LET U=INT ((M-N)/10)
215 LET E=INT (V*3600)
220 IF YP=20 THEN LET YP=2: FOR C=3 TO 21: PRINT AT C,0; TAB 31: NEXT C: PRINT AT 4,0;
221 LET YP=YP+1: INK 5: PRINT K;TAB 6;L;TAB 13;H;TAB 19;E; TAB 27;U
230 INPUT "ВВЕДИТЕ ДОЗУ:";К: LET T=10
240 IF K=0 THEN GO TO 310 250 IF K>=8 AND K<=200 THEN GO TO 310
260 PRINT #0;AT 0,0; INK 2;"TAKOE ""K"" НЕВОЗМОЖНО,ВВЕДИТЕ НОВОЕ": PAUSE 200
270 GO TO 230
310 IF ((M-N)-0.001)<0 THEN GO TO 410 315 IF (T-.001)<0 THEN GO TO 210 320 LET S=T
340 IF ((N+S*K)-M)<=0 THEN GO TO 350
345 LET S=(M-N)/K
350 GO SUB 900
355 IF I<=0 THEN GO TO 710
360 IF V<=0 THEN GO TO 380
365 IF J<0 THEN GO TO 810
380 GO SUB 600
385 GO TO 310
410 CLS
415 INK 5: PRINT "ГОРЮЧЕЕ ВЫШЛО НА ";L;" СЕКУНДЕ" 440 LET S=(-V+SQR (V*V+2*A*G))/G 445 LET V=V+G*S 450 LET L=INT (L+S)
510 PRINT "ЛУНЫ ДОСТИГЛИ НА ";L;" СЕК"
515 LET W=V*3600: LET X=INT W
520 PRINT "CO СКОРОСТЬЮ ";Х;" КМ/Ч"
523 IF (M-N)<=0 THEN GO TO 530
525 PRINT "ГОРЮЧЕГО ОСТАЛОСЬ ";INT ((M-N)/10);" ЕД"
530 PRINT : INK 6
535 IF (-W+1)<=0 THEN GO TO 550
540 PRINT "ПРЕКРАСНОЕ ПРИЛУНЕНИЕ": PRINT
545 GO TO 590
550 IF (-W+10)<=0 THEN GO TO 560 553 PRINT "УДАЧНОЕ ПРИЛУНЕНИЕ" 555 GO TO 590
560 IF (-W+25)<=0 THEN GO TO 570 563 PRINT "СЕЛИ НЕУДАЧНО": PRINT 565 GO TO 590
570 IF (-W+60)<=0 THEN GO TO 580 573 PRINT "ЛУННИК ПОВРЕЖДЕН": PRINT 575 GO TO 590
580 PRINT "ИЗВИНИТЕ, НО ЛУННИК": PRINT 582 PRINT "ИСЧЕЗ, А ПОЯВИЛСЯ": PRINT
584 PRINT "НОВЫЙ ЛУННЫЙ КРАТЕР": PRINT
585 PRINT "ДИАМЕТРОМ ";INT (W*0.0847);" M" 590 PRINT ; INK 1;"ПОПРОБУЕТЕ ЕЩЕ? (Д/Н)"
592 IF INKEYS="D" OR INKEYS="d" THEN LET AWT=0: GO TO 100
594 IF INKEYS="N" OR INKEYS="n" THEN GO TO 596
595 GO TO 592
596 CLS : LET C=0
597 PRINT AT 10,8; INK С;"ДО НОВЫХ ВСТРЕЧ! "
598 LET C=C-1: IF C<0 THEN LET C=7
599 PAUSE 5: GO TO 597
600 REM --------------------
602 LET L=INT (L+S)
605 LET T=T-S 610 LET M=M-S*K 615 LET A=I 620 LET V=J 630 RETURN
710 IF (S-.005)<0 THEN CLS : GO TO 510
715 LET S=2*A/(V+SQR (V*V+2*A*(G-Z*K/M)))
730 GO SUB 900
735 GO SUB 600
740 GO TO 710
810 LET W=(1-M*G/(Z*K))/2
815 LET S=M*V/(Z*K*(W+SQR(W*M+V/Z)))+.05
820 GO SUB 900
830 IF I<0 THEN GO TO 710
835 GO SUB 600
840 IF (-J)<=0 THEN GO TO 310
845 IF V<=0 THEN GO TO 310
850 GO TO 810
900 LET Q=S*K/M
905 LET J=V+G*S+Z*LN (1-Q)
940 LET I=A-G*S*S/2-V*S
945 LET C=Q/2+Q"2/6+Q"3/12+Q"4/20+Q"5/30
950 LET I=I+Z*S*C
960 RETURN
1000 REM ** ИНФОРМАЦИЯ ** 1002 CLS
1005 PRINT AT 0,8; INK 3;"** "; INK 6; "ИНФОРМАЦИЯ";INK 3;" **" 1010 INK 5
1020 PRINT "ДОЗУ ГОРЮЧЕГО ""К"" МОЖНО"
1030 PRINT "УСТАНОВИТЬ РАВНОЙ НУЛЮ ЛИБО"
1040 PRINT "ЛЮБОЙ ВЕЛИЧИНЕ ОТ 8 ДО 200"
1050 PRINT "ВСЕГО ГОРЮЧЕГО 1650 ЕД."
1060 INK 4 1070 INVERSE 1
1090 PRINT AT 11,4;"ПППАРАМЕТРЫ ПРИЛУНЕНИЯПП"
1100 INVERSE 0
1110 INK 5
1120 PRINT "-ВРЕМЯ (СЕК)" 1130 PRINT "-ВЫСОТА (КМ,М)" 1140 PRINT "-СКОРОСТЬ (КМ/Н)" 1150 PRINT "-ГОРЮЧЕЕ (ED)" 1160 PRINT "-ДОЗА (ED)"
1162 PRINT #0; INK 2;TAB 6;"НАЖМИТЕ ЛЮБУЮ КЛАВИШУ"
1165 IF INKEY$="" THEN GO TO 1165
1170 RETURN
1500 INVERSE 1: INK 4
1505 PRINT AT 0,7;"ППВИДЫ ПРИЛУНЕНИЯПП"
1510 INVERSE 0 1520 INK 5
1530 PRINT "1. ПРЕКРАСНОЕ ПРИЛУНЕНИЕ"
1540 PRINT "2. УДАЧНОЕ ПРИЛУНЕНИЕ"
1550 PRINT "3. СЕЛИ НЕУДАЧНО"
1560 PRINT "4. ЛУННИК ПОВРЕЖДЕН"
1570 PRINT "5. ЛУННИК ИСЧЕЗ,.....ППППОЯВИЛСЯ НОВЫЙ КРАТЕР"
1580 INK 6
1590 PRINT AT 21,6;"НАЖМИТЕ ЛЮБУЮ КЛАВИШУ" 1600 IF INKEY$="" THEN GO TO 1600 1610 RETURN
1700 REM ** ПРИЧИНЫ ПОСАДКИ ** 1710 CLS : INK 6 1720 PRINT "2093 GOD.": PRINT 1725 INK 5
1730 PRINT "ВАМ БЫЛО ПОРУЧЕНО ДОСТАВИТЬ ГРУЗ С ЗЕМЛИ НА МАРС. НО ЧЕРЕЗ НЕКОТОРОЕ
ВРЕМЯ ПОСЛЕ СТАРТА С ЗЕМЛИ У ВАС ПРОИЗОШЛА ПОЛОМКА И ВЗРЫВ АТОМНОГО РЕАКТОРА."
1740 PRINT "B МОМЕНТ ВЗРЫВА КОРАБЛЬ НАХОДИЛСЯ НЕДАЛЕКО ОТ ЛУНЫ."
1750 PRINT "ВЫ СРОЧНО ПОКИДАЕТЕ РАДИОАКТИВНЫЙ КОРАБЛЬ В СПАСАТЕЛЬНОЙ КАПСУЛЕ. ПРИ
ПОДЛЕТЕ К ЛУНЕ ВЫ ОБНАРУЖИВАЕТЕ, ЧТО ВЗРЫВОМ БЫЛ ПОВРЕЖДЕН КОМПЬЮТЕР, УПРАВЛЯЮЩИЙ
ПОСАДКОЙ. ЭТО ЗНАЧИТ, ЧТО ВАМ ПРИДЕТСЯ САЖАТЬ КАПСУЛУ ВРУЧНУЮ."
1760 PRINT AT 20,6; INK 3;"НАЖМИТЕ ЛЮБУЮ КЛАВИШУ"
1770 IF INKEY$="" THEN GO TO 1770
1780 RETURN
9899 STOP
9900 REM -- RUS.ALF.-
9910 FOR N=1 TO 20 9920 READ A$ 9930 FOR M=0 TO 7 9940 READ S 9950 POKE USR A$+M,S 9960 NEXT M 9970 NEXT N
9975 DATA "B",0,124,64,124,66,66,124,0
9976 DATA "G",0,126,64,64,64,64,64,0
9977 DATA "D",0,28,36,36,36,36,126,66
9978 DATA "J",0,73,73,62,73,73,73,0
9979 DATA "I",0,66,70,74,82,98,66,0
9980 DATA "L",0,30,34,34,34,34,98,0
9981 DATA "P",0,126,66,66,66,66,66,0
9982 DATA "O",0,66,66,36,24,16,96,0
9983 DATA "C",0,68,68,68,68,68,126,2
9984 DATA "H",0,66,66,66,62,2,2,0
9985 DATA "N",0,65,73,73,73,73,127,0
9986 DATA "M",0,65,73,73,73,73,127,1
9987 DATA "E",0,60,66,30,2,66,60,0
9988 DATA "U",0,76,82,114,82,82,76,0
9989 DATA "A",0,62,66,66,62,34,66,0
9990 DATA "S",24,66,70,74,82,98,66,0
9991 DATA "R",0,64,64,124,66,66,124,0
9992 DATA "Т",0,192,64,124,66,66,124,0
9993 DATA "F",0,62,73,73,73,62,8,0
9994 DATA "Q",0,66,66,114,74,74,114,0
9995 RETURN