48 программ для изучающих Basic 1992 г.

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


1.1 ФОРМИРОВАНИЕ СИМВОЛОВ НА ЭКРАНЕ.

80CLS

90 INPUT'CODE-**

95 LET А-А-32: LET А-А*8

100 FOR l-15616+А ТО 15623+А

110 LET Z- PEEK I

120 LET P-128

130 IF Z<P THEN LET B-0

140 IF Z>- P THEN LET B-1

150 PRINT B;

155 IF B-1 THEN LET Z-Z-P
160 LET P-P/2

170 IF P >-1 THEN GOTO 130
180 PRINT
190 NEXT I

200 INPUT "NEXT? 1-YES ()-NO';C
210 IF C-1 THEN GOTO 80

Программа показывает как формируется изображение символов; на
экране. Задав код символа (начиная с 32) получаем изображение на экране
(например для символа А:

Программа 1.1 Формирование символов.

Как видно на рисунке изображение формируется в воде матрицы 8x8
точек (пикселов). Каждой строке символа соответствует байт в памяти
компьютера. Для хранения целого символа требуется 8 байт, адреса
которых расположены последовательно, начиная с адреса 15616.

Как работает программа?

■ В строке 90 производится ввод код а символа.

■ В строке 95 вычисляется адрес байта, формирующего первую
стоку выбранного символа.

■ В строке 100 записан цикл, обеспечивающий последовательное
обращение к байтам, формирующим все 8 строк изображения
символа.

■ В строке 110 производится выборка значения соответствующего
байта.

■ В строках 120-170 производится вывод на экран значения
выбранного байта в двоичном виде.

■ В строке 180 подготавливается вывод нулей и единиц на
следующей строке экрана.

■ Строки 200-210 позволяют вывести изображение следующего
символа.

1.2 ПРЕОБРАЗОВАНИЕ ДВОИЧНОГО КОДА В
ДЕСЯТИЧНЫЙ.

500 LETZ-0

510 FOR 1-0 ТО 7

520 INPUT "N-";N

523 IF N>1 THEN GO TO 520

525 PRINT N;

530 LET Z-Z+(2"(7-l))*N

540 LET Z- INT (Z+0.5)

550 NEXT I

560 PRINT" ";Z

599 STOP

Программа 1.2 Преобразование двоичного кода в десятичный.

Программа предназначена для преобразования 8-разрядных двоичных
чисел в десятичные. Такое преобразование необходимо
многократно выполнять при программировании графических
символов отличных от стандартных. Как это делается будет
показано в следующем разделе. Работает программа
преобразования кодов следующим образом. В ответ на запрос
программы п= необходимо набрать 8 нулей и единиц, начиная

со старшего разряда. После ввода восьмой цифры будет выведено десятичное
значение числа. Например:

00000011 3
11000011 195

1.3 "МОНСТР".

В БЕЙСИКЕ ZX SPECTRUM предусмотрена замечательная
возможность -программирование графических символов пользователем.
Такими символами могут быть буквы национального алфавита йли любые
другие изображения.

Технология создания изображения нового символа следующая. Сначала
на клетчатой бумаге рисуется требуемый символ размером 8x8 клеток,
подобно изображению символа А на рис. 1.1. Далее с помощью
программы 1.2 вычисляется десятичное значение каждой строки символа.
Для хранения каждого символа в памяти отвод ится 8 байт, расположенных
последовательно.

В эти 8 байт нужно поместить информацию (численное значение)
о строках созд аваемого символа, начиная с верхней. За каждой клавишей
закреплены соответствующие 8 ячеек в оперативной памяти. Выбрав
клавишу, которой будет соответствовать созд аваемый символ, необходимо
определить адреса где будет храниться информация о его изображении.
Выполнив PRINT USR "А" Вы узнаете адрес первой из восьми ячеек
памяти отведенных для хранения изображения соответствующего клавише
А (65368). Нетрудно догадаться, что для создания графического
изображения размером больше 8x8 точек можно использовать несколько
запрограммированных соответствующим образом клавиш. В следующей
программе, рисующей забавного монстра, используется 12 клавиш от А
доЬ. Клавиша А, например, программируется для создания изображения:

Выполнив программу 1.3, Вы увидите как
запрограммированы остальные клавиши. Не забывайте, что
символы A-L необходимо в строках 210-230 вводить в
графическом режиме (курсор О).

100 FOR l-USR "A* TO USR 'MM
ПО READ S: РОКЕ (Д
120 NEXT I

200 as

210 PRINT AT 0,0;*ABCD*
220 PRINT AT 1,0;*EFGH*
230 PRINTAT2,0;"IJKl'

999 STOP

1000 DATA 0,1,96,48,24,13,3,7

1005 DATA 0,129,139,63,127,255,255,135
1010 DATA 0;129,130,252,254,255,255,225
1015 DATA 0,128,6,12,24,176,160,224
1020 DATA 7,15,15,15,7,7,3,1
1025 DATA ЗДЗ,7,207,255,255,255
1030 DATA 192,192,192,224,243,255,255,255
1035 DATA 224,240,240,240,224,224,192,128
1040 DATA 1,1,7,15,15,3,0,0
1045 DATA 255,159,224,248,252,240,0,0
1050 DATA 255,249,7,31,63,31,0,0
1055 DATA 128,128,224,240,240,192,0,0

Профамма 1.3 "Монстр".

Запустите программу выполнив RUN. В левом верхнем углу увидите
изображение монстра. Выведите на эимн листинг программы и обратите
вниманию как изменились строки 210 - 230.

1.4 ДВИЖУЩИЙСЯ "МОНСТР".

Простая модификация программы 1.3 демонстрирует принцип
создания движущихся изображений на экране. Принцип этот прост на
место одной картинки выводится измененная (или смещенная в каком
либо направлении) и делается пауза на требуемое время. В данной
программе пауза формируется в строке 290 с помощью цикла. Изменяя
количество прохождении цикла (в данном случае начальное значение
50) можно peiymqxeaib длительность паузыи, следовательно,
скорость д вижения изображения.

100 FOR l-USR "А* ТО USR "M'-l
110 READS:POKE IS

120 NEXT I

130 TOR l-USR "M* TO USR "Q'-l
140 READ S: POKE l,S
150 NEXT I
200 CLS

210 PRINT AT 0,0;"ABCD*
220 PRINT AT 1,0;*EFGH"
230 PRINT AT 2,0;"IJKL"
250 FOR N-l TO 50: NEXT N
260 PRINT AT 0,0;"ABCD*
270 PRINT AT 1,0;"EMNH"
280 PRINT AT 2,0;"ЮР1"
290 FOR N-1 TO 50: NEXT N
300 GOTO 210

999 PAPER 7: INK 0: STOP: CIS: LIST

1000 DATA 0,1,96,48,24,13,3,7

1005 DATA 0,129,139,63,127,255,255,135
1010 DATA 0,129,130,252,254,255,255,225
1015 DATA 0,128,6,12,24,176,160,240
1020 DATA 7,15,15,15,7,7,3,1
1025 DATA 3,3,3,7,207,255,255,255
1030 DATA 192,192,192,224,243,255,255,255
1035 DATA 224,240,240,240,224,224,192,128
1040 DATA 1,1,7,15,15,3,0,0
1045 DATA 255,159,224,248,252,240,0,0
1050 DATA 255,249,7,31,63,31,0,0
1055 DATA 128,128,224,240,240,192,0,0
1100 DATA 3,3,3,7,207,255,224,224
1110 DATA 192,192,192,224,243,255,7,7
1120 DATA 224,159,224,248,252,240,0,0
1130 DATA 7,249,7,31,63,31,0,0

Программа 1.4 Движущийся "монстр

1.5 ДВИЖЕНИЕ •'МОНСТРА'* ПО ГОРИЗОНТАЛИ.

Программа 1.5 генерирует движущееся по горизонтали изображение
монстра. Запускать ее можно только после объединения программ 1.3
и 1.5 с помощью MERGE в одну. В згой программе каждая последующая
картошка выводится на экран со смещением на одно знакоместо по
горизонтали, после чего формируется пауза.(Строки 250, 290). Начальная
позиция по горизонтали - 0, конечная позиция - 26. Конечная позиция
зависит от ширины картинки и выбирается так, чтобы при движении
картинка не выезжала за край экрана. В нашем случае крайняя правая
позиция вычисляется так: 31-6ав2о. Важным моментом является наличие
пробелов слева и справа от изображения, что обеспечивает стирание
предыдущей картинки последующей, сдвинутой на одно знакоместо.

200 CLS

205 PAPER 4: INK 2
208 FOR U-0 TO 26
210 PRINT AT 0,U;" ABCD "
220 PRINT AT 1,U;" EFGH '
230 PRINT AT 2,U;" IJKL"
250 FOR N-l TO 10 : NEXTN
255 NEXT U

259 FOR U-26 TO 0 STEP -1

260 PRINTAT0,U;eABCD"
270 PRINT AT 1,U;" EFGH"
280 PRINT AT 2,U;" IJKL"

290 FOR N-l TO 10 : NEXT N
295 NEXT U
299 GOTO 208

Программа 1.5 Движение "монстра"no горизонтали.

АЛ УПРАВЛЕНИЕ ДВИЖЕНИЕМ "МОНСТРА".

В следующей программе можно управлять направлением перемещения
монстра. Назначение клавиш:

5 - влево

6 - вниз

7 - вверх

8 - вправо

Программу 1.6 также необходимо объединить с программой 1.3. В
строках 300 - 360 определяется какая клавиша нажата и делается
соответствующее изменение параметров v и и. Подпрограмма (строки 208
- 255) обеспечивает вывод изображения на экран и формирование паузы
определяющей старость перемещения по экрану. В строке 355 выполняется
ожидание нажатия любой клавиши.

200 CLS

205 PAPER 4: INK 2; GOTO 300
208 PRINT AT V-1,U;" *
210 PRINT AT V+0,U;"ABCD"
220 PRINT AT V+1,U;" EFGH *
230 PRINT AT V+2,U;* IJKl"
240 PRINT AT V+3,U;' *
250 FOR N-1 TO 10: NEXT N
255 RETURN

300 LET V-l: LET U-0: GOSUB 208

310 IF INKEY$ -"5" THEN LET U-U-l

315 IF U<0 THEN LET U-0

320 IF INKEY$ -"6" THEN LET V-V+1

325 IF V>17 THEN LET V-17

330 IF INKEY$ -"7" THEN LET V-V-1

335 IF V<1 THEN LET V-l

340 IF INKEY$-"в" THEN LET U-U+l

345 IF U>26 THEN LET U-26

350 GOSUB 208

355 IF INKEY$THEN GOTO 355
360 GOTO 310

Программа 1.6 Управление движением "монстра".

В строках 208 и 240 на экран выводится 6 пробелов. Этот прием
позволяет стирать предыдущую картинку при выводе новой, смещенной на
одну позицию на экране по вертикали. Аналогичным целям служат
пробелы до и после символов ABCD EFGH UKL в строках 210 - 230.

1.7 ТРАЕКТОРИЯ ПАДАЮЩЕГО ТЕЛА.

Программа 1.7 дает наглядное представление о движении
свободного падения. Свободное падение описывается

формулами:

F-GT+F0
Y*G/2*r2+V0*T+Y0

,гдс

VO - начальная скорость
G - ускорение свободного падения

V - скорость
Т - время

Y - координата Y

Y0 - начальная координата Y
Сисгемакоординат, в которой будем рассматривать движение свободного
падения:

Следующая программа программа демонстрирует равноускоренное
движение свободно падающей точки. В строке 130 задается масштаб по
вертикали: s=175/y0, где 175 - число строк по вертикали. Изображение
фиксируется через каждые 0,3 сек. (строка240) на экране. Все положения
падающей точки от у=2000т до От остаются на экране. Вычисление
положения точки выполняется в строке 210, а вывод ее на экран в строке
220. В строке 230 проверяется не стало ли вычисленное значение у меньше
0.

100 LETY0-2000: LETV0-0
110 LET G--10: LET Т-0
120 LET H-Y0
130 LET S-175ДО
140 CLS

210 LETY-G/2TT+V01+Y0
220 PLOT 125,rS
230 IF Y<-0 THEN STOP
240 LET T-T+0.3
250 GOTO 210

Программа 1.7 Траектория падающего тела.

1.8 ВЛИЯНИЕ НАЧАЛЬНОЙ СКОРОСТИ.

Программа 1.8 позволяет исследовать как влияет изменение начальной
скорости на движение брошенного вертикально вверх тела. На экране
в каждый момент времени есть изображение только одной точки, каждая
предыдущая стирается в строке 215, так как на экран выводится инверсное
ее изображение. При скорости v0>200 точка достигает верхнего края
экрана.

100 LET Y0-0:
102 INPUT *V0-";V0
110 LET G-10: LETT-0
120 LET H-Y0
130 LET S-175/2000
140 OS

210 lETY-G/2tT4+V0*T+Y0
215 PLOT INVERSE 1;125,H'S
220 PLOT 125,Y*S
225 LET H-Y
230 IF Y<0 THEN STOP
240 LET T-T+0.3
250 GOTO 210

Программа 1.8 Влияние начальной скорости.

i.9 ВЛИЯНИЕ ГОРИЗОНТАЛЬНОЙ НАЧАЛЬНОЙ
СКОРОСТИ.

Программа 1.9 демонстрирует свободное движение тела
при наличии горизонтальной и вертикальной составляющих
начальной скорости. Такое движение описывается формулами:

Vy--G*T+Vy0

Y--G/2*T*2+Vy0*T+Y0

X-VxO*T+XO, где
Ух - горизонтальная составляющая скорости.

ГхО - VO*ObW

VyO - V0*SinW

100 LET XO-O: LET YO-O
105 CLS

110 INPUT "W-";W
120 LET W-W*2*PI/360
130 INPUT •VO-^VO

135 LET SY-175/2000:LET SX-225/3000

140 LET VX-VO*COS W

150 LET VY-VO'SIN W

160 LET T-0: LET H-0: LET L-0

170 LET G--10

180 LET Y-G/2TT+VYT

190 IF Y<0 THEN GOTO 110

200 LET X-VXT

210 PLOT X*SX,Y*SY

220 LET 1-Х: LET H-Y

230 LET T-T+0.3

240 GOTO 180

Программа 1.9 Влияние горизонтальной начальной скорости.

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

' Дополните программу строкой:

205 PLOT INVERSE 1;L'SX,H*SY
и на экране будет двигаться одна точка.

1.10 ИГРОВАЯ ПРОГРАММА "АРТИЛЛЕРИЯ**

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

05 LET PI—1
07 LET F-0

10 LET SY-175/2000: LET SX-225/3000
15 GOSUB 300
20 GOSUB 400
30 GOSUB 500
40 GOTO 600

99 STOP

100 LET X0-0: LET YO-O
105 CLS

110 INPUT *W-";W
115 LET W0-W

120 LET W-W*2*PI/360

121 LET F-F+1

122 IF F>2 THEN GO TO 125

124 GOSUB 710

125 GOSUB 660
130 INPUT "VO-^VO

135 IF P1>0 THEN PRINT AT 21,2;W0;" ";V0
137 IF PK0 THEN PRINT AT 21,23;W0;" ";V0
140 LET VX-VO*COS W
150 LET VY-V0*SIN W
155 IF P1<0 THEN LET VX-VX
160 LET T-0: LET H-0: LET L-0
170 LET G--10
175 BEEP 0.01,0
180 LET Y-G/2*T*T+VY*T+Y0
190 IF Y<0 THEN GOTO 800

192 IF Y>2000 THEN GO TO 835

195 LET VX-0.1*WI+VX

200 LET X-VX4+X0

202 IF X>3000 THEN GO TO 835

205 IF POINT (X*SX,Y*SY)-1 THEN GO TO 800

207 PLOT INVERSE 1,L*SX,H'SY

210 PLOT X*SX,Y*SY

215 GOSUB 900

220 LET L-X: LET H-Y

230 LET T-T+0.5

240 GOTO 180

300 FOR I- USR "A" TO USR "CM
310 READ S: POKE l,S
320 NEXT I

330 DATA 240,144,159,128,128,128,128,255

340 DATA 15,9,249,1,1,1,1,255

350 RETURN

400 LET P-8

410 FOR 1-1 TO 92

420 PLOT l,P

430 NEXT I

440 LET H- RND'100+50
450 FOR 1-93 TO 121

460 LET HX- SIN (((l-87)*4.5+l 80)*P1/180)*H: LET HX- ABS HX
465 PLOT l,HX+P: DRAW 0,-HX
470 NEXT I

480 TOR 1-122 TO 225
490 PLOT l,P: NEXT I
495 RETURN

500 LET RE- INT (( RND *80+130)/8)
510 LET U- INT ((RND *80+5)/8]
520 PRINT AT 20,RE;*AB"
530 PRINT AT 20,LI;*AB*
550 LET Wl- INT (RND'l 0+0.5)
555 IF RND >0.5 THEN LET WI-WI

560 PRINT AT 1,10;"WIND"; ABS Wl;

565 IF Wl<0 THEN PRINT' <-*

570 IF WW) THEN PRINT' -«>•

580 RETURN

600 LET Y0-(P+8)/5Y

610 IF P1>0 THEN LET X0-(U*8+8)/SX

620 IF P1<0 THEN LET X0-(RE*8+8)/SX

630 GOTO 110

660 LET DX-IO'COS W

670 LET DY-10*SIN W

680 IF P1>0 THEN PLOT U*8+8,P+6: DRAW DX,DY
690 IF PKO THEN PLOT RE*8+8,P+6: DRAW -DX,DY
700 RETURN

710 IF P1>0 THEN PLOT LI*8+8,P+6: DRAW INVERS 1;DX,DY

720 IF P1<0 THEN PLOT RE*8+8,P+6: DRAW INVERSE 1;-DX,DY

730 RETURN

800 FOR 1-1 TO 25

805 BEEP 0.01,0

810 LET DY-RND'100: LET DX-RND'100

820 PLOT INVERSE 1;(X+DX)*SX,(Y+DY)*SY

830 NEXT I

835 LET PI-PI

840 GOTO 600

900 LET ZX-X'SX: LET ZY-Y*SY

910 IF ZXHI+6 AND ZX<U+10 AND ZY<P+8 THEN GOTO 1000
920 IF ZX>RE+6 AND ZX<RE+10 AND ZY<P+8 THEN GOTO 1000
930 RETURN

1000 IF P1>0 THEN PRINT AT 20,RE;* "

1010 IF P1<0 THEN PRINT AT 20,LI;' '

1040 FOR 1-1 TO 100

1050 LET DX- RND*100: LET DY- RND'100

1060 PLOT (X+DX)*SX,(Y+DY)*SY

1065 BEEP 0.01,0

1070 NEXT I

1080 INPUT 'NEW? Y/N*;A$

1090 IF A$-T THEN GOTO 20

Программа 1.10 Игра "Артиллерия

■ В строке 10 задается масштаб.

■ В подпрограмме начинающейся со строки 300 подготавливается
новые графические символы "А" и "В", формирующие изображение
укреплений.

■ Подпрограмма начинающаяся со строки 400 выводит картинку
прбфиля местности. В строках 400 - 4 Сформируется линия слева
от изображения горы, в строках 440 - 470 - изображение горы,
а в строках 480 - 490 -линия справа от нее.

■ Подпрограмма начинающаяся со строки 500 производит
расстановку укреплений.

■ В строках 600 - 630 определяется начальная точка движения
снаряда.

■ В строках 660 - 700 формируется изображение ствола орудия
в соответствии с углом наклона заданным в строке 110.

■ В строке 130 задается начальная скорость снаряда.

■ В строках 135 и 137 выбранные значения выводятся на экран.

■ В строках 180 - 240 вычисляется траектория движения снаряда
и попадание его в цель (строка203 и подпрограмма начинающаяся
со строки 900). При попадании снаряда в цель формируется
изображение взрыва и стирается картинка вражеского укрепления
(строки 1000 - 1070).

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

■ В строках 835 и 840 формируется переход хода.

■ В строках 1080 и 1090 задается начало новой игры или выход
из программы.

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

1.11 ИГРОВАЯ ПРОГРАММА "ПИТОН".

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

10 CIS

20 INPUT 'SPEED 0 - 50";SP
30 GOSUB 100

99 GOTO 200

100 FOR I- USR "A* TO USR ТЧ
110 READS: POKE I,S

120 NEXT I

130 DATA 60,126,255,255,255,255,126,60
140 DATA 60,126,240,192,192,240,126,60
150 DATA 60,126,231,231,195,195,66,0
160 DATA 0,66,195,195,231,231,126,60
170 DATA 60,126,15,3,3,15,126,60

199 RETURN

200 LET A-600
203 CLS

205 PAPER 7: INK 1: BRIGHT 0: BORDER 6

210 LET N-0: LET P-0

215 LET ВЫ: LET B2-B1

220 LET H- INT | RND*18)

230 LET V- INT | RND*26)

240 PRINT AT H,V;"C

250 FOR 1-0 TO SP: LET A$- INKEY$ : NEXT I

252 IF A$-"5" THEN LET A-500

254 IF A$-*6" THEN LET A-600

256 IF A$-*7" THEN LET A-700

258 IF A$-"8" THEN LET A-800

270 GOTO A

400 PRINT AT 10,16;"RESULT:"; AT 10,23;P

405 INK 0

410 STOP

420 CLS

430 GOTO 200

500 PRINT AT H,V;"A*

510 LET V-V-1

520 LET C- ATTR (H,V): GOSUB 1000

530 PRINT AT H,V;"E"
535 BEEP 0.01,0
540 GOTO 250
600 PRINT AT H,V;"A"
610 LET H-H+l

620 LET С- ATTR (H,V): GOSUB 1000

630 PRINT AT H,V;"C"

635 BEEP 0.01,2

640 GOTO 250

700 PRINT AT H,V;"A"

710 LET H-H-l

720 LET О ATTR (H,V): GOSUB 1000

730 PRINT AT H,V;"D"

735 BEEP 0.01,4

740 GOTO 250

800 PRINT AT H,V;"A"

810 LET V-V-l

820 LET О ATTR (H,V): GOSUB 1000
830 PRINT AT H,V;"B"
835 BEEP 0.01,6
840 GOTO 250

1000 IF C-57 THEN GOTO 400
1020 IF C-62 THEN LET P-P+10 :LET N-2: GOSUB 2000
1030 IF C-58 THEN LET P-P+20 :LET N-2: GOSUB 2000
1040 IF C-60 THEN LET P-P+40 :LET N-2: GOSUB 2000
1050 IF H<0 OR H>21 THEN GOTO 400
1060 IF V<0 OR V>31 THEN GOTO 400
1070 LET N-N+1
1080 GOSUB 2000
1090 RETURN

1250 FOR 1-1 TO S :LET A$- INKEY$ : NEXT I
2000 LET Y-INT { RND*26)
2010 LET X-INT ( RND* 18)
2020 IF N<3 THEN PRINT INK 6; AT X,Y;"A"
2030 IF B1<0 THEN GOTO 2050

2040 LET R- INT ( RND*20)+N: LET B1-B1

2050 IF R-N THEN PRINT INK 2; AT X,Y,"A": LET Bl-Bl:

GOTO 2999
2060 IF B2<0 THEN GOTO 2080
2070 LET RR- INT ( RND*40)+N: LET 62-B2
2080 IF RR-N THEN PRINT INK 4; AT X,Y;"A": LET B2--B2:

GOTO 2999
2999 RETURN

Программа 1.11 Игра "Питон".

■ В строке 20 вводится скорость в диапазоне 0 - 50. 50 - наименьшая
скорость. В строках 100-199подготавливаются графические символы.

■ В строках 250 - 270 проверяется нажатие управляющих клавиш.

■ В строках 500 - 540 формируется движение налево.

■ В строках 600-640 формируется движение вниз.

■ Встроках700-740 -вверх.

■ В строках 800 - 840 - направо.

■ В строках 1000 -1090производится проверка критериев окончания
игры (это выход за пределы экрана и попытка питона укусить
самого себя) и подсчет результата игры.

■ В строках 2000 - 2999 производится выбор места и вывод новых
целей.

1.12 "ЛАМБАДА".

Следующие программы демонстрируют звуковые возможности
СПЕКТРУМа. Даже если ограничиться только оператором ВЕЕР, можно
достаточно легко создавать знакомые мелодии.

05 FOR 1-1 ТО 2
10 ВЕЕР 0.5,7
20 ВЕЕР 0.25,5
30 ВЕЕР 0.25,3
40 ВЕЕР 0.25,2
50 ВЕЕР 0.25,0
55 PAUSE 30
60 ВЕЕР 0.25,0
70 ВЕЕР 0.25,3
80 ВЕЕР 0.25,2

90 ВЕЕР 0.25,0
100 ВЕЕР 0.25,-2
110 ВЕЕР 0.25,0
120 ВЕЕР 0.25,-5
130 ВЕЕР 0.25,-7
140 ВЕЕР 0.5,-5
145 PAUSE 30
150 NEXT I
155 PAUSE 20
157 FOR T-1 TO 2
160 BEEP 0.25,5
170 BEEP 0.25,5
180 BEEP 0.25,5
190 BEEP 0.25,3
200 BEEP 0.25,-4
210 BEEP 0.25,0
220 BEEP 0.25,3
230 BEEP 0.5,7
240 BEEP 0.25,5
250 BEEP 0.25,3
260 BEEP 0.5,-4
270 BEEP 0.25,0
280 BEEP 0.25,3
290 BEEP 0.5,2
300 BEEP 0.25,0
310 BEEP 0.25,-2
320 BEEP 0.5,-2
330 BEEP 0.25,0
340 BEEP 0.25,-2
350 BEEP 0.5,0
352 PAUSE 30
355 NEXT T
360 PAUSE 60
370 GO TO 5

Программа 1.12 "Ламбада''.

■т

Продомма 1.12 воспроизводит хорошо известную "Ламбаду". Звучание
не отличается совершенством, но мелодия легко узнается. Операторы
цикла в 5 и 157 строках позволяют избежать повторного набора нот в
повторяющихся музыкальных фразах. В остальном программа совершенно
очевидна.

Более компактно записать мелодию можно используя READ и DATA,
так как это сделано в следующей программе.

1.13 АЛЬТЕРНАТИВНАЯ ЗАПИСЬ МЕЛОДИЙ.

10 INPUT TEMP? (1 - 4)";К
20 LET К-К/8
25 RESTORE

30 FOR 1-1 ТО 45: READ А: ВЕЕР КА
40 NEXT I

60 ВЕЕР 2*К,4: PAUSE 10
70 GO ТО 25

100 DATA 11,1.1,11,11,9,7,7,6,4,4,7,11,16,16,16,16,
14,12,12,11,9,9,11,12,11,12,11,15,12,11,11,9,7,7,6,
4,6,6,6,6,7,6,4,4,4

Программа 1.13 Альтернативная запись мелодий.

1.14 "ЭЛЕКТРОМУЗЫКАЛЬНЫЙ ИНСТРУМЕНТ".

Несложная программа превращает СПЕКТРУМ в одноголосый
электромузыкальный инструмент.

05 LET О-О

10 IF INKEYS - " GO ТО 10
20 IF INKEY$ - '1' THEN BEEP 0.25,0+0
25 IF INKEY$ - "S" THEN BEEP 0.25,0+1
30 IF INKEYS - "X" THEN BEEP 0.25,0+2
35 IF INKEYS - -D* THEN BEEP 0.25,0+3
40 IF INKEY$ - *C* THEN BEEP 0.25,0+4
45 IF INKEYS - *V* THEN BEEP 0.25,0+5
50 IF INKEYS - 'G* THEN BEEP 0.25,0+6
55 IF INKEYS - "B* THEN BEEP 0.25,0+7

60 IF INKEVS - *H* THEN BEEP 055,0+8
65 IF INKEY$ - "N* THEN BEEP 0.25,0+9
70 IF INKEY$ - THEN BEEP 0.25,0+10
75 IF INKEY$ - "M" THEN BEEP 0.25,0+11
80 IF INKEY$ - '1С THEN BEEP 055,0+12
100 IF INKEY$ - "5" THEN LET О - 0
110 IF INKEY$ - V THEN LET О - -12
120 IF INKEY$ - "3" THEN LET О - -24
130 IF INKEY$ - *6" THEN LET О - 12
140 IF INKEY$ - T THEN LET О - 24
200 GO TO 10

Программа 1.14 "Электромузыкальный инструмент ".

Вэтойпрюраммектшипшкошшотсра
Нижний ряд - ноты,
Второй снизу - диезы и бемоли,
Цифры 3-7 - переключение октав.

1.1 S ПРОГРАММИРОВАНИЕ ПО ИНСТРУКЦИИ "OUT".

Вели Вас 1» устраивает щук генерируемый с помощью ВЕБР, то
поэкспериментируйте с инструкцией OUT. Выход звукового сигнала в
СПЕКТРУМЕ сделан с разряда D4 портя с адресом 254, поэтому
переключая этот разряд из единичного состояния в нулевое можно
генерировать звук.

Например:

10 OUT 254,16
20 OUT 254,0
30 GO ТО 10

1.16 РЕШЕНИЕ КВАДРАТНЫХ УРАВНЕНИЙ.

В конце первой главы предлагаем программу решения
квадратных уравнений вид а:

АХЛ2+ЯХ+СЧ)

В этой щхирамме в строках 50 - 70 производится ввод

коэффициентов, в строках 200 - 220 вычисляется дискриминант й если он
неотрицателен вычисляются значения XI и Х2. В противном случае
выводится надпись "НЕТ РЕШЕНИЙ". В строке 10 выводится подсказка,
напоминающая о форме записи квадратного уравнения. В строке 80
выводятся на экран уравнение с введенными коэффициентами.

10 PRINT "А*ХЛ2+В*Х+С-0"
50 INPUT "А-";А
60 INPUT "В-";В
70 INPUT "С-";С

80 PRINT А;"*ХЛ2+";В;"*Х+";С;"-0"
200 LET D-B*B-4*A*C
210 PRINT "D-";D

220 IF D<0 THEN PRINT "NO SOLUTION"
300 LET XH-B+D4).5)/(2*A)
400 LET X2-(-B-D4).5)/(2*A)
500 PRINT "X1-";X1
510 PRINT "X2-";X2

Программа 1.15 Решение квадратных уравнений.




СОДЕРЖАНИЕ:
  1. Глава 1 - преобразование двоичного кода в десятичный, "монстр", движущийся "монстр", движение "монстра" по горизонтали, управление движением "монстра", траектория падающего тела, влияние начальной скорости, влияние горизонтальной начальной скорости, игровая программа "артиллерия", игровая программа "питон", "ламбада", альтернлтивнлязлписьмелодий, "электромузыкальный инструмент", программирование по инструкции "out", решениеквадратныхуравнений.
  2. Глава 3 - формирование больших букв, преобразование десятичных чисел в, числа с произвольным основанием от 2 до 16) системы счисления, преобразования чисел с произвольным основанием (от2 до 16) системы счисления в десятичные, бегущая строка, перевод арабских чисел в римские, система линейных уравнений с тремя неизвестными, формированиелистинга, сортировка, календарь-ежедневник, сортировка списка имен, картотека с поиском по ключевым словам, "вечный" календарь.


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

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



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

Похожие статьи:
ZX-Preview - анкета и конкурс с призами.
На досуге - Рассказ "Хреновый диск".
Чтиво - Рассказ Е.Нестеренко "Корона и кольцо" (часть 2)
ZXNet - Правила отправки сообщений для пользователей ZXNet. Правила эхоконференции SPB.SPECCY. Предложение о изменении Устава сети.
Мир PC - и pазвеpнувшись в стоpону спектpума, Necromancer воткнул в pозетку тpойник...

В этот день...   21 ноября