Игры на Бейсике своими руками 1996 г.

Игры - текст игры "ORTHIUS".


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

1 CLEAR 64599: GO SUB 1080

2 PAPER 1: BORDER 1: INK 5: С
LS : POKE 23658,8: LET SC=0: LET

HI=100

3 POKE 23658,0: INPUT AT 0,7;
"ИМЯ: "; LINE A$

4 IF LEN A$=0 THEN GO TO 2

5 IF LEN A$>=8 THEN GO TO 2

10 IF SC>=HI THEN LET HI=SC

11 GO SUB 990

12 LET V=1
14 LET U=3
16 LET Z=0

20 PAPER 0: INK 1: BORDER 0: С

LS : POKE 23658,8

22 BEEP .01,10

30 BEEP .01,20

40 IF SC>=HI THEN LET HI=SC

50 IF V=1 THEN GO SUB 680

55 IF V=2 THEN GO SUB 820

56 IF V=3 THEN GO SUB 2000

60 RESTORE 1080: FOR N=1 TO V:
READ LM: NEXT N

65 PRINT AT Y,X; INK 8;"A"

67 PRINT AT A,B; INK 6:"B"

68 PRINT AT C,D; INK 2;"C"

69 PRINT AT E,F; INK 5;"E"

70 PRINT #0; AT 0.0, INK 4;"<ЖИ
ЗНИ>";U

75 PRINT #0;AT 0,17; INK 5;"<У
РОВЕНЬ>";V

78 PRINT #0; AT 1,0; INK 5;"<MA
KC.>";HI

80 LET Z=Z+2

87 IF Z>=1000 THEN GO TO 3000

88 PRINT AT 11,24;"O";AT 20,24
; "O"

110 IF Y=ll AND X=24 THEN PRIN
T AT Y,X; PAPER 3;" ": LET Y=Y+9

120 IF Y=1 AND X=1 THEN GO TO
520

130 LET A$=INKEY$
140 LET X1=X: LET Y1=Y
150 LET X=X+(AI=MP" AND ATTR (Y
,X+l)=89) (А$="Ом AND ATTR (Y,X-
1)=89)

160 LET Y=Y+(A$="A" AND ATTR (Y
+1,X)=89) (A$="Q" AND ATTR (Y-l,
X)=89)

170 PRINT #0;AT 1,17;"<ГАЗ>";Z;

180 IF Y=3 AND X=1 THEN GO SUB
970: REM 3AMP+CLEAR
185 IF Y=8 AND X=ll THEN GO TO
630: REM EXTRA LIVES
190 IF Y=20 AND X=3 THEN GO SU
В 960: REM ЭАМР

200 IF Y=0 AND X=29 OR Y=0 AND
X=30 THEN PRINT AT Y+1,X;" 11;AT
Y,X; "A": GO TO 560

210 IF XloX OR YloY THEN PRI
NT AT Y,X; INK 8;"A": PRINT AT Y
1,X1;" "
220 IF LM=0 THEN GO TO 520
2 30 LET A1=A: LET B1=B: LET Cl=
C: LET D1=D: LET E1=E: LET F1=F
240 IF RND>.6 THEN GO TO 80
250 LET AA=A

260 LET A=A+(A<Y AND ATTR (A+l,
B)=89)-(A>Y AND ATTR (A-1,B)=89)
270 IF AoAA THEN GO TO 290
280 LET B=B+(B<X AND ATTR (A.B+
1)=89)-(B>X AND ATTR (А,В 1)=89)
290 IF A1<>A OR BloB THEN PRI
NT AT A,B; INK 0;"B";AT A1,B1; I
NK 1;" "

300 IF Y=A AND X=B THEN GO TO
440

310 LET CC=C

320 LET C=C+(C<Y AND ATTR (C+l,
D)=89)-(C>Y AND ATTR (C-1,D)=89)
330 IF COCC THEN GO TO 350
340 LET D=D+(D<X AND ATTR (C,D+
1)=89)-(D>X AND ATTR (C,D-1)=89)
350 IF CloC OR DloD THEN PRI
NT AT C,D; INK 1;"C";AT C1,D1;"

II

360 IF Y=C AND X=D THEN GO TO
440

370 LET EE=E

380 LET E=E+(E<Y AND ATTR (E+l,
F)=89)-(E>Y AND ATTR (E1,F)=89)
390 IF EoEE THEN GO TO 420
400 LET F=F+(F<X AND ATTR (E,F+
1)=89)-(F>X AND ATTR (E,F-1)=89)
410 IF Y=E AND X=F THEN GO TO
440

420 IF EloE OR FloF THEN PRI
NT AT E,F; INK 6;"E";AT E1,F1; I
NK 1;" "
4 30 GO TO 80

440 BORDER 2: FOR F=0 TO 50 STE
P 5: BEEP .005,F: BEEP ,004,60-F
: NEXT F
450 LET U=U-1
455 PAPER 0: INK 7: CLS

460 if u<=0 then print at 7,10
; flash 1; ink 4; paper 2;"конец
игры": pause 100: border 0: go
to 900

465 if z>=1000 then print at 7
,10; flash 1; ink 4; paper 2;"he
чем дышать": pause 500: border 7
: go to 3 000

470 if a=y and b=X then print
at 10,4; "орфей раздавлен кролико
m.": pause 150: go to 20

480 if oy and d=x then print
at 10,4;"орфея загрызла крыса.":
pause 150: go to 20
4 90 if e=y and f=x then print
at 10,4;"орфея укусил паук.": pa
use 150: go to 20

495 print at 10,4;"помогите, ka
к мне быть...."; pause 150: go
TO 20
520 data 1,5,8,6
530 data 2,5,7,4
540 data 3,4,6,3
550 data 4,3,5,4
560 for 3=1 to 2: restore 520
570 for m=1 to 4 for n=1 to 4
read a beep .1,a: next n: next
M

580 next 3

590 if v=3 then go to 640
600 let v=v+1

605 paper 0: ink 7: cls : print
at 12,8;"c п а с e h !": for f=
0 to 100: border 1 border 3: bo
rder 5: border 7: border 2: next
f

610 paper 0: ink 7: cls : print
at 10,10; flash 1;"переходим ha
";at 12,11;" уровень ";v;at 14,1
0;"и продолжаем"
620 pause 100: cls go to 20
645 let u=u+1

650 paper 3: cls : print at 10,

0; flash 1;"дополнительная жизнь

............": for f=0 to 300: n

ext f: let v=1: go to 20

670 pause 100: go to 20
680 pause 100: cls : print at 1
0,3; ink 7;"сцена 1: кроличий ла
биринт": pause 100: cls : paper
5

682 if z>=500 then let z=z-200
685 for f=0 to 11: print at f,0
; ink 1; paper 6:"gggggggggggggg
gggggggggggggggggg";: next f

688 for f=ll to 21: print at f,
0; ink 0; paper 7:"ggggggggggggg
ggggggggggggggggggg";: next f
690 print at 20,3; paper 3;" ";
700 print at 20,6; paper 3;"

710 print at 8,12; flash 1; ink
4; paper 1;"a"

720 paper 3: print at 0,29;" "
;at 1,29;" ";at 2,29;" "
730 print ink 1; paper 3;at 3,
1;"*";at 20,3;"o"
740 print at 3,2;"

II .

750 print at 18,16;" ": print a
t 4,3;" ";at 5,3;" " ;at 6,3;" ";
at 7,3;" ".at 8,3;" ";at 17,16."
";at 16,16 " ":at 15,16," "
760 print at 10,2;"

770 print at 10,17;" ": for a=1
8 to 29: print at 1,a;" ";at 10,
a;" ";at 17-a,18;" ";at 17-a,29,
" " ;AT 10-A,18 " ";AT 10-A.l;" "
;: next a
780 print at 19,2;" ",at 16

,9;" ";at 17,9;" ";at 18,9;"

";at 17,4;" ";at 18,4:" ";a
t 18,6;" ";at 15,1;" ";at 1

4,6;" ";at 15,9;" ";
790 print at 5,18;"
800 print at 18,19;" " ;at

14,22;" ";at 15.26;" ".at 1

7,25;" ".at 16,21;" ";at 15

,21;" ";at 14,21;" "
802 print at 8,3;" " ;at

9,7;" "

803 print at 5,26; paper 1; ink
6; "F"

804 print at 1,26; paper 1; ink
6;"f" ;

805 let y=13 let x-26: let a=3
: let b=30: let 010: let d-27 :
let e=8: let f-2: let x1=0: let
y1 = 0; let a1=0: let b1=0 let ci
=0: let d1=0: let e1=0: let f1=0

809 print at 19,24;" "

810 print at 4,18; ink 1, paper
7 ; "g"

813 print at 11,26; paper 3;" "
;at 12,26," ";at 13.26;" "
815 print at 8,29; ink 0; paper
6;"g";

817 print at 15,19," ' ,at 14,2
7 ; ink 7 ; paper 0 ; "o"
bib return

820 paper 1 border 0: ink 1: с
ls : print at 10,7; ink 7;"сцена
2: облава";: pause 100: cls
822 let z-z-100

825 for f=0 to 21: print "f";ta
в 31;"f": next f
830 for f=1 to 11 step 2. print
at f,0; paper 0; ink 4;"h h i i
i i ihihihih h h h h h h"; : nex
t f

835 for f=13 to 21 step 2: prin
t at f,0; paper 0; ink 4;"h h 1
iii ihihihih h h h h и h";: ne
xt f

840 for f=0 to 21 step 2: print
at f,1; paper 3;"

" ; : next f
850 paper 3: for r=1 to 20: for
f-l to 12 step 2: print at 21-r
,f;" ".: next f: next r

860 for r=1 to 20: for f=1 to 1
2 step 2: print at 21-r,19+f:" "
4■ next f: next r

870 print at 0,0; ink 7; bright
1;"f fddddddddddddddddddddddddd
ddgg";at 21,0 ink 7;"gggggggggg
ggggggggggggggggggf fd";

876 PRINT AT 4,26; PAPER 1; INK
5:"D";

880 LET Y=20: LET X=29 : LET A=1
0: LET B=29: LET C=1: LET D=2: L
ET E=20: LET F=2 RETURN

900 PAPER l: BORDER 2: INK 6: С
LS : PRINT AT 20,0; PAPER 7; INK

0;"ОРФЕЙ ХОРОШО ПОСТАРАЛСЯ.....

•I

901 LET SC=Z+(V«5)

902 PRINT AT 10,0;"ГАЗ...";1000
-Z

904 PRINT AT 12,0;"УРОВЕНЬ.;V
906 PRINT AT 14,0;"ПРИЗ.,";V*5

908 PRINT AT 16,0;"ВСЕГО..";SC

909 PRINT AT 18,0; ,,C4ET=" ;SC

910 PAUSE 50: PRINT AT 2,0;"XOT
ИТЕ СЫГРАТЬ ЕЩЕ РАЗ? Y/N

920 FOR F=0 TO 9999: IF INKEY$=
"y" OR INKEY$="Y" THEN GO TO 10
925 PRINT AT 21,20;":";F;":"
930 IF INKEY$="n" OR INKEY$="N"
THEN CLS . PRINT AT 16,0;"д0 С
ВИДАНИЯ": PAUSE 50: GO TO 9999
940 NEXT F: BEEP 01,RND«10 GO
TO 920

950 NEXT F: GO TO 10
960 BEEP .03,22 LET SC=SC-300:
LET Y=14 LET X=27 : RETURN
970 BEEP .03,16: BEEP .03,22: L
ET Z=Z-90. PRINT AT Y,X; INK 1;
PAPER 3;"O";: LET Y=14: LET X=27
: PRINT AT 1,26;" ";AT 5,26;" ";
AT 8,29;" ";AT 4,IB;" ": RETURN
980 BEEP .01,10 RETURN
990 PAPER 0: INK 7: BRIGHT 1: В
ORDER 0: CLS

1000 PRINT AT 2,0; FLASH 1; INK
7 ; "AAAAAAAAAAAAA ОРФЕЙ AAAAAAAAA
AAA";: PAUSE 25
1010 PRINT AT 4,0; INK 6;
ВЫВЕДИТЕ ОРФЕЯ ВВЕРХ ИЗ ПОДЗЕ-
МЕЛЬЯ С КРЫСАМИ, КРОЛИКАМИ И ПА-
УКАМИ, КОТОРЫЕ ХОТЯТ ИСКУСАТЬ,
ЗАГРЫЗТЬ И РАЗДАВИТЬ ЕГО."
1015 print at 9,0; ink 5,
подземелье наполняется газом.
концентрация его: 0-1000 чем
она больше, тем хуже для вас."

1020 print at 13,0; ink 5;
клавиши q,a : вверх, вниз
клавиши 0,р ■ влево, вправо"

1021 print at 16,0;а$;" управляе
т орфеем."

1022 print at 1 в,0; ink 3;"преды
дущий счет" ";sc

1030 print at 19,0; ink 2; brigh
t 1:"наибольший счет: "; ink 5;h
i

1040 print #0;at 0,0; paper 0; i
nk 7; bright 1;". .вы го

t о в ы ? . . ."
1050 print #0;at 1,0; paper 0; i
nk 7;". -нажмите любую клавиш
у

1060 for f=299 то о step -1: pri
nt at 0,27; ink 2;f;" ": beep .0
1,60: if inkey$="" then border
rnd*2: next f
1070 return

1080 load "chr"code 64600

1082 poke 23606,88: poke 23607,2

51

1085 data 65,89,79,86,131,83,53,
66

1090 data 48,252,180,180,48,40,4
0,108

1100 data 12,12,7,127,252,252,25
2,102

1110 data 24,14,15,28,62,60,60,2
54

1120 data 136,136,216,33,62.32,8

0,136

1130 data 126,36,60,56,84,84,145
,145

1140 data 99,98,97,3,5,12,29,29
1145 data 102,203,107,102,104,23
2,122,164

1147 data 50,22,44,123,233,112,1
88,199

1148 data 119,49,119,219,139,149
,139,149

1150 RESTORE 1090: POKE 23675,88
: POKE 23676,255: FOR N=USR "A"
TO USR " I" + 7 : READ A' POKE N,A:
NEXT N
1160 RETURN

2000 PAPER 5: BORDER 3: INK 1: С
LS

2010 PRINT AT 10,3; INK 7; PAPER
0;"СЦЕНА 3: СТОЧНЫЙ КОЛЛЕКТОР":
PAUSE 100: CLS
2020 LET Z=Z-100

2100 FOR F=6 TO 12: PRINT AT F,0
; INK 4; PAPER 0:"FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFF" NEXT F
2105 FOR F=13 TO 21: PRINT AT F,
0, INK 5; PAPER 1:"FFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFF": NEXT F
2120 PAPER 3
2130 PRINT AT 20,6,"
";AT 19,6;"

«I

2140 PRINT AT 21,1:"

2150 PRINT AT 18,10;" ";AT 18,2

5 - »< ii

2160 PRINT AT 17,10;" ";AT 17,2

5;" "

2170 PRINT AT 15,5;"

";AT 16,5;"

II

2180 PRINT AT 15,2;" " ;AT 16,3;

II II

2200 PRINT AT 14,2;" " .
2210 PRINT AT 13,2;" "
2220 PRINT AT 12,3;"

";AT 13,3;"
и

2250 PRINT AT 9,7;"

";AT 10,7;"

• I

2260 PRINT AT 20,26;" "
2265 FOR F"=6 TO 24 STEP 2: PRINT

AT 14,F;" ";: NEXT F
2270 FOR F-l TO 11: PRINT AT 20-
F,28;" ": NEXT F

2280 FOR Z»1 TO 20 STEP 2. FOR F

=1 ТО 7: PRINT AT 11-F,7+Z;" ":
NEXT F: NEXT Z

2290 PRINT AT 11,20." ",AT 11,24

;" ";AT 15,27;" "

2295 PRINT AT 11*24;"0";AT 20,24
; "O"

2299 INK 7

2300 PLOT 60,128: DRAW 0,15: DRA
W 160,0: DRAW 0,-15: DRAW 3,0: D
RAW 0,20: DRAW -166,0: DRAW 0,-2
0

2309 LET X=7: LET Y=20: LET A=10
LET B=15: LET C=7 LET D-26: L
ET E=19: LET F=29: LET X1=0 : LET
Y1=0: LET A1=0: LET B1=0 LET С

1=0: LET D1=0: LET E1=0: LET Fl=
0

2310 INK 1 RETURN

3000 PAPER 7: BORDER 7: INK 0: С

LS

3010 PRINT AT 10,0;"ВЫ ЗАДОХНУЛИ

СЬ СМЕРТЕЛЬНЫМ ГАЗОМ"

3020 PRINT AT 12,О;"А ПОТОМ ГАЗ

РАЗВЕЯЛСЯ..........."

3030 FOR F=0 ТО 299: NEXT F: LET
Z«Z-400: GO TO 20

9989 STOP

9990 SAVE "ORTHIUS" LINE 1 SAVE
"chr"CODE 64600,768

9999 BORDER 7: PAPER 7: INK 0

Автостарт программы происходит со строки 1, где выполняется
подпрограмма GO SUB 1080 В ней происходит загрузка русско-латиис-
кого символьного набора, и формирование символов UDG-графики.

Далее, со строки 2 начинается задание параметров переменных
При остановке программы в процессе отладки Вы можете запускать
программу вновь командой RUN 2.

В строке 11 происходит вывод заставки-инструкции подпрограммой
GO SUB 990. Далее, со строки 12. начинается выполнение игры.

В строках 50-56. в зависимости от параметра V, происходит про-
рисовка 1, 2 или 3 лабиринта соответственно при помощи подпрограмм
со строк 6В0, 820 или 2000.

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

Контроль нажатия управляющих клавишей и изменение координат
Орфея в зависимости от этого происходит в строках 130-160.

Строки 180-200 служат для реализации некоторых полезных дейс-
твий: переходы между "норками" и др

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

В зависимости от условий совпадения координат или других, мы
попадаем на подпрограммы контроля, расположенные со строки 440.

Со строки 520 расположена подпрограмма, на которую мы попадаем
в случае успешного достижения цели. Происходит увеличение на 1 па-
раметра V, определяющего лабиринт и, после вывода таблички, игра
продолжается на новом поле.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Listh language news - down pros and cons of lists vs. heap.
ANOTHER WORLD - Перепалка (о журнале AMIGA RULES).
Стихи - Программистам-эмигрантам.
Введение - о втором номере журнала.
От редакции - новую еженедельную электронную газету Review of Impart BBS , в которой вы сможете узнать все последние новости, связанные с работой этой станции.

В этот день...   28 марта