|
Программы, написанные мною для МК-85.
Размещаю здесь свои творения с по возможности подробными комментариями. Свои комментарии пишите пожалуйста в Гостевую книгу.
Если у Вас есть свои игры/программы для этого микрокомпьютера - напишите мне, пожалуйста!
Название |
Размер |
Наличие графики |
Необходимость турбо |
Стрельба на равнине |
69 |
- |
- |
Стрельба в холмах |
192 |
+ |
+ |
Бомбардировщик |
391 |
+ |
- |
Приземление |
179 |
- |
- |
Игра "стрельба на равнинной местности" |
5 VAC:L=RAN#*1e4
10 INPUT “a”,A:D=L-98000*SIN(2*A)/9.8:I=I+1:PRINT I;D
20 IF ABS D>5 THEN 10:PRINT I:END (69 ШАГОВ) |
Описание программы:
5) Выбирается случайное значение расстояния до цели (L) от 0 до 10000 метров.
10) Вводим значение угла, под которым будем запускать снаряд (A). Далее программа рассчитывает разность (D) расстояния до цели и дальности полета и выводит номер попытки (I) и только что посчитанную разность (D). Начальная скорость принимается около 313 м/с.
20) Если запущенный снаряд упал в окрестности 5м от цели - вы выиграли. |
Игра "стрельба в холмистой местности" |
10 VAC:FOR W=0 TO 19:A(W)=INT(RAN#*6):NEXT W:Z=INT(RAN#+60)
30 X=0:FOR W=0 TO 19:FOR X TO X+2:DRAW X,A(W):NEXT X:NEXT W
50 DRAW Z,A(Z/3)+1:STOP:INPUT “a”,U,”v”,V
55 FOR X=1 TO 60:W=A(0)+INT(X*TAN Y+0.5-4.9*(X/V/COS Y)^2)
70 IF W=<A(X/3) THEN 900:DRAW X,W:NEXT X
900 IF X><Z THEN 30:PRINT “Победа!”:END
(192 ШАГА) Желателен ТУРБО-режим или обилие времени :) |
Описание программы:
10) Программа генерирует случайные значения карты (A(0)-A(19))и горизонтальную координату цели (Z)
20) Рисование карты
50) Рисуем цель. Экран выглядит, например, так:
Цель в 4м прямоугольнике. Далее разглядываем эту картинку и жмем кнопку EXE. После этого программа просит ввести угол запуска и начальную скорость снаряда:
55-70) Для каждого значения Х от 1 до 60 обсчитываем траекторию. Если она больше высоты земли в этом месте, то рисуем эту точку и идем дальше, иначе идем на 900 строчку. Вот несколько картинок траектории, в первом случае угол равен 45 градусов, во втором - 30. В первом случае половина траектории оказалась выше 7 и не отобразилась, зато место приземления отстоит от цели всего на 1!.
900) Если конечная координата по X равна координате цели, выводится надпись "Победа". В противном случае снова рисуется карта и цикл повторяется.
|
Игра "Бомбардировщик" |
1 VAC:INPUT ”N,w:C=W:FOR X=0 TO 60:DRAW X,0:NEXT X:X=0:Y=2
2 FORZ=1 TO W:C(Z)=INT(RAN#*60):DRAWC C(Z),0:DRAW C(Z),1:NEXT Z
10 GOTO 54
20 FOR I=X-1 TO X+1:DRAWC I,Y:NEXT I:GOTO ASCI A$
49 Y=Y-1:IF Y=1 THEN 98:GOTO 52
50 GOTO B
51 Y=Y-1:IF Y=1 THEN 98:GOTO 54
52 B=60:GOTO 99
53 V=X-INT ((65-B)/2*SQR Y):GOTO 80
54 B=70:GOTO 99
55 Y=Y+1:GOTO 52
56 GOTO B
57 Y=Y+1:GOTO 54
60 X=X-1:DRAW X,Y:DRAWC X+2,Y:GOTO 99
70 X=X-1:DRAW X,Y:DRAWC X-2,Y:GOTO 99
80 FOR Z=0 TO W: IF V=C(Z) THEN 95:NEXT Z:DRAWC V,0:GOTO B
95 DRAWC C(Z),1:C(Z)=99:C=C-1:IF C=0 THEN 96:GOTO B
96 PRINT “Win!”:END
98 PRINT “Упс!”:END
99 A$=KEY:IF A$=”” THEN 20:GOTO B
(391 ШАГ) |
Описание программы:
Описывать построчно программу мне лень :-), так что опишу просто принцип игры, и в конце несколько строчек про особенности кода.
Цель игры - управлять бомбардировщиком, летающем в 2D-пространстве, в реальном времени, и при этом уничтожить все цели и не разбиться. В начале, сразу после запуска, МК запросит количество целей, которые будем бомбить:
Дальше рисуется карта со случайно расположенными целями (точки строчкой выше линии земли). Дальше начинается полет "самолёта" из 2х точек (на скриншоте ниже обведен в кружочек). Управление этим бомбардировщиком с цифровой клавиатуры, назначение клавиш, я думаю, очевидно. Если самолёт окажется в 2х нижних строчках дисплея, он разобьется, выведется сообщение "упс!" и игра закончится.
Сброс бомбы -
клавиша "5" - оставляет "воронку" на земле (незакрашенную точку). На скриншоте ниже обозначена красной стрелочкой. При попадании в цель она (цель) стирается.
После того как уничнотены все цели, выведется сообщение "win!" .
И немного про текст программы. Управление построенно на том, что в строчке 20 программа калькулятор переходит на строку, номер которой соответствует коду нажатой клавиши. Благодаря этому мы избавляемся от медленных операторов "IF", и игра вполне неплохо смотрится даже без ТУРБО-режима. Идея почерпнута здесь. |
Игра "Приземление" |
10 SET 3:vac:Input “м”,M,“т”,F,“в”,H
20 IF H>0 THEN 90:PRINT V:IF V<=2.5;PRINT “5”:IF V>2.5;PRINT “X”
40 END
90 INPUT“р”,P:A=9.8-P*1500/(M+F-P/2):B=ABS A
91 IF B>30 THEN 150:V=V+A*T:H=H-V-A/2
93 F=F-P: PRINT A;V,H;F: IF F<0; THEN 160: GOTO 20
98 PRINT “a0”: END
99 RRINT “т!”: END
(179 ШАГОВ) |
Описание программы:
10) Вводим массу корабля, запас топлива, начальную высоту (скорение принимается 9.8 м/с^2, удельная тяга 1500 Н*с/кг.топл, начальная скорость 0).
20) Если ваш корабль еще над землей, то идем на 90ю строку. В противном случае оцениваем текущую скорость на предмет того, разбился корабль или нет.
90) Вводим расход топлива в кг на конкретный ход. Вычисляется ускорение.
91) Оцениваем наличие серьезных перегрузок. Если все нормально, считаем высоту и скорость.
93) Выводится ускорение и скорость, после нажатия ЕХЕ - высота и запс топлива. Если топливо еще осталось, идем на 20ю строку.
|
|