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

Приложение 1 - игровая программа "МИНЫ".


ПРИЛОЖЕНИЕ 1. НЕСКОЛЬКО ИГРОВЫХ ПРОГРАММ

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

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

Для этого предлагаем такую последовательность действий:

1. Введите в компьютер бейсик-программу нового набора символов и запустите ее оператором RUN. B результате этого в памяти компьютера образуется кодовый блок, содержащий русские буквы.

2. Запишите этот кодовый блок на ленту с помощью оператора

SAVE "NEW_SYMBOL"CODE 64256,768

3. Загрузите игровую бейсик-программу с ленты или введите ее из книги, после чего добавьте в текст строки:

1 CLEAR 64255

2 LOAD ""CODE: POKE 23607,250

и запустите оператором RUN. При этом с ленты потребуется ввести записанную ранее программу NEW_SYMBOL.

4. После окончания загрузки на свободные строки игровой программы можно вводить русский текст. Но лучше всего образовать отдельную подпрограмму «Правила» где-нибудь в конце программы.

МИНЫ

Цель игры состоит в том, чтобы пройти по полю, на котором случайным образом расставлены мины. Количество мин вы задаете сами в начале игры, после того как появится надпись RANG [10-150].

Пройти необходимо из левого нижнего угла экрана в правый верхний угол по любой траектории, управляя человечком с помощью следующих клавиш: 2 - вверх, 3 - вверх и вправо, S - вниз, 1 - вверх и влево, Е - вправо, D - вниз и вправо, Q - влево, А - вниз и влево.

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

Программа 34. МИНЫ.

30 POKE 23658,8 50 FOR N=0 TO 23 60 READ S

70 POKE USR "A"+N,S 80 NEXT N

90 DATA 56,56,16,254,56,56,40,40 100 DATA 129,90,36,90,90,36,90,129 110 DATA 170,85,170,170,170,85,170,170 115 BORDER 1: PAPER 1: INK 6: CLS 117 DIM P(30,18)

120 PRINT AT 3,6;"********************"

130 PRINT AT 7 6;"********************"

140 FOR N=4 TO'6'

150 PRINT AT N,6;"*"

160 PRINT AT N,25;"*"

170 NEXT N

180 PRINT AT 5,11; INK 3;"M I N Y"

190 LET A$="PRESS ANY KEY TO CONTINUE"

195 LET C=2

200 FOR N=1 TO 25

205 IF INKEY$<>"" THEN GO TO 250

210 LET C=C+1: IF C>7 THEN LET C=2

220 PRINT AT 18,N+2; INK C;A$(N TO N)

230 NEXT N

240 IF INKEY$="" THEN GO TO 200 250 CLS

260 INPUT AT 13,0;AT 0,8;"RANG (10-150):";MIN

270 IF MIN<10 OR MIN>150 THEN GO TO 250

280 PRINT AT 11,10; INK 6;"PLEASE WAIT!"

300 FOR N=1 TO MIN

310 LET V=INT (RND*18+1)

320 LET H=INT (RND*30+1)

330 IF P(H,V)=1 THEN GO TO 310

340 LET P(H,V)=1

350 NEXT N

355 LET P(1,18)=0: LET P(30,1)=0 360 FOR N=1 TO 18

370 PRINT AT N,2; INK 4;PAPER 0;"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" 380 NEXT N

390 LET SA=0: LET X=1: LET Y=18: LET X1=X: LET Y1=Y

400 PRINT AT 1,31; INK 6;"C"

410 IF INKEY$="2" THEN LET Y=Y-1: GO TO 500

415 IF INKEY$="S" THEN LET Y=Y+1: GO TO 500

420 IF INKEY$="Q" THEN LET X=X-1: GO TO 500

425 IF INKEY$="E" THEN LET X=X+1: GO TO 500

430 IF INKEY$="1" THEN LET X=X-1: LET Y=Y-1: GO TO 500

435 IF INKEY$="3" THEN LET X=X+1: LET Y=Y-1: GO TO 500

440 IF INKEY$="D" THEN LET X=X+1: LET Y=Y+1: GO TO 500

445 IF INKEY$="A" THEN LET X=X-1: LET Y=Y+1: GO TO 500

450 GO TO 510

500 LET SA=SA+1: PRINT AT 0,14; INK 7; PAPER 1;"SHAG:";SA:BEEP 0.01,-5 502 IF X>30 OR X<1 OR Y>18 OR Y<1 THEN LET X=X1: LET Y=Y1:GO TO 410 505 PRINT AT Y1,X1+1; INK 1; PAPER 4;"C"

510 IF X>30 OR X<1 OR Y>18 OR Y<1 THEN LET X=X1: LET Y=Y1:GO TO 410 512 LET KOL=0

515 IF X>1 THEN IF P(X-1,Y)=1 THEN LET KOL=KOL+1 520 IF X<30 THEN IF P(X+1,Y)=1 THEN LET KOL=KOL+1

525 IF Y>1 THEN IF P(X,Y-1)=1 THEN LET KOL=KOL+1

530 IF Y<18 THEN IF P(X,Y+1)=1 THEN LET KOL=KOL+1

535 IF X>1 THEN IF Y>1 THEN IF P(X-1,Y-1)=1 THEN LET KOL=KOL+1

540 IF X<30 THEN IF Y>1 THEN IF P(X+1,Y-1)=1 THEN LET KOL=KOL+1

545 IF X<30 THEN IF Y<18 THEN IF P(X+1,Y+1)=1 THEN LET KOL= KOL+1

550 IF X>1 THEN IF Y<18 THEN IF P(X-1,Y+1)=1 THEN LET KOL=KOL+1

570 IF KOL<>O THEN PRINT AT 21,10; INK 2;"RADOM ";KOL;" MIN !": GO TO 590

580 PRINT AT 21,0;"ППППППППППППППППППППППП"

590 PRINT AT Y,X+1; INK 2; PAPER 5;"A"

600 IF P(X,Y)=1 THEN GO TO 650

605 LET X1=X: LET Y1=Y

610 IF X=30 AND Y=1 THEN GO TO 1000

615 GO TO 410

620 REM ------------------

650 FOR N=0 TO 7

655 BEEP 0.01,-10: BEEP 0.01,-10: BEEP 0.01,-1:BEEP 0.01,10

660 PAUSE 10: BORDER N

670 NEXT N

680 BORDER 1

690 PAUSE 50

700 FOR N=1 TO 30

710 FOR M=1 TO 18

720 IF P(N,M)=1 THEN PRINT AT M,N+1; PAPER 0; INK 3;"B"

730 NEXT M

740 NEXT N

750 PAUSE 500

755 PAPER 0: BRIGHT 1

760 FOR N=0 TO 10

770 PRINT AT N,0; INK 1;"ПППППППППППППGAME "

780 PRINT AT 20-N,18; INK 2;"OVERПППППППППП"

790 PAUSE 5: BEEP 0.01,N*3

800 NEXT N

810 BRIGHT 0

820 FOR N=0 TO 9

830 PRINT AT N,13;"ППППППППППППППППППП"

840 PRINT AT 20-N,0;"ППППППППППППППППППП"

850 PAUSE 5: BEEP 0.01,30-N*3

860 NEXT N

870 PRINT AT 21,0;" "

880 FOR M=1 TO 5

890 FOR N=1 TO 7

900 PRINT AT 10,13; INK N;"GAME OVER"

910 BEEP 0.01,RND*40

920 NEXT N: NEXT M

930 GO TO 115

990 REM --------------------

1000 FOR N=1 TO 15 1010 FOR M=1 TO 18

1020 IF P(N,M)=1 THEN PRINT AT M,N+1; INK 3; PAPER 0;"B"

1030 IF P(31-N,M)=1 THEN PRINT AT M,32-N; INK 3; PAPER 0;"B"

1040 NEXT M

1050 NEXT N

1060 PAUSE 0

1070 GO TO 115




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Мир звуков Спектрума - глава 4.8: Синтезирование речи.
Demo-строение - о некоторых методах сортировки.
Под звуком "ПИ" - Ars/Fatality о Borndead'e, Unbeliever'e, Демосцене и будущем спектрума.
Железо - Из-за чего происходят помехи в модемной связи.
Курс изучения ассемблера - ЯЗЫК АССЕМБЛЕРА (4 часть).

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