Как написать игру для ZX Spectrum 1994 г.

Приложение 1 - игровая программа "ПРИЛУНЕНИЕ".


ПРИЛУНЕНИЕ

Очень занимательная игра, хотя в ней нет ни стрельбы, ни лабиринтов, а только колонки цифр, за которыми, тем не менее, скрывается настоящая трагедия. Похожая ситуация возникла во время полета на Луну американского космического корабля Аполлон, когда на нем неожиданно

произошла авария, и астронавтам пришлось брать управление на себя. Для благополучного возвращения на Землю пришлось вычислить единственно возможную траекторию полета и в соответствии с ней ориентировать корабль в пространстве, включая двигатели на строго заданное время (в нашей игре это

придется делать вам, определяя дозы топлива для двигателя).

Игра начинается с небольшого предисловия, после которого на экране появляется подробная информация о всех возможных параметрах прилунения. Эти параметры в процессе игры будут выводиться на экран в виде столбиков цифр, вы должны анализировать их и задавать программе одну-единственную величину -дозу топлива. Она может принимать значения от 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




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Рабочий стол - Как работать с программами: Melon Terminal.
Хит-Парад - Десятка самых популярных программ в Чайковском.
Свежак 2 - обзор дем с фестиваля компьютерного искусства Constructions Chaos 2000: Lust, Scenergy #2 promotion, RiZC, HELL RAISERS, Kag!
Вступление - история создания газеты.
Бук - последняя шутка воина.

В этот день...   24 апреля