KRIEGSSPIELE!
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

Приложение. BASIC 1982. Пара книг издательства USBORNE

Страница 1 из 2 1, 2  Следующий

Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:37 am

ИГРЫ-ОДНОХОДОВКИ, ИНТЕРЕСНЫЕ ЕСТЕСТВЕННЫМ ПРИМЕНЕНИЕМ ЯЗЫКА BASIC ДЛЯ ПОЛУЧЕНИЯ ИГРОВОГО ЭФФЕКТА
Группа военных игр: #1 - абстрактные
Класс настольных игр: #0 - игровой автомат
Действующие лица: компьютер
Моделируемые события: исследование космоса, война с роботами и чудовищами
Поле боя: компьютер
Солдатики: сам игрок
Игровое время: есть походовые, есть на реакцию, есть реального времени
Генератор случайных событий: компьютер
Расчеты "за кадром": выбор стратегии
Общие замечания: выбрал эту пару книжек, привлеченный картинками, которые выкинул при переводе... странно, да?

Выбросил все общие места.
Переделал все примеры под IBM PC DOS GWBASIC. Варианты под другие машины убрал. [Но замечания о совместимости оставил - для умиления].
ВременнЫе задержки вам для вашего DOS/DosBox придется подбирать самостоятельно. Более того, я не уверен, что правильно оценил влияние этих задержек на смысл многих из игр.
Убрал решения задач, т.к. они очевидны.- G.
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:38 am

*** COMPUTER SPACEGAMES / 1982 ***

STARSHIP TAKEOFF

Вы - капитан космического корабля. Ваше судно потерпело крушение на странной планете, и вы захватили чужое, чтобы как можно быстрее убраться отсюда. Корабельный компьютер информирует вас о силе гравитации планеты. Соответствующую силу тяги для успешного взлета нужно угадать. Установите слишком малую - корабль не оторвется от поверхности. Слишком большую - не даст взлететь предохранительный механизм корабля. Если вы не покинете планеты за десять попыток, чужаки вас поймают.

КАК РАБОТАЕТ ПРОГРАММА
10 - Очистка экрана.
30-40 - Компьютер выбирает два числа - одно, между 1 и 20, помещает в G, другое, между 1 и 40 помещает в W.
50 - Число из G умножается на число из W. Результат помещается в R.
60 - Печатается слово "GRAVITY" и число из G.
70 - Запрашивается число.
80 - Начинается цикл, выполняющий последующие строки 10 раз, что дает вам 10 попыток.
90 - Введенное число помещается в F.
100-120 - Сравниваются числа из F и R и печатается соответствующее сообщение или управление передается на строку 190.
130 - Печатается предложение повторить попытку, если эта не была последней.
140 - Конец цикла. Переход к строке 80 для повторения попытки.
160-170 - Печатается сообщение об исчерпании попыток.

5 RANDOMIZE TIMER
10 CLS
20 PRINT "STARSHIP TAKE-OFF"
30 G=INT(RND*20+1)
40 W=INT(RND*40+1)
50 R=G*W
60 PRINT "GRAVITY=";G
70 PRINT "TYPE IN FORCE"
80 FOR C=1 TO 10
90 INPUT F
100 IF F>R THEN PRINT "TOO HIGH";
110 IF F<R THEN PRINT "TOO LOW";
120 IF F=R THEN GOTO 190
130 IF C<>10 THEN PRINT ", TRY AGAIN"
140 NEXT C
150 PRINT
160 PRINT "YOU FAILED -"
170 PRINT "THE ALIENS GOT YOU"
180 END
190 PRINT "GOOD TAKE OFF"
200 END

[На некоторых компьютерах программу (например, SZX81 и Spectrum) нужно завершать словом STOP, а не END. (Посмотрите, чем они отличаются)].

КАК СДЕЛАТЬ СЛОЖНЕЕ
Дать меньше 10 попыток. Для этого нужно заменить число 10 в строках 80 и 130 на меньшее (одинаковое для обоих строк).

ЗАДАЧА
Как изменить диапазон угадываемых значений?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:39 am

INTERGALACTIC GAMES

Идет ожесточенная борьба среди мировых телекомпаний за эксклюзивное право трансляции Первых Интергалактических Игр. Победит та, которая первой выведет спутник на орбиту нужной высоты.

Вы - инженер по запускам в New Century TV. Выбор угла запуска и начальной скорости ракеты - на вас. Вы способны это сделать?

КАК РАБОТАЕТ ПРОГРАММА
10-40 - Выбирается высота, на которую вы должны запустить спутник, помещается в H и печатается.
50 - Начало цикла на 8 попыток.
60-70 - Запрашивается угол, помещается в A.
80-90 - Запрашивается скорость, помещается в V.
100 - Исходя из H вычисляется правильный угол и сравнивается с предложенным вами.
110 - Тоже для скорости.
120 - Если значения достаточно близки, управление передается строке 210.
130-160 - Печатается соответствующий комментарий, чтобы показать, в какую сторону вы ошиблись.
170 - Переход к следующей попытке.
180-190 - Печатается сообщение после 8 неудачных попыток.
210-220 - Печатается сообщение, если вы победили.

5 RANDOMIZE TIMER
10 PRINT "INTERGALACTIC GAMES"
20 H=INT(RND*100+1)
30 PRINT "YOU MUST LAUNCH A SATELLITE"
40 PRINT "TO A HEIGHT OF";H
50 FOR G=1 TO 8
60 PRINT "ENTER ANGLE (0-90)"
70 INPUT A
80 PRINT "ENTER SPEED (0-40000)
90 INPUT V
100 A=A-ATN(H/3)*180/3.14159
110 V=V-3000*SQR(H+1/H)
120 IF ABS(A)<2 AND ABS(V)<100 THEN GOTO 210
130 IF A<-2 THEN PRINT "TOO SHALLOW"
140 IF A>2 THEN PRINT "TOO STEEP"
150 IF V<-100 THEN PRINT "TOO SLOW"
160 IF V>100 THEN PRINT "TOO FAST"
170 NEXT G
180 PRINT "YOU'VE FAILED"
190 PRINT "YOU'RE FIRED"
200 END
210 PRINT "YOU'VE DONE IT"
220 PRINT "NCTV WINS-THANKS TO YOU"
230 END

ЧТО ДОБАВИТЬ
Следующие три дополнительные строчки позволят компьютеру выдать вам бонус в зависимости от того, насколько быстро вы справились с задачей.

222 B=INT(1000/G)
225 PRINT "YOU'VE EARNED A"
227 PRINT "BONUS OF";B;"CREDITS"

ЗАДАЧА
Как переделать программу, чтобы в случае победы она автоматически начинала новую игру, сохраняя полученный бонус (подсказка: для этого надо изменить две строчки и одну добавить). Сколько вы продержитесь на этой работе?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:39 am

EVIL ALIEN

Где-то в глубине черного пространства прячется Elron - Злой Инопланетянин. Вы уже привели в негодность все его дальнобойное оружие, но он все еще опасен и, даже, способен делать свой корабль невидимым. Вы знаете, что он где-то в пределах трехмерной сетки, которая видна на экране вашего корабля (по оси X откладывается положение Запад-Восток, Y - Юг-Север, Z - дистанция), но где? У вас четыре космические бомбы. Каждую можно взорвать в любой позиции сетки, введя по запросу компьютера три координаты от 0 до 9. Успеете ли вы уничтожить Злого Elron раньше, чем он доберется до вас?

20 - Устанавливается размер сетки.
30 - Устанавливается число попыток.
40-60 - Устанавливается позиция Elron - 3 числа от 0 до размеров сетки.
70 - Начало цикла, повторяющего следующие 15 строк G раз.
80-120 - Запрашиваются три координаты, сохраняются в X1, Y1 и D1.
130 - Выясняется, совпадают ли они с нужными, и, в случае успеха, управление передается строке 300.
140-210 - Проверяется взаимное расположение указанной и нужной точек, результат печатается.
220 - Конец цикла. Переход к следующей попытке.
230 - Печатается сообщение об исчерпании числа попыток.
300 - Печатается сообщение об успехе.

5 RANDOMIZE TIMER:CLS
10 PRINT "EVIL ALIEN"
20 S=10
30 G=4
40 X=INT(RND*S)
50 Y=INT(RND*S)
60 LET D=INT(RND*S)
70 FOR I=1 TO G
80 PRINT "X POSITION (0 TO 9)"
85 INPUT X1
90 PRINT "Y POSITION (0 TO 9)"
100 INPUT Y1
110 PRINT "DISTANCE (0 TO 9)"
120 INPUT D1
130 IF X=X1 AND Y=Y1 AND D=D1 THEN GOTO 300
140 PRINT "SHOT WAS ";
150 IF Y1>Y THEN PRINT "NORTH";
160 IF Y1<Y THEN PRINT "SOUTH";
170 IF X1>X THEN PRINT "EAST";
180 IF X1<X THEN PRINT "WEST";
190 PRINT
200 IF D1>D THEN PRINT "TOO FAR"
210 IF D1<D THEN PRINT "NOT FAR EN0UGH"
220 NEXT I
230 PRINT "YOUR TIME HAS RUN OUT !!!"
240 END
300 PRINT "*BOOM* YOU GOT HIM!"
310 END

КАК СДЕЛАТЬ СЛОЖНЕЕ
Эта программа написана так, чтобы легко менять ее сложность, меняя размер сетки. Для этого достаточно поменять число, присваиваемое S в строке 20. Если вы увеличите размер сетки, то вам придется выдать игроку больше бомб (значение G в строке 30), чтобы шанс поразить Elron не уменьшился слишком сильно.

ЗАДАЧА
Как изменить программу, чтобы игрок мог сам выбрать сложность игры. (Совет: ограничьте значение S между 6 и 30, а в качестве значения G в строке 30 используйте INT(S/3)).
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:40 am

BEAT THE BUG EYES

Вы - в ловушке! Куда бы вы не бросили взгляд, вы видите холодный стальной блеск глаз космических жуков, прячущихся среди скал. Они медленно приближаются к вам со всех сторон, чтобы оплести своей липкой паутиной. К счастью, при вас ваш верный протонный бластер.

Глаза жуков выскакивают в четырех различных местах вашего экрана, соответствующим числам 1-4. Успейте нажать нужную цифру, пока глаза на экране, и вы его убьете. Всего нападают 10 жуков - чем больше вы уничтожите, тем больше будет шанс спастись.

КАК РАБОТАЕТ ПРОГРАММА
20 - Счетчик попаданий в начале игры устанавливается в 0.
30 - Начало цикла перебора 10 жуков.
40 - Очистка экрана.
50-60 - Цикл для организации паузы случайной длины перед появлением жука.
70 - Выбирается случайное число от 1 до 4 и помещается в R.
80 - Вызов одной из четырех подпрограмм в зависимости от R. Подпрограммы помещают свои значения в A (столбец) и D (строка экрана) и передают управление в строку 350 для помещения экранного курсора в эту позицию.

[Оператор GOSUB передает управление подпрограмме, а RETURN в ее конце возвращает его в основную программу. Выбор подпрограммы по числу в некоторых BASIC делается не переключателем ON, а вычислением номера строки прямо в GOSUB].

90 - Печатаются "глаза" (в том месте, куда был установлен курсор) .
100-140 - Цикл, ожидающий некоторое время нажатия клавиши. Как только клавиша нажата, его работа прекращается (передача управления к строке 140). Как бы то ни было, проверяется, нажата ли нужная клавиша.
150 - Счетчик попаданий увеличивается на 1.
160 - Очистка экрана.
170-180 - Курсор помещается в ту же позицию, печатается "звездочки".
190-200 - Цикл для организации паузы, позволяющий успеть заметить "звездочку".
210 - Переход к следующему жуку.
220 - Печать счетчика попаданий.
240-390 - Подпрограмма.

5 RANDOMIZE TIMER
10 PRINT "BUG EYES"
20 S=0
30 FOR T=1 TO 10
40 CLS
50 FOR I=1 TO INT(RND*3000+2000)
60 NEXT I
70 R=INT(RND*4+1)
80 ON R GOSUB 240,270,300,330
90 PRINT "OO"
100 FOR I=1 TO 2000
110 R$=INKEY$
120 IF R$<>"" THEN GOTO 140
130 NEXT I
140 IF VAL("0"+R$)<>R THEN GOTO 210
150 S=S+1
160 CLS
170 GOSUB 350
180 PRINT "*"
190 FOR J=1 TO 4000
200 NEXT J
210 NEXT T
220 PRINT "YOU BLASTED ";S;"/10 BUGS"
230 END
240 D=5
250 A=1
260 GOTO 350
270 D=1
280 LET A=9
290 GOTO 350
300 D=5
310 A=18
320 GOTO 350
330 D=10
340 A=7
350 FOR I=1 TO D
360 PRINT
370 NEXT I
380 PRINT TAB(A);
390 RETURN

КАК УСКОРИТЬ ИГРУ
Надо уменьшить число в конце строки 100. <Числа в строках 50 и 190 тоже важны.- G.>

[КАК ИСПОЛЬЗОВАТЬ МЕСТО НА ЭКРАНЕ
Программа написана так, чтобы жуки поместились на самом маленьком из экранов (у VIC20). Для других компьютеров можно установить гораздо более широкие рамки. (Увеличить значения для A и D)].

ЗАДАЧА
Как изменить программу, чтобы жуки появлялись более чем в 4-х местах экрана?
Как увеличить число жуков?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:41 am

MOONLANDER

Вы управляете модулем, который должен доставить нескольких астронавтов на поверхность Луны. Чтобы благополучно прилуниться, вы должны замедлить скорость, но это требует затрат топлива, а его мало.

Компьютер сообщает вам время, высоту, скорость и количество остающегося топлива и спрашивает, сколько топлива нужно сжечь в данный момент. Затем рассчитывает новые параметры. Сжигание 5 единиц топлива оставляет скорость снижения постоянной. Большего количества - замедляет падение. Постарайтесь снизить скорость к моменту прилунения. Сумеете?

КАК РАБОТАЕТ ПРОГРАММА
30-80 - Устанавливаются и печатаются начальные значения времени, высоты, скорости и количество топлива.

[Обратите внимание на точки с запятой в строках 70 и 80. Поэкспериментируйте, как они влияют на печать, в отличие от запятых. Например, некоторые BASIC вставляют пробелы вокруг выводимых чисел, а некоторые - нет].

90 - Если топливо закончилось, то компьютер обойдет строки, запрашивающие вас о его, топлива, трате. Т.о. вы просто будете наблюдать на экране за своим падением.
100-140 - Запрашивается и проверяется на допустимость количество сжигаемого топлива.
150 - Вычисляется новая скорость, V1.
160 - Вычисляется остаток топлива.
170 - Проверяется, не достигнет ли модуль поверхности на этом ходу. Если да, то управление передается на оценку качества прилунения.
180 - Вычисляется новая высота.
190 - Счетчик времени увеличивается на 1.
200 - Новая скорость - V1 - заменяет старую - V.
210 - Переход к следующей итерации.
220-260 - Вычисляется и оценивается скорость в момент прилунения, печатается результат.

5 RANDOMIZE TIMER
10 CLS
20 PRINT "MOONLANDER"
30 T=0
40 H=500
50 V=50
60 F=120
70 PRINT "TIME";T,"HEIGHT";H
80 PRINT "VEL.";V,"FUEL";F
90 IF F=0 THEN GOTO 140
100 PRINT "BURN? (0-30)"
110 INPUT B
120 IF B<0 THEN B=0
130 IF B>30 THEN B=30
140 IF B>F THEN B=F
150 V1=V-B+5
160 F=F-B
170 IF (V1+V)/2>=H THEN GOTO 220
180 H=H-(V1+V)/2
190 T=T+1
200 V=V1
210 GOTO 70
220 V1=V+(5-B)*H/V
230 IF V1>5 THEN PRINT "YOU CRASHED - ALL DEAD"
240 IF V1>1 AND V1<=5 THEN PRINT "OK - BUT SOME INJURIES"
250 IF V1<=1 THEN PRINT "GOOD LANDING"
260 END

ЧТО ДОБАВИТЬ
Добавив следующие строки, мы получим наглядное представление положения модуля.

85 FOR I=2 TO H/500*nn
86 PRINT " ";
87 NEXT I
88 PRINT "*"

Вместо nn надо подставить ширину экрана.

ЧТО ИЗМЕНИТЬ
Поэкспериментируйте с разными значениями H, V и F в строках 40-60.

ЗАДАЧА
Как упростить игру, увеличив допустимую скорость прилунения?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:41 am

MONSTERS OF GALACTICON

Приземлиться на Galacticon было легко, но никто не предупредил вас, что здесь обитают одни из самых неприятных монстров во всей известной вселенной.

При нападении монстра вы должны выбрать наиболее действенное против него оружие - лучевой пистолет, триптоновый бластер или световой меч. Сможете ли вы это сделать? Если да, то сможете выжить и покорить Galacticon.

КАК РАБОТАЕТ ПРОГРАММА
20 - Организуется хранилище данных (массив) - M$ - содержащий четыре ячейки - M$(1), M$(2), M$(3) и M$(4) - по одной для имени каждого монстра.
30 - Число монстров - 4.
40 - Число космонавтов в группе - 5.
50-80 - Имена монстров записываются в массив.
90-150 - Цикл тасования монстров. N раз выбирается случайная пара элементов M$ и они меняются местами (T$ - промежуточная переменная, нужная для обмена).

[Удобный способ тасования и для ваших программ].

160 - Начало цикла из 8 нападений.
170 - Очистка экрана.
180-200 - Случайно выбирается номер монстра - R - и печатается его имя.
210-240 - Запрашивается первая буква названия оружия ("R", "S", "T") - R$ - и комбинируется с R для получения результата схватки - W (1, 2 или 3).
250 - Если W равно 2, монстр убит, передача управления на строку 300.
260 - Если W - 3, "no effect" - 320.
270-290 - Один из космонавтов гибнет - 360.
330-350 - Рассматривается ситуация "no effect" - монстр может кого-нибудь съесть или нет, решает случай.
360-370 - Проверяется, остались ли еще живые космонавты. Если нет, проигрыш - 440.
380-390 - Пауза для того, чтобы игрок успел увидеть результат схватки.
400 - Переход к следующему нападению.
410-430 - Печатается победное сообщение.

5 RANDOMIZE TIMER
10 PRINT "MONSTERS OF GALACTICON"
20 DIM M$(4)
30 N=4
40 M=5
50 M$(1)="SULFACIDOR"
60 M$(2)="FLAMGONDAR"
70 M$(3)="BALNOLOTIN"
80 M$(4)="GOLAND0R"
90 FOR I=1 TO N
100 A=INT(RND*N+1)
110 B=INT(RND*N+1)
120 T$=M$(A)
130 M$(A)=M$(B)
140 M$(B)=T$
150 NEXT I
160 FOR T=1 TO 8
170 CLS
180 R=INT(RND*N+1)
190 PRINT "MONSTER COMING..."
200 PRINT "IT'S A ";M$(R)
210 PRINT "WHICH WEAPON? (R, S OR T)"
220 INPUT R$
230 W=ASC(R$)-81+R
240 W=W+3*(W>3)+3*(W>6)
250 IF W=2 THEN GOTO 300
260 IF W=3 THEN GOTO 320
270 PRINT "NO USE. IT'S EATEN ONE"
280 PRINT "OF YOUR GROUP"
290 GOTO 360
300 PRINT "YOU'VE KILLED IT"
310 GOTO 380
320 PRINT "NO EFFECT"
330 IF RND>.4 THEN GOTO 380
340 PRINT "YOU ANGERED THE ";M$(R);" AND IT"
350 PRINT "KILLED ONE OF YOUR GROUP"
360 M=M-1
370 IF M<1 THEN GOTO 440
380 FOR I=1 TO 5000
390 NEXT I
400 NEXT T
410 PRINT "YOU HAVE SURVIVED TO"
420 PRINT "CONQUER GALACTICON"
430 END
440 PRINT "YOU'RE ALL DEAD"
450 END

ЗАДАЧА
Сможете ли вы предложить четыре способа сделать эту игру сложнее?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:43 am

ALIEN SNIPERS

Вы - капитан межзвездного крейсера, из-за аварии одного из гиперкосмических двигателей оказался в запретной зоне. Вас атакуют вражеские истребители, имеющие, ко всем неприятностям, еще и способность обманывать ваш радар, заставляя его выдавать ложные сведения. К счастью компьютер разгадал код пришельцев, и вы можете восстановить правильные координаты врага. Но вы должны делать это быстро - они на одном месте долго не стоят.

Компьютер будет печатать букву и число-поправку. Вы должны найти букву, удаленную от выданной на это число. Например, на "M 4" надо ответить "Q", на "C 2" - "E" и т.д. Эти буквы - координаты для нацеливания вашего лазерного оружия, правильно введете, попадете во врага. Вы можете выбирать сложность игры. Задавая диапазон чисел поправок от 1 до 10. У вас десять выстрелов. Сколько истребителей вы поразите?

КАК РАБОТАЕТ ПРОГРАММА
40-60 - Запрашивается и проверяется на допустимость диапазон чисел-поправок (уровень сложности игры), помещается в D.
70 - Счетчик попаданий устанавливается в 0.
80 - Начало цикла на 10 выстрелов.
90 - Выбирается случайная буква (не ближе D от конца алфавита) - L$.
100 - Выбирается случайная поправка от 1 до D - N.
110-130 - L$ и N печатаются.
140-170 - Некоторое время ожидается нажатие клавиши. Если было, передача управления на 190.
180 - Если не было нажатия за отведенное время - 200.
190 - Если была нажата правильная клавиша, счетчик попаданий увеличивается на 1.
200 - Переход к следующему выстрелу.
210 - Печать счетчика попаданий.

5 RANDOMIZE TIMER
10 CLS
20 PRINT "ALIEN SNIPERS"
30 PRINT
40 PRINT "DIFFICULTY (1-10)"
50 INPUT D
60 IF D<1 OR D>10 THEN GOTO 50
70 LET S=0
80 FOR G=1 TO 10
90 L$=CHR$(INT(RND*(26-D)+65))
100 N=INT(RND*D+1)
110 CLS
120 PRINT
130 PRINT L$,N
140 FOR I=1 TO 5000+D*1000
150 I$=INKEY$
160 IF I$<>"" THEN GOTO 190
170 NEXT I
180 GOTO 200
190 IF I$=CHR$(ASC(L$)+N) THEN LET S=S+1
200 NEXT G
210 PRINT "YOU HIT";S;"/10"
220 END

КАК ИЗМЕНИТЬ СКОРОСТЬ ИГРЫ
Изменить числа в строке 140.

КАК СДЕЛАТЬ СЛОЖНЕЕ
Запретить вводить маленькие числа сложности (заменить 1 в строках 40 и 60, например, на 3).

ЗАДАЧА
Как считать не попадания, а очки? Чем сложнее задача (больше поправка), тем выше бонус.
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:43 am

ASTEROID BELT

Вы пересекаете Пояс Астероидов. Чтобы избежать столкновения, вы должны уничтожать их, соизмеряя силу огня с размером астероидов.

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

КАК РАБОТАЕТ ПРОГРАММА
20 - Счетчик попаданий устанавливается в 0.
30 - Начало цикла на 10 астероидов.
50 - Выбирается горизонтальная позиция астероида на экране - А (1-18 ).
60 - Вертикальная - D (1-12).
70 - Число звезд в астероиде - N (1-9).
80-100 - Курсор передвигается на D строк.
110-160 - Печатаются звезды астероида - N штук. На 1, 4, и 7-ой происходит сдвиг на новую строку и табуляция в позицию A.
180-210 - Цикл ожидания нажатия цифровой клавиши. Если таковая нажата - 240.
220-230 - Печатается сообщение об опоздании с выстрелом.
240 - Проверяется, правильная ли клавиша была нажата (соответствующая N), промах - 270.
250 - Печатается сообщение о попадании.
260 - Счетчик попаданий увеличивается на 1.
270-280 - Печатается сообщение о типе промаха.
290-300 - Пауза для того, чтобы игрок успел увидеть результат схватки.
310 - Переход к следующему астероиду.
320-330 - Печать счетчика попаданий.

5 RANDOMIZE TIMER
10 PRINT "ASTEROID BELT"
20 S=0
30 FOR G=1 TO 10
40 CLS
50 A=INT(RND*18+1)
60 D=INT(RND*12+1)
70 N=INT(RND*9+1)
80 FOR I=1 TO D
90 PRINT
100 NEXT I
110 FOR I=1 TO N
120 IF I<>1 AND I<>4 AND I<>7 THEN GOTO 150
130 PRINT
140 PRINT TAB(A);
150 PRINT "*";
160 NEXT I
170 PRINT
180 FOR I=1 TO 5000
190 Q=VAL("0" + INKEY$)
200 IF Q<>0 THEN GOTO 240
210 NEXT I
220 PRINT "CRASHED INTO ASTEROID"
230 GOTO 290
240 IF Q<>N THEN GOTO 270
250 PRINT "YOU DESTROYED IT"
260 S=S+1
270 IF Q<N THEN PRINT "NOT STRONG ENOUUH"
280 IF Q>N THEN PRINT "TOO STRONG"
290 FOR I=1 TO 5000
300 NEXT I
310 NEXT G
320 PRINT "YOU HIT";S;"OUT OF 10"
330 END

КАК ИЗМЕНИТЬ СКОРОСТЬ ИГРЫ
Число в конце строки 180 регулирует время ожидания выстрела.

ЗАДАЧА
Как считать не попадания, а звезды?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:44 am

TRIP INTO THE FUTURE

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

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

КАК РАБОТАЕТ ПРОГРАММА
30-60 - Выбирается и печатается случайное число - 25-124 - требуемое время прибытия.
70-90 - Запрашивается и проверяется на допустимость скорость путешествия - 0-1.
100-110 - Запрашивается дальность полета.
120 - Вычисляется время путешествия по корабельному времени.
130 - Вычисляется время, прошедшее на Земле.
140-160 - Печатаются результаты.
170 - Проверяется, не умерли ли вы от старости, если да - 210.
180-210 - Проверяется, не слишком ли вы ошиблись. Печатаются результаты.

5 RANDOMIZE TIMER
10 CLS
20 PRINT "TRIP INTO THE FUTURE"
30 T=INT(RND*100+25)
40 PRINT "YOU WISH TO RETURN";T
50 PRINT "YEARS IN THE FUTURE."
60 PRINT
70 PRINT "SPEED OF SHIP (0-1)"
80 INPUT V
90 IF V>=1 OR V<=0 THEN GOTO 70
100 PRINT "DISTANCE OF TRIP"
110 INPUT D
120 T1=D/V
130 T2=T1/SQR(1-V*V)
140 PRINT "YOU TOOK";T1;"YEARS"
150 PRINT "AND ARRIVED";T2;"YEARS"
160 PRINT "IN THE FUTURE."
170 IF T1>50 THEN GOTO 210
180 IF ABS(T-T2)<=5 THEN PRINT "YOU ARRIVED ON TIME"
190 IF ABS(T-T2)>5 THEN PRINT "NOT EVEN CLOSE"
200 END
210 PRINT "YOU DIED ON THE WAY"
220 END

ЗАДАЧА
Как изменить программу, чтобы...
1) ...увеличить диапазон прошедших на Земле лет;
2) ...увеличить требование к точности попадания (до 2-х лет);
3) ...изменить продолжительность жизни космонавта?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:45 am

DEATH VALLEY

Есть только один способ спастись от злобных Dissectitrons. Вы должны собрать нервы в комок и пролететь на своем одноместном стрелолете сквозь ужасное ущелье - Долину Смерти.

Компьютер спросит у Вас ширину долины. Рекомендуется 15 [на VIC 20 - от 6 до 10], 8 - это очень сложно. Управляйте вашим стрелолетом клавишами "Q" - влево - и "P" - вправо. Удастся ли вам благополучно пролететь?

КАК РАБОТАЕТ ПРОГРАММА

20 - Счетчик пройденного расстояния устанавливается в 0.
30 - Устанавливается длина маршрута - M.
40-60 - Запрашивается ширина трассы, делится пополам (с отбрасыванием дробной части).
70-90 - L, Y и R - расстояния межу стенами и стрелолетом.
100 - Выбирается случайное смещение стен - -1, 0 или +1 - и помещается в D.
110 - Проверяется, не вышла ли трасса за пределы экрана.
120-140 - Стены смещаются.
150-170 - Печатается левая стенка (L пробелов от края экрана). (Точка с запятой не дает курсору перейти в следующую строку).
180-200 - Печатается стрелолет (Y пробелов от стены).
210-230 - Печатается правая стена (R пробелов от стрелолоета). (Без точки с запятой - строка переводится).
240 - Проверяется, была ли нажата клавиша.
250 - Если не была нажата "Q", передать управление строке 280.
260-270 - Движение влево - Y уменьшается, R увеличивается.
280 - Если не была нажата "P", 310.
290-300 - Движение вправо - Y увеличивается, R уменьшается.
310 - Проверяется, не было ли столкновения со стеной. Если было - 370.
320 - Счетчик пройденного расстояния увеличивается.
330 - Переход к следующему шагу - к строке 100, если еще не пройден весь маршрут.
340-350 - Печать сообщения об успешном прохождении.
1000-1040 - Подпрограмма печати нужного числа пробелов.

5 RANDOMIZE TIMER
10 PRINT "DEATH VALLEY"
20 S=0
30 M=200
40 PRINT "WIDTH?"
50 INPUT W
60 W=INT(W/2)
70 L=10
80 Y=W
90 R=W
100 D=INT(RND*3-1)
110 IF L+D<0 OR L+D>20 THEN GOTO 100
120 L=L+D
130 Y=Y-D
140 R=R+D
141 FOR J=1 TO 1000
142 NEXT J
150 N=L
160 GOSUB 1000
170 PRINT "I";
180 N=Y
190 GOSUB 1000
200 PRINT "*";
210 N=R
220 GOSUB 1000
230 PRINT "I"
240 I$=INKEY$
250 IF I$<>"Q" THEN GOTO 280
260 Y=Y-1
270 R=R+1
280 IF I$<>"P" THEN GOTO 310
290 Y=Y+1
300 R=R-1
310 IF Y<1 OR R<1 THEN GOTO 370
320 S=S+1
330 IF S<M THEN GOTO 100
340 PRINT "WELL DONE-YOU MADE IT"
350 PRINT "THROUGH DEATH VALLEY"
360 END
370 PRINT "YOU CRASHED INTO THE WALL"
380 PRINT "AND DISINTEGRATED"
390 END
1000 IF N=0 THEN RETURN
1010 FOR I=1 TO N
1020 PRINT " ";
1030 NEXT I
1040 RETURN

[КАК ЗАМЕДЛИТЬ ИГРУ
Если программа слишком быстра, нужно добавить строки:

141 FOR J=1 TO 100
142 NEXT J

<Я это уже сделал.- G.>
Число в конце строки 141 управляет скоростью, чем оно меньше, тем скорость больше].

ЗАДАЧА
Как удлинить маршрут?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:46 am

SPACE MINES

Вы - недавно избранный лидер горнодобывающей колонии на планете Astron. Теперь вам принимать все решения о продаже руды, закупке продовольствия, количестве шахт. Сможете оправдывать возложенные на вас надежды колонистов в течение десяти лет, или приведете их к катастрофе?

<Игра для сборника несколько чужеродная. Нет легкости и естественности BASIC-решений.- G.>

КАК РАБОТАЕТ ПРОГРАММА
10-50 - Случайно устанавливаются начальные условия: число шахт (L), число колонистов (P), количество денег (M), цена на продукты (FP) и производительность шахт (CE). <FP в игре не используется.- G.>
60 - Начальный запас руды - 0.
70 - Довольство колонистов (S) - 1.
80 - Счетчик лет - 1.
90 - Определяется цена на шахты.
100 - Определяется цена на руду.
110-230 - Печатается отчет о состоянии колонии.
240-260 - Запрашивается и проверяется количество продаваемой руды.
270 - Руда забирается со склада.
280 - Вычисляется вырученная сумма.
290-330 - Тоже для продажи шахт.
340-360 - Печатается текущее количество денег.
370-390 - Запрашивается количество покупаемого продовольствия.
400 - Проверяется, хватит ли денег.
410 - Покупка оплачивается.
420-430 - Вычисляется довольство колонистов в зависимости от питания.
440-460 - Запрашивается и проверяется количество покупаемых шахт.
470 - Увеличивается количество шахт.
480 - Покупка оплачивается.
490 - Если довольство (S) слишком уменьшилось, управление передается на строку 660 - конец игры.
500 - Если S велико, производительность шахт растет.
510 - Если S мало - падает.
520 - Если на каждую шахту не набрать по 10 колонистов - 680 - конец игры.
530 - Если S велико, колонистов прибывает.
540 - Если S мало - убывает.
550 - Если остается меньше 30 колонистов - 700 - конец игры.
560-580 - Случайная неприятность - половина колонистов гибнет.
590-610 - Если производительность шахт слишком вырастает, цена на руду падает вдвое (что имитируется уполовиниванием той же производительности).
620-630 - Счетчик лет увеличивается, и, если еще меньше 11, начинается новый - 90.
640 - Печатается сообщение о выигрыше.

5 RANDOMIZE TIMER
10 L=INT(RND*3+5)
20 P=INT(RND*60+40)
30 M=INT(RND*50+10)*P
40 FP=INT(RND*40+80)
50 CE=INT(RND*40+80)
60 C=0
70 S=1
80 Y=1
90 LP=INT(RND*2000+2000)
100 CP=INT(RND*12+7)
110 CLS
120 PRINT "YEAR";Y
130 PRINT
140 PRINT "THERE ARE";P;"PEOPLE IN THE COLONY"
150 PRINT "YOU HAVE ";L;"MINES, AND $";M
160 PRINT "SATISFACTION FACTOR";S
170 PRINT
180 PRINT "YOUR MINES PRODUCED";CE;"TONS EACH"
190 C=C+CE*L
200 PRINT "ORE IN STORE=";C;"TONS"
210 PRINT "SELLING"
220 PRINT "ORE SELLING PRICE=";CP
230 PRINT "MINE SELLING PRICE=";LP;"/MINE"
240 PRINT "HOW MUCH ORE TO SELL?"
250 INPUT CS
260 IF CS<0 OR CS>C THEN GOTO 240
270 C=C-CS
280 M=M+CS*CP
290 PRINT "HOW MANY MINES TO SELL?"
300 INPUT LS
310 IF LS<0 OR LS>L THEN GOTO 290
320 LET L=L-LS
330 LET M=M+LS*LP
340 PRINT
350 PRINT "YOU HAVE $";M
360 PRINT
370 PRINT "BUYING"
380 PRINT "HOW MUCH TO SPEND ON FOOD? (APPR. $100 EA.)"
390 INPUT FB
400 IF FB<0 OR FB>M THEN GOTO 380
410 M=M-FB
420 IF FB/P>120 THEN S=S+.1
430 IF FB/P<80 THEN S=S-.2
440 PRINT "HOW MANY MORE MINES TO BUY?"
450 INPUT LB
460 IF LB<0 OR LB*LP>M THEN GOTO 440
470 L=L+LB
480 M=M-LB
490 IF S<.6 THEN GOTO 660
500 IF S>1.1 THEN CE=CE+INT(RND*20+1)
510 IF S<.9 THEN CE=CE-INT(RND*20+1)
520 IF P/L<10 THEN GOTO 680
530 IF S>1.1 THEN P=P+INT(RND*10+1)
540 IF S<.9 THEN P=P-INT(RND*10+1)
550 IF P<30 THEN GOTO 700
560 IF RND>.01 THEN GOTO 620
570 PRINT "RADIOACTIVE LEAK....MANY DIE"
580 P=INT(P/2)
590 IF CE<150 THEN GOTO 620
600 PRINT "MARKET GLUT - PRICE DROPS"
610 CE=INT(CE/2)
620 Y=Y+1
630 IF Y<11 THEN GOTO 90
640 PRINT "YOU SURVIVED YOUR TERM OF OFFICE"
650 END
660 PRINT "THE PEOPLE REVOLTED"
670 END
680 PRINT "YOU'VE OVERWORKED EVERYONE"
690 END
700 PRINT "NOT ENOUGH PEOPLE LEFT"
710 END

ЗАДАЧА
Как, в случае победы, предложить начать новую игру, но сохранить при этом деньги?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:48 am

SPACE RESCUE

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

При пробуждении вы получите сообщение о результатах полета, и, если удалось долететь, и вы встали на орбиту планеты, нужно будет распределить энергию между посадочными двигателями и щитами...

Если все получится, может, вы сделаете еще один шаг к званию космического адмирала. Удачи!

<Достаточно странная двухходовка, где и поиграть-то толком не дают. Скорее, генератор приключений.- G.>

5 RANDOMIZE TIMER
10 CLS
20 PRINT "SPACE RESCUE"
30 PRINT
40 PRINT "DO YOU NANT INSTRUCTIONS?"
50 INPUT I$
60 IF LEFT$(I$,1)="Y" THEN GOSUB 1000
70 D=INT(RND*800+101)
80 E=INT(RND*400+401)
90 T=INT(D/SQR(E/5)+.5)
100 PRINT "THE PLANET IS";D;"UNITS AWAY"
110 PRINT "YOU HAVE";E;"UNITS OF ENERGY"
120 PRINT "AND A TIME LIMIT OF";T;"DAYS"
130 PRINT
140 PRINT "ENERGY DISTRIBUTIONS"
150 PRINT "TO ENGINES?"
160 INPUT P
170 PRINT "TO LIFE SUPPORT?"
180 INPUT L
190 PRINT "TO SHIELDS?"
200 INPUT S
210 IF P+L+S>E THEN GOTO 140
220 X=E-P-L-S
230 V=INT(SQR(P))
240 T1=INT(D/V)
250 CLS
260 PRINT "YOUR VELOCITY IS";V
270 PRINT "YOU HAVE AN ETA OF";T1;"DAYS"
280 PRINT
290 FOR I=1 TO INT(RND*5+6)
300 IF RND>.5 THEN GOTO 430
310 ON INT(RND*4+1) GOTO 320,350,380,410
320 PRINT "ASTEROID STORM - SHIELDS DAMAGED"
330 S=S-20-INT(RND*40+1)
340 GOTO 430
350 PRINT "COMPUTER BREAKDOWN - DELAY IN REPAIRING"
360 D=D+INT(RND*20+1)
370 GOTO 430
380 PRINT "ENGINE TROUBLE - MUST SLOW DOWN"
390 LET V=V-.5
400 GOTO 430
410 PRINT "X-RAY DAMAGE - LIFE SUPPORT DAMAGED"
420 L=L-20-INT(RND*40+1)
430 FOR J=1 TO 5000
440 NEXT J
450 NEXT I
460 T1=INT(D/V)
470 CLS
480 PRINT "ARRIVED IN";T1;"DAYS"
490 IF S<0 THEN PRINT "SHIELDS DESTROYED"
495 IF S<0 THEN PRINT "YOU WERE BLOWN UP"
500 IF L<=0 THEN PRINT "LIFE SUPPORT INACTIVE"
505 IF L<=0 THEN PRINT "YOU'RE DEAD"
510 IF V<=0 THEN PRINT "ENGINES ARE NON-FUNCTIONAL"
520 IF T1>T THEN PRINT "YOU TOOK TOO LONG ABOUT'IT"
530 IF S<0 OR L<=0 OR V<=0 OR T1>T THEN END
540 G=INT(RND*10+5)
550 G$="HIGH"
560 IF G<12 THEN G$="MEDIUM"
570 IF G<B THEN G*="LOW"
580 A=INT(RND*10+5)
590 A$="HIGH"
600 IF A<12 THEN A$="MEDIUM"
610 IF A<8 THEN A$="LOW"
620 PRINT
630 PRINT "YOU ARE NOW ORBITING THE PLANET"
640 PRINT "SURPLUS ENERGY=";X
650 PRINT "GRAVITY IS ";G$
660 PRINT "ATMOSPHERE IS "; A$
670 PRINT
680 PRINT "HOW MUCH ENERGY TO BOOSTERS?"
690 INPUT B
700 PRINT "HOW MUCH ENERGY TO HEAT SHIELDS?"
710 INPUT S
720 IF B+S>X THEN GOTO 680
730 CLS
740 IF B>=G*10 THEN GOTO 770
750 PRINT "VOU MADE A NEW CRATER"
760 END
770 IF S>=A*10 THEN GOTO 800
780 PRINT "YOU MADE A WONDERFUL SHOOTING STAR"
790 END
800 PRINT "YOU LANDED SUCCESSFULLY - WELL DONE"
810 IF X-S-B>25 THEN END
820 PRINT "PITY YOU DON'T HAVE ENOUGH"
830 PRINT "ENERGY TO OPEN THE DOOR"
840 END
1000 PRINT
1010 PRINT "YOU ARE ABOUT TO EMBARK ON A"
1020 PRINT "MISSION TO A DISTANT PLANET"
1030 PRINT "IN URGENT NEED OF MEDICAL"
1040 PRINT "SUPPLIES. YOU MUST FIRST READY"
1050 PRINT "YOUR SHIP FOR THE TRIP BY"
1060 PRINT "ALLOCATING SOME OF THE SHIP'S"
1070 PRINT "ENERGY TO THE ENGINES,SHIELDS"
1060 PRINT "AND LIFE-SUPPORT. YOU ARE"
1090 PRINT "THEN PUT TO SLEEP FOR THE MAIN"
1100 PRINT "PART OF THE TRIP, AFTER WHICH"
1110 PRINT "YOU WILL GET A REPORT OF THE"
1120 PRINT "EVENTS ON THE WAY. YOU MUST"
1130 PRINT "THEN LAND ON THE PLANET....."
1140 PRINT "PRESS ANY KEY"
1150 IF INKEY$="" THEN GOTO 1150
1160 CLS
1170 RETURN

ЧТО ДОБАВИТЬ
Возможно, вам захочется к существующим двум частям (перелет и посадка) добавить и третью - опасное путешествие от места посадки к штаб-квартире Межгалактического Красного Креста.
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:48 am

TOUCHDOWN

Космический ас - Captain Flash - сидит рядом с вами, поскольку вы сдаете важнейший экзамен - Тест на Уверенное Владение Космолетом (Часть III). Ваше легкое двухместное посадочное средство быстро приближается к Лунной поверхности. Вы легко увеличиваете тягу клавишей "A" и уменьшаете клавишей "D", наблюдая ход полета на экране. Если вы будете слишком газовать, корабль начнет подниматься, слишком снизите тягу - получится новый лунный кратер. Сумеете ли вы впечатлить своего инструктора?

[Игра использует графику, но, т.к. все машины рисуют по-своему, программы для разных BASIC отличаются очень сильно].

<Главная проблема GWBASIC - сложности с возвратом из графического режима обратно в текстовый режим. В самом же графическом режиме исправление программ и ввод команд практически невозможны. При любой остановке по ошибке приходится перезапускать GWBASIC.- G.>

5 RANDOMIZE TIMER
10 SCREEN 1,1:CLS
30 DEF FNR(X)=INT(RND*X+1)
40 GOSUB 250
50 GOSUB 300
60 C=3:GOSUB 390
70 A=1:B=F:GOSUB 460
80 A=2:B=ABS(V):GOSUB 460
90 A=3:B=H:GOSUB 460
100 A=4:B=T:GOSUB 460
110 GOSUB 530
120 V1=V-T/20+G:F=F-T/10
130 H1=H-(V+V1)/10
140 C=0:GOSUB 390
150 IF H1<0 THEN 200
160 H=H1:V=V1
170 IF H<=100 THEN 60
180 GOSUB 590
190 GOTO 220
200 H=0:C=3:GOSUB 390
210 GOSUB 660
220 F$=INKEY$:IF F$="" THEN GOTO 220
230 SCREEN 2:CLS
240 SCREEN 0:CLS:END
250 H=100:F=100:T=0
260 V=5+FNR(10)
270 G=(FNR(40)+40)/100
280 RETURN
300 PSET (0,155),3
310 FOR X=5 TO 279 STEP 5
320 LINE -(X,159-FNR(10)),3
330 NEXT X
335 FOR I=1 TO 30:PSET(FNR(279),FNR(150)),3
337 NEXT I
340 LOCATE 21,34:PRINT "G=";G
350 LOCATE 21:PRINT "FUEL:":PRINT "VEL:"
360 PRINT "HEIGHT:":PRINT "THRUST:";
370 RETURN
390 Y=(100-H)*1.3
410 LINE (140,Y)-(120,Y+10),C
420 LINE -(120,Y+20),C:LINE -(160,Y+20),C
430 LINE -(160,Y+10),C:LINE -(140,Y),C
435 LINE (155,Y+20)-(160,Y+25),C
437 LINE (125,Y+20)-(120,Y+25),C
440 RETURN
460 LOCATE 20+A,8
470 PRINT STRING$(B/4,219);SPACE$(26-B/4);
510 RETURN
530 FOR J=1 TO 3000
533 I$=INKEY$:IF I$<>"" THEN 540
537 NEXT J
540 IF I$="A" THEN T=T+4:IF T>100 THEN T=100
550 IF I$="D" THEN T=T-4:IF T<0 THEN T=0
560 IF T>F THEN T=F
570 RETURN
580 CLS: LOCATE 23
600 PRINT "LOST IN SPACE" "
640 RETURN
660 CLS: LOCATE 22
670 PRINT "LANDED AT VEL";INT((V+V1)*5)/10
680 IF (V+V1)<8 THEN 700
690 PRINT "ALL DEAD":RETURN
700 PRINT "SAFELY":RETURN
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:50 am

*** COMPUTER BATTLEGAMES / 1982 ***

ROBOT MISSILE

2582-й год. Люди Земли воюют против роботов. Только что приземлилась смертельная Ракета Роботов, и спасти всех можете только вы - найдя секретный код, отпирающий ее, чтобы разрядить. Если вы не сумеете, Главный Штаб Земного Командования будет взорван.

Ваш компьютер знает код - букву. И сообщит вам, угадали ли вы, или буква младше/старше по алфавиту. Есть всего четыре попытки угадать букву до того, как ракета взорвется.

КАК РАБОТАЕТ ПРОГРАММА
10-70 - Печать заголовка и инструкций.
80 - Случайно выбирается число, переводится в букву ("секретный код") и помещается в C$.
90 - Начало цикла, повторяющего строки 100-140 4 раза.
100 - Помещает введенную букву в G$.
110 - Проверяет, совпадает ли она с "секретным кодом". Если да - управление передается на строку 220.
120-140 - Печатается взаимное расположение в алфавите этих букв.
150 - Конец цикла, переход к следующей попытке.
160-200 - Печатается сообщение о поражении.
220-230 - Печатается сообщение о победе.

5 RANDOMIZE TIMER
10 PRINT "ROBOT MISSILE"
20 PRINT
30 PRINT "TYPE THE CORRECT CODE"
40 PRINT "LETTER (A-Z) TO"
50 PRINT "DEFUSE THE MISSILE."
60 PRINT "YOU HAVE 4 CHANCES"
70 PRINT
80 LET C$=CHR$(65+INT(RND*26))
90 FOR G=1 TO 4
100 INPUT G$
110 IF G$=C$ THEN GOTO 210
120 IF G$<C$ THEN PRINT "LATER";
130 IF G$>C$ THEN PRINT "EARLIER";
140 PRINT " THAN ";G$
150 NEXT G
160 PRINT
170 PRINT "BOOOOOOOOMMM..."
180 PRINT "YOU BLEW IT."
190 PRINT "THE CORRECT CODE WAS ";C$
200 END
210 PRINT "TICK...FZZZZ...CLICK..."
220 PRINT "YOU DID IT"
230 END

ЧТО ДОБАВИТЬ
Вы можете драматизировать победное сообщение, если победа достигнута в последний момент:

220 PRINT "YOU DID IT";
225 IF G=4 THEN PRINT " (JUST)"

ЗАДАЧА
Как изменить шанс правильного угадывания?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:50 am

THE VITAL MESSAGE

Вы - оператор лазерной связи. Ваша задача - перехватывать сообщения роботов и передавать их в штаб-квартиру командования. Ожидается передача жизненно важного сообщения. Если вы передадите его правильно, атака роботов будет сорвана.

Программа проверяет, как быстро вы запоминаете группы литер. Уровень сложности - число букв (4-10) - настраивается. Группа букв появляется на короткое время в левом верхнем углу экрана. Вы должны их запомнить и затем воспроизвести, а компьютер проверит.

КАК РАБОТАЕТ ПРОГРАММА
10 - Очистка экрана перед началом игры.
40-50 - Запрашивается уровень сложности, помещается в D.
60 - Проверяется, чтобы он был в пределах от 4 до 10.
70 - Генерация секретного сообщения - M$ - начинается со строки, не содержащей букв.
80-100 - Цикл добавления в M$ случайных букв повторяется D раз.

[Большинство компьютеров использует таблицу кодировки ASCII, но некоторые, например, ZX81 - другую].

110-140 - Очистка экрана и печать сообщения.
150-160 - Сообщение сохраняется на экране пока крутится цикл задержки (число повторов зависит от D).
170 - Очистка экрана.
180 - Запрашивается версия сообщения игрока - N$.
190 - Проверяется, правильный ли ответ дал игрок, в случае удачи управление передается в строку 250.
200-220 - Печатается сообщение об ошибке и правильный ответ.

5 RANDOMIZE TIMER
10 CLS
20 PRINT "VITAL MESSAGE"
30 PRINT
40 PRINT "HOW DIFFICULT (4-10)";
50 INPUT D
60 IF D<4 OR D>10 THEN GOTO 40
70 M$=""
80 FOR I=1 TO D
90 LET M$=M$+CHR$(65+INT(RND*26))
100 NEXT I
110 CLS
120 PRINT "SEND THIS MESSAGE:"
130 PRINT
140 PRINT M$
150 FOR I=1 TO D*3000
160 NEXT I
170 CLS
180 INPUT N$
190 IF N$=M$ THEN GOTO 240
200 PRINT "YOU GOT IT WRONG"
210 PRINT "YOU SHOULD HAVE SENT:"
220 PRINT M$
230 END
240 PRINT "MESSAGE CORRECT"
250 PRINT "THE WAR IS OVER"
280 END

ЗАДАЧА
Как сделать, чтобы сообщение оставалось на экране дольше?

КАК СДЕЛАТЬ СЛОЖНЕЕ
Можно добавить в сообщение и символы пунктуации. Для этого надо изменить строку 90:

90 LET M$=M$+CHR$(48+INT(RND*43))
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:51 am

SHOOTOUT

Вы стоите спина к спине. На счет 10 - поворачиваетесь и стреляете. Кто быстрее? Сможете ли выстрелить первым?

Компьютер дает счет до 10, затем печатает сообщение и дает вам шанс успеть нажать клавишу. Фальстарт считается поражением.

КАК РАБОТАЕТ ПРОГРАММА

50-70 - Цикл отсчитывает и печатает числа от 1 до 10.
65 - Дополнительный цикл задержки для быстрых компьютеров.

[Циклы задержек удобно записывать, как здесь в одну строку, но это невозможно для ZX81].

80-100 - Случайная задержка.
110 - Проверяется, не нажал ли игрок клавишу раньше времени.

[Заметьте, что опрос клавиатуры разными компьютерами делается по-разному: VIC - GET, Apple - PEEK, большинство - INKEY$].

120 - Печатается сообщение-сигнал.
130-150 - Проверка нажатия клавиши делается в цикле, чтобы дать игроку шанс успеть. Если успеет - 190.
160-170 - Печать сообщения о проигрыше (в т.ч. по фальстарту).
190 - Печать сообщения о победе.

5 RANDOMIZE TIMER
10 CLS
20 PRINT "COWBOY SHOOTOUT -"
30 PRINT "YOU ARE BACK TD BACK"
40 PRINT "TAKE 10 PACES..."
50 FOR I=1 TO 10
60 PRINT I;"..";
65 FOR J=1 TO 2000 : NEXT J
70 NEXT I
80 PRINT
90 FOR I=1 TO RND*500
100 NEXT I
110 IF INKEY$<>"" THEN GOTO 170
120 PRINT "HE DRAWS..... ";
130 FOR I=1 TO 500
140 IF INKEY$<>"" THEN GOTO 190
150 NEXT I
160 PRINT "AND SHOOTS."
170 PRINT "YDU ARE DEAD."
180 END
190 PRINT "BUT YOU SHOOT FIRST."
200 PRINT "YOU KILLED HIM."
210 END

КАК ИЗМЕНИТЬ СКОРОСТЬ ИГРЫ
Время на нажатие клавиши регулируется последним числом в строке 130. Меньше число - короче временной промежуток.

КАК СДЕЛАТЬ СЛОЖНЕЕ
Вы можете ввести промахи - изменить строку 140:

140 IF INKEY$<>"" THEN GOTO 220

и добавить строки:

220 IF RND>.3 THEN GOTO 190
230 PRINT "BUT YOU MISSED"
240 GOTO 90

ЗАДАЧА
Как добавить возможность промахов компьютеру?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:52 am

DESERT TANK BATTLE

Последняя большая база роботов за пределами их U.R.S. (United Robot States) - скрыта в древних руинах замка посреди пустыни. Подразделение пустынных ховертанков под вашим командованием послано на ее уничтожение. У вас осталось пять последних ракет.

Вы должны тщательно выбрать направление каждой ракеты. Компьютер предлагает выбрать направление от -90 (самое левое) до 90 (самое правое) и угол возвышения от 0 (параллельно земле) до 90 (вертикально в воздух). Угол возвышения определяет дальность выстрела. Сможете ли вы уничтожить цитадель роботов?

КАК РАБОТАЕТ ПРОГРАММА
20 - Выбирается случайное направление (-90 - 90).
30 - Выбирается случайное расстояние (0-1).
40-80 - Запрашивается вариант игрока.
90 - Вычисляется дальность выстрела игрока.
100 - Если направления отличаются не более, чем на 2, а дальности - не более, чем 0.05, замок роботов поражен и управление передается на строку 220.

[ABS означает абсолютную величину числа, без учета его знака].

110-130 - Печатается сообщение о промахе по направлению.

[Точка с запятой позволяет не переводить строку при печати].

140 - Если необходимо, печатается связка "and".
150-160 Печатается сообщение о промахе по дальности.
190-200 Печать сообщения о проигрыше.
220-230 Печать сообщения о победе.

5 RANDOMIZE TIMER
10 PRINT "DESERT TANK BATTLE"
20 T=INT(RND*181)-90
30 D=RND
40 FOR G=1 TO 5
50 PRINT "DIRECTION (-90 TO 90)";
60 INPUT T1
70 PRINT "ELEVATION (0 TO 90)";
80 INPUT B
90 D1=SIN(2*(B/180*3.1416))
100 IF ABS(T-T1)<2 AND ABS(D-D1)<.05 THEN GOTO 220
110 PRINT "MISSILE LANDED ";
120 IF T1<T THEN PRINT "TO THE LEFT ";
130 IF T1>T THEN PRINT "TO THE RIGHT ";
140 IF ABS(D1-D)>.05 AND T1<>T THEN PRINT "AND ";
150 IF D-D1>.05 THEN PRINT "NOT FAR ENOUGH";
160 IF D1-D>.05 THEN PRINT "TOO FAR";
170 PRINT
180 NEXT G
190 PRINT "DISASTER - YOU FAILED"
200 PRINT "RETREAT IN DISGRACE"
210 END
220 PRINT "*KABDOOMMM*"
230 PRINT "YOU'WE DONE IT"
240 END

[Оператор присваивания в ZX81 и Spectrum требует обязательного префикса LET. Остальные его допускают опционально].

ЗАДАЧА
Как добавить роботам возможность отстреливаться?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:52 am

BATTLE AT TRAITOR'S CASTLE

Король ведет жестокую и кровавую битву со своим смертельным врагом - Бароном-Предателем. Вы - один из королевских лучников и сейчас занимаете позицию в кустах около замка барона, отстреливая охранников, высовывающих головы из-за зубчатых стен.
Компьютер печатает строки из восьми точек и одной "O". Позиция "О" в строке может быть от 1 до 9. И вы должны быстро успеть нажать соответствующую клавишу, чтобы попасть в цель, пока она не исчезла.

Сколько людей барона вы сможете поразить?

КАК РАБОТАЕТ ПРОГРАММА

20 - Счетчик попаданий устанавливается в 0.
30 - Начало цикла на 10 выстрелов.
40 - Создается пустая строка - R$.
50 - Выбирается случайное число от 1 до 9 - T.
60-90 - В цикле добавляются в R$ 9 букв - точек и "O" (в позиции T).
100 - Строка R$ печатается.
110-120 - Цикл ожидания нажатия клавиши. (Конец цикла - строка 140).
130 - Проверяется, была ли нажата нужная клавиша, если да - 170.
150-160 - Печатается сообщение о промахе, далее - 190.
180 - Увеличивается счетчик попаданий.

[Этом механизм подсчета очков {строки 20 и 180) универсален. Можете его добавлять к своим программам].

190 - Переход к следующему выстрелу.
200 - Печатается счетчик попаданий.

5 RANDOMIZE TIMER
10 PRINT "TRAITOR'S CASTLE"
20 S=0
30 FOR G=1 TO 10
40 R$=""
50 T=INT(RND*9+1)
60 FOR L=1 TO 9
70 IF L=T THEN R$=R$+"O"
80 IF L<>T THEN R$=R$+"."
90 NEXT L
100 PRINT R$,
110 FOR I=1 TO 1800
120 I$=INKEY$
130 IF VAL("0"+I$)=T THEN GOTO 170
140 NEXT I
150 PRINT "MISSED"
160 GOTO 190
170 PRINT "GOOD SHOT"
180 S=S+1
190 NEXT G
200 PRINT "YOU HIT";S;"OUT OF 10"
210 END

КАК ИЗМЕНИТЬ СКОРОСТЬ ИГРЫ
Скорость регулируется изменением последнего числа в строке 110.

ЗАДАЧА
Как изменить программу для того, чтобы получить два вида целей - "O" (обычные солдаты за 1 очко) и "S" (специальные гвардейцы за 5 очков)?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:53 am

ROBOT INVADERS

Вы должны действовать быстро. Роботы всех видов атакуют. Вы должны защищаться точно тем оружием, которое подходит для данного вида.

Кодовые символы роботов появляются на экране. Нужно успеть нажать соответствующую клавишу.

КАК РАБОТАЕТ ПРОГРАММА
20 - Счетчик попаданий устанавливается в 0.
30 - Начало цикла на 25 выстрелов.
40-50 - Случайная задержка.
60-70 - Выбирается случайная позиция на экране.
80 - Выбирается случайный символ.
90 - Очистка экрана.
100-120 - Курсор помещается в строку выбранной позиции.
130 - Выбранный символ печатается в выбранной позиции.
140-180 - В цикле проверяется нажатие клавиши. Проверяется правильность нажатия.
220 - Увеличивается счетчик попаданий.
230 - Переход к следующему выстрелу.
250 - Печатается счетчик попаданий.

5 RANDOMIZE TIMER
10 PRINT "ROBOT INVADERS"
20 H=0
30 FOR T=1 TO 25
40 FOR I=1 TO INT(RND*3000+2000)
50 NEXT I
60 A=INT(RND*79)
70 D=INT(RND*23)
80 P$=CHR$(INT(RND*43+48 ))
90 CLS
100 FOR J=0 TO D
110 PRINT
120 NEXT J
130 PRINT TAB(A);P$
140 FOR I=1 TO 4000
150 R$=INKEY$
160 IF R$=P$ THEN GOTO 210
170 IF R$<>"" THEN GOTO 190
180 NEXT I
190 PRINT "MIS5ED"
200 GOTO 230
210 PRINT "A HIT "
220 LET H=H+1
230 NEXT T
240 CLS
250 PRINT "YOU SCORED";H;"/25"
260 END

КАК УСКОРИТЬ ИГРУ
Уменьшить последнее число в строке 140.

[ПЕРЕМЕЩЕНИЕ КУРСОРА
Многие компьютеры имеют более удобные средства позиционирования курсора на экране].

ЗАДАЧА
Эти роботы наиболее опасны: U - Medians, V - Tintroids, W - Scrapions, X - Wireheads, Y - Steeleyes.
Как научить программу оценивать их в 100 очков против 10 для обычных?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:53 am

SECRET WEAPON

Если бы вы могли уничтожить Главный Склад Запчастей роботов, который находится под землей, где-то на восточных пустошах U.R.S., вы бы нанесли роботам огромный ущерб.

Вас снабдили новым секретным оружием, пока еще не известным роботам, которое способно бесшумно прогрызать дорогу сквозь скалу, сметая все на своем пути. Склад роботов очень хитро спрятан. Все, что остается - искать наугад и надеяться, что ближе к цели появятся новые приметы.

Компьютер запрашивает уровень сложности игры (минимум 4) и затем принимает ваши варианты координат. [Вводить координаты надо через нажатие клавиши RETURN, NEWLINE, ENTER или как там еще подтверждается ввод в вашем компьютере].

Для выбора стратегии угадывания внимательно ознакомьтесь с текстом программы.

КАК РАБОТАЕТ ПРОГРАММА
30-50 - Запрашивает и проверяет на допустимость уровень сложности - D.
60-70 - Выбирает случайные координаты X и Y.
80 - Начало цикла попыток (число попыток зависит от D).
90-110 - Запрашивает координаты, предполагаемые игроком - X1 и Y1.
120 - Вычисляется расстояние до цели - Z.

[SQR вычисляет квадратный корень].

130-150 - Оценивается значение Z в терминах близости к цели (0 - попадание).
160 - Переход к следующей попытке.
170-180 - Печать сообщения об исчерпании попыток.
200-210 - Печать сообщения о победе.

5 RANDOMIZE TIMER
10 CLS
20 PRINT "SECRET WEAPON"
30 PRINT "ENTER DIFFICULTY";
40 INPUT D
50 IF D<4 THEN GOTO 30
60 LET X=INT(RND*D+1)
70 LET Y=INT(RND*D+1)
80 FOR G=1 TO D+5
90 PRINT "GUESSES FOR X AND Y"
100 INPUT X1
110 INPUT Y1
120 LET Z=SQR((X-X1)*(X-X1)+(Y-Y1)*(Y-Y1))
130 IF Z=0 THEN GOTO 200
140 IF Z=<3 THEN PRINT "CLOSE"
150 IF Z>3 THEN PRINT "NOT EVEN CLOSE"
160 NEXT G
170 PRINT "THE ROBOTS HAVE SEEN"
180 PRINT "YOU - AGGHHHHH....."
190 END
200 PRINT "YOU DESTROYED IT IN"
210 PRINT G;" GOES"
220 END

ЗАДАЧА
Как добавить к игре систему очков: одно очко за попадание близко к цели, 10 - за точное попадание?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:54 am

ESCAPE!

Роботы вас поймали, заперли и отобрали оружие. Но вы внезапно вспомнили, что звук ваших часов может быть перенастроен на любую частоту. Если вы угадаете резонансную частоту роботов-охранников, то они развалятся от вибрации.

Вы должны выбирать частоту осторожно - от слишком низкой само здание рухнет вам на голову. А слишком высокая парализует вас ужасной головной болью.

Сможете ли вы выбраться из ужасной тюрьмы роботов? (Для выбора стратегии угадывания внимательно ознакомьтесь с текстом программы).

КАК РАБОТАЕТ ПРОГРАММА
30 - Выбирается случайная частота от 1 до 100 и помещается в F.
40-50 - В L и H помещается по 1. Они используются, когда вы попадаете в опасные диапазоны - строки 170-190 и 230-250.
60 - Начало цикла из 5 попыток.
70-80 - Запрашивается вариант игрока - F1.
90 - Проверяется, не было ли близкого попадания. Успех - 290 - печать победного сообщения.
100 - Если частота слишком низкая, управление передается на строку 170.
110 - Если частота слишком высокая - 230.
120-160 - Печатается сообщение о промахе, происходит переход к следующей попытке или печатается сообщение о проигрыше.
170-220 - Проверяется значение L. Если эта строка работает в первый раз, L равно 1. Тогда, в L помещается 2 и печатается сообщение об опасности. Иначе (L уже 2) - 210 - проигрыш.
230-280 - Аналогичные манипуляции с H.

5 RANDOMIZE TIMER
10 CLS
20 PRINT "ESCAPE"
30 F=INT(RND*100+1)
40 L=1
50 H=1
60 FOR G=1 TD 5
70 PRINT "GUESS";
80 INPUT F1
90 IF ABS(F-F1)<5 THEN GOTO 290
100 IF F-F1>40 THEN GOTO 170
110 IF F1-F>40 THEN GOTO 230
120 PRINT "NO VISIBLE EFFECT"
130 NEXT G
140 PRINT "YOU TOOK TOO LONG."
150 PRINT "THE FREQ. WAS";F
160 END
170 IF L=2 THEN GOTO 210
180 PRINT "TOO LOW...CAREFUL"
190 LET L=2
200 GOTO 130
210 PRINT "THE BUILDING COLLAPSED"
220 END
230 IF H=2 THEN GOTO 270
240 PRINT "TOO HIGH...OUCH"
250 LET H=2
260 GOTO 130
270 PRINT "YOUR HEAD ACHES - GIVE UP"
280 END
290 PRINT "YOU'VE 'DONE IT"
300 END

КАК СДЕЛАТЬ СЛОЖНЕЕ
Заменить число 5 в строке 90 на меньшее. Это будет означать частоту надо угадывать точнее. Или увеличьте диапазон частот.

ЗАДАЧА
Как переделать игру, чтобы у трех роботов-охранников у каждого была своя резонансная частота?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:55 am

PIRATE DOGFIGHT

Вы против Небесного Пирата. Он вырывается вперед - вы ускоряетесь, он отстает - вы тормозите. Вы пытаетесь поравняться с ним, чтобы открыть огонь, и надеетесь, что он не выстрелит первым.

Клавиша "А" - увеличить скорость, "D" - уменьшить, "F" - стрелять. Компьютер информирует вас о взаимном положении и отношении скоростей. Вы должны быть готовы сразу нажимать на клавиши, как только запустите программу. Нажимайте "A" и "D" пока не приблизитесь к пирату - и атакуйте.

КАК РАБОТАЕТ ПРОГРАММА
30 - Выбирается случайная скорость относительно пиратской (-5 - +5) и помещается в Y.
40 - Выбирается случайная дистанция до пирата и помещается в S. Она в начале отрицательна - вы позади пирата.
50 - Проверяется, не выросла ли дистанция до 20. В этом случае управление передается на строку 230 - пират теряется из виду.
70-140 - Печатается описание ситуации.
150-180 - Проверяется, были ли нажатия клавиш. "A" увеличивает скорость на 1. "D" - уменьшает. Если нажата "F" и дистанция равна нулю, управление прередается на строку 250.
190 - Рассчитывается новая дистанция.
200-210 - Задержка.
220 - Переход к следующему шагу моделирования.
250 - Попытка завязать бой. Если разница скоростей незначительна - 230.
260-280 - Печатается сообщение о неудаче атаки (скорости слишком различны), и управление передается на строку 40 - случайное определение дистанции.
290 - Случайно решается исход боя.
300-330 - Печать сообщения об исходе боя.

5 RANDOMIZE TIMER
10 CLS
20 PRINT "PIRATE DDSFIGHT"
30 V=INT(RND*11-5)
40 S=-INT(RND*3+1)
50 IF ABS(S)>20 THEN GOTO 230
60 CLS
70 PRINT "YOU ARE ";
80 IF S<0 THEN PRINT "BEHIND"
90 IF S>0 THEN PRINT "AHEAD"
100 IF S=0 THEN PRINT "LEVEL"
110 PRINT "YOU ARE GOING ";
120 IF V>0 THEN PRINT "FASTER"
130 IF V<0 THEN PRINT "SLOWER"
140 IF V=0 THEN PRINT "SAME"
150 I$=INKEY$
160 IF I$="A" THEN V=V+1
170 IF I$="D" THEN V=V-1
180 IF I$="F" AND S=0 THEN GOTO 250
190 LET S=S+V
200 FOR I=1 TO 5000
210 NEXT I
220 GOTO 50
230 PRINT "YOU LOST SIGHT OF HIM'
240 END
250 IF ABS(V)<2 THEN GOTO 290
260 PRINT "YOU ONLY MANAGED TO"
270 PRINT "SCARE HIM."
280 GOTO 40
290 IF RND>.7 THEN GOTO 320
300 PRINT "YOU SHOT HIM DOWN"
310 END
320 PRINT "HE SHOT FIRST"
330 END

КАК СДЕЛАТЬ ПРОЩЕ
Добавить две строчки для наглядного представления ситуации:

193 IF ABS(S)>10 THEN GOTO 200
196 PRINT TAB(w/2);"HIM"
197 PRINT TAB(S+w/2);"YOU"

Где w - ширина экрана.

ЗАДАЧА
Как в строке 290 уравнять шансы в бою (сейчас у вас больше).
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:55 am

SUPERSONIC BOMBER

Вас послали на одиночную сверхзвуковую бомбардировку U.R.S. Ваш компьютер показывает графики численности населения роботов, построенных на основе спутниковых инфракрасных фотографий. Вы имеете ограниченное время на выбор из пяти целей самую выгодную - с максимальным населением и атаковать ее бомбами "Corrodarobe". (Они содержат настолько коррозийное вещество, что разъедают тело робота за секунды).

Чтобы сбросить бомбу, нажмите клавишу, соответствующую номеру самой населенной цели. Из двух одинаковых выбирайте ту, чей номер меньше.

Вернетесь ли вы героем?

КАК РАБОТАЕТ ПРОГРАММА
30 - Организуется хранилище данных (массив) - B - содержащий пять ячеек - B(1), B(2), B(3), B(4) и B(5) - по одной для каждой цели.
40 - Счетчик попаданий устанавливается в 0.
50 - Начало цикла на 10 попыток. Здесь счет идет обратно - от 10 до 1. Это сделано для того, чтобы удобнее было считать задержки.
60 - Первая цель помечается приоритетной.
70-100 - Ценность целей назначается случайной. Если текущая ценнее на данный момент приоритетной, она становится приоритетной сама.
110-180 - Печатаются графики.
190-220 - Если игрок успевает нажать клавишу, управление передается на строку 270.
230-260 - Печатается сообщение об опоздании.
270 - Если нажата правильная клавиша, счетчик попаданий увеличивается на 1.
280 - Переход к следующей попытке.
290-330 - Печатается счетчик попаданий.

5 RANDOMIZE TIMER
10 CLS
20 PRINT "SUPERSONIC BOMBER"
30 DIM B(5)
40 S=0
50 FOR G=10 TO 1 STEP -1
60 M=1
70 FOR I=1 TO 5
80 LET B(I)=INT(RND*10+1)
90 IF B(I)>B(M) THEN LET M=I
100 NEXT I
110 CLS
120 FOR 1=1 TO 5
130 PRINT I;
140 FOR J=1 TO B(I)
150 PRINT "**";
160 NEXT J
170 PRINT
180 NEXT I
190 FOR I=1 TO G*3
200 LET I$=INKEY$
210 IF I$<>"" THEN GOTO 270
220 NEXT I
230 PRINT "TOO LATE"
240 FOR J=1 TO 750
250 NEXT J
260 GOTO 280
270 IF VAL(I$)=M THEN LET S=S+1
280 NEXT G
290 PRINT "YOU HIT";S;"OUT OF 10"
300 PRINT "HIGH DENSITY TARGETS"
310 IF S=10 THEN PRINT "YOU'RE A HERO"
320 IF S<10 THEN PRINT "TOUGH - YOU FAILED"
330 END

КАК ИЗМЕНИТЬ СКОРОСТЬ ИГРЫ
Изменяя последнее число в строке 190. По мере тренировки можете его постепенно уменьшать.

ЗАДАЧА
Как увеличить число целей?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Приложение. BASIC 1982. Пара книг издательства USBORNE Empty Re: Приложение. BASIC 1982. Пара книг издательства USBORNE

Сообщение автор Gudleifr Вс Дек 08, 2019 10:56 am

ICEBERG

Ваш корабль ужасно поврежден и практически безоружен. Вы медленно пересекаете опасное ледяное море, зная что встреча с вражеским кораблем означает немедленный конец. Странно, но вражеское судно видит вас, но не айсберги, и есть шанс устроить ему роковое столкновение.

Компьютер выдает вам карту-сетку, на которой показаны ваша ("Y"), вражеская ("Z") и айсбергов ("*") позиции. Вы можете перемещаться на одно деление на Север, Юг, Восток или Запад. Вражеский корабль преследует вас (в т.ч. по диагонали). Оказавшись рядом с ним ваш корабль немедленно уничтожается, как и натолкнувшись на айсберг.

Сумеете ли вы спастись?

КАК РАБОТАЕТ ПРОГРАММА
20 - Вводится массив 8*8 для сетки.
30 - Выбирается случайное число айсбергов (4-11).
40-60 - В цикле все айсберги расставляются случайным образом. [23 на ZXS1 и 42 в ASCII - код звездочки].
70-100 - Случайно выставляется вражеский корабль. [63 - ZX81, 90 - ASCII]. Если он попадает на айсберг - переставляется.
110-140 - Аналогично для корабля игрока. [62, 89].
150-250 - Печатается карта.
260 - Корабль игрока стирается с карты.
270-280 - Запрашивается курс - D$.
290-320 - Считается новая позиция, с учетом границ карты.

[Во всех BASIC "ложь" может использоваться в арифметических выражениях как 0, а, вот, "истина", где -1, а где 1].

330-340 - Проверяется, не натолкнулся ли корабль игрока на врага или айсберг.
350-360 - Корабль игрока ставится на карту.
370-380 - Рассчитывается новая позиция врага.
390-400 - Проверяется, не натолкнулся ли он на игрока или айсберг.
410 - Корабль врага ставится в новую позицию.
420 - Переход к новому ходу.

5 RANDOMIZE TIMER
10 PRINT "ICEBERG"
20 DIM B(8,8 )
30 N=INT(RND*B+4)
40 FOR I=1 TO N
50 B(INT(RND*8+1),INT(RND*8+1))=42
60 NEXT I
70 SX = INT(RND*8+1)
80 SY=INT(RND*8+1)
90 IF B(SX,SY)<>0 THEN GOTO 70
100 B(SX,SY)=90
110 YX = INT(RND*8+1)
120 YY=INT(RND*8+1)
130 IF B(YX,YY)<>0 THEN GOTO 110
140 B(YX,YY)=89
150 CLS
160 FOR Y=1 TO 8
170 FOR X=1 TO 8
180 IF B(X,Y)=0 THEN GOTO 210
190 PRINT CHR$(B(X,Y));
200 GOTO 220
210 PRINT ".";
220 PRINT " ";
230 NEXT X
240 PRINT
250 NEXT Y
260 B(YX,YY)=0
270 PRINT "DIRECTION (N,S,E,W)"
280 INPUT D$
290 YY=YY-(D$="S" AND YY<>8 )
300 YY=YY+(D$="N" AND YY<>1)
310 YX=YX-(D$="E" AND YX<>8 )
320 YX=YX+(D$="W" AND YX<>1)
330 IF B(YX,YY)=90 THEN GOTO 500
340 IF B(YX,YY)=42 THEN GOTO 600
350 B(YX,YY)=89
360 B(SX,SY)=0
370 SX=SX+SGN(YX-SX)
380 SY=SY+SGN(YY-SY)
390 IF B(SX,SY)=89 THEN GOTO 500
400 IF B(SX,SY)=42 THEN GOTO 700
410 B(SX,SY)=90
420 GOTO 150
500 PRINT "YOU'VE BEEN CAUGHT"
510 END
600 PRINT "YOU'VE HIT AN ICEBERG"
610 END
700 PRINT "YOU'RE SAFE - HE'S HIT ONE"
800 END

ЗАДАЧА
Как увеличить размер сетки? Как увеличить число айсбергов?
Gudleifr
Gudleifr
Admin

Сообщения : 3219
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Страница 1 из 2 1, 2  Следующий

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения