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

Приложение 1 - игровая программа "СПРУТЫ".


СПРУТЫ

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

Клавиши управления подводной лодкой:

Р - вправо; О - влево; Q - вверх; А - вниз.

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

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

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

Программа 41. СПРУТЫ.

20 BORDER 0: PAPER 0: INK 7 30 CLS

40 FOR f=USR "a" TO USR "d"+7 50 READ a: POKE f,a 60 NEXT f

65 POKE USR "s",16 70 DATA

0,12,158,255,62,0,0,0,93,42,255,60,74,82,146,74,0,24,24,16,124,16,40,68,170,85,170,85

,170,85,170,85

90 READ a,b,a$

100 FOR s=1 TO LEN a$: PRINT AT a,b;a$(1 TO s): BEEP .02,-20: NEXT s 110 DATA 6,11,"S P R U T S"

120 FOR r=6 TO 26 STEP 2: PRINT AT 2,r; INK RND*5+1;"B";AT 10,r; INK RND*5+1;"B": NEXT r

130 FOR r=2 TO 10 STEP 2: PRINT AT r,6; INK RND*5+1;"B";AT r,26; INK RND*5+1;"B": NEXT r

140 FOR f=6 TO 0 STEP -1: PRINT AT 14,11; INK f;"Start - ~S~": IF INKEY$<>"s" THEN PAUSE 5: NEXT f: PAUSE 5: GO TO 140 160 REM Start!

170 PAPER 0: INK 7: BORDER 0: CLS

180 FOR f=0 TO 31: READ w: FOR g=21 TO w STEP -1: PRINT AT g,f;"D": NEXT g: NEXT f 190 DATA

17,16,15,16,14,13,12,15,12,11,10,11,12,13,14,15,17,16,15,14,13,12,13,15,14,15,16,17,1 8,21,14,15

200 PRINT AT 0,0;"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" 210 READ a$: INK 4: BRIGHT 1: FOR f=1 TO LEN a$ STEP 2: PRINT AT 0,11;a$(1 TO f): BEEP .25,-25: NEXT f: BRIGHT 0: INK 7 220 DATA "S P R U T S"

250 FOR f=1 TO 5: READ a,b: PRINT AT a,b; INK 6;"C": BEEP.1,25: PAUSE 10: NEXT f 260 DATA 15,3,14,7,16,16,14,23,20,29 265 DIM x(3): DIM y(3)

270 FOR f=1 TO 3

271 LET y(f)=8: READ x(f): PRINT AT y(f),x(f); INK 2;"B": NEXT f

272 DATA 5,15,25

273 LET y=1: LET x=15: PRINT AT y,x; INK 5;"A"

275 LET c=150: LET l=0

276 LET c=c-1: PRINT AT 0,0;c;" ": IF c=0 THEN GO TO 5000

277 IF l=5 AND x=15 AND y=1 THEN GO TO 6000

290 IF INKEY$="p" AND x<31 THEN GO SUB 3000

291 IF INKEY$="o" AND x>0 THEN GO SUB 3100

292 IF INKEY$="q" AND x>1 THEN GO SUB 3200

293 IF INKEY$="a" AND y<21 THEN GO SUB 3300 300 FOR z=1 TO 3: LET r=INT (RND*4+1)

310 GO SUB 3900+100*r 320 NEXT z 400 GO TO 276

3000 IF SCREEN$ (y,x+1)<>" " THEN GO TO 5000

3010 PRINT AT y,x;" ": LET x=x+1: PRINT AT y,x; INK 5;"A"

3020 RETURN

3100 IF SCREEN$ (y,x-1)<>" " THEN GO TO 5000

3110 PRINT AT y,x;" ": LET x=x-1: PRINT AT y,x; INK 5;"A"

3120 RETURN

3200 IF SCREEN$ (y-1,x)<>" " THEN GO TO 5000

3210 PRINT AT y,x;" ": LET y=y-1: PRINT AT y,x; INK 5;"A"

3220 RETURN

3300 IF SCREEN$ (y+1,x)<>" " AND x=3 AND y+1=15 OR x=7 AND y+1=14 OR x=16 AND y+1=16 OR x=23 AND y+1=14 OR x=29 AND y+1=20 THEN PRINT AT y+1,x;" ": GO SUB 5500: GO TO

3320

3315 IF SCREEN$ (y+1,x)<>" " THEN GO TO 5000

3320 PRINT AT y,x;" ": LET y=y+1: PRINT AT y,x; INK 5;"A"

3330 RETURN

4000 IF x(z)<30 AND SCREEN$ (y(Z)+1,x(z))=" " THEN PRINT AT y(Z),x(z);" ": LET x(z)=x(z)+1: IF x(z)>31 THEN LET x(z)=31 4005 PRINT AT y(z),x(z); INK 2;"B" 4010 RETURN

4100 IF x(z)>0 AND SCREEN$ (y(z),x(z)-1)=" " THEN PRINT AT y(z),x(z);" ": LET x(z)=x(z)-1: PRINT AT y(z),x(z); INK 2;"B" 4110 RETURN

4200 IF y(z)>1 AND SCREEN$ (y(z)-1,x(z))=" " THEN PRINT AT y(z),x(z);" ": LET y(z)=y(z)-1: PRINT AT y(z),x(z); INK 2;"B" 4210 RETURN

4300 IF y(z)<21 AND SCREEN$ (y(z)+1,x(z))=" " THEN PRINT AT y(z),x(z);" ": LET y(z)=y(z)+1: PRINT AT y(z),x(z); INK 2;"B" 4310 RETURN

5000 BEEP 1,-40: PRINT AT y,x; INK 1;"*" 5020 LET l$="nnGAME OVERnn"

5030 PAUSE 30: FOR f=1 TO LEN l$: PRINT AT 19,10; INK 2;BRIGHT 1;l$(1 TO f): BEEP

.1,-28: NEXT f

5040 PAUSE 200: RUN

5500 PRINT AT y+1,x;" ": LET l=l+1

5505 PRINT AT 0,26+l; INK 6;"C": BEEP .0007,56: BEEP .0005,40 5520 RETURN

6000 PAPER 0: INK 7: BORDER 0: CLS

6010 FOR f=0 TO 11: PRINT AT 10,f; INK 5;"A": PAUSE 5:PRINT AT 10,f;" ": NEXT f 6020 FOR f=12 TO 16: PRINT AT 10,f; INK 5;"A": PRINT AT 11,f; INK 6;"C": PAUSE 5: PRINT AT 10,f;" ": NEXT f

6030 FOR f=17 TO 31: PRINT AT 10,f; INK 5;"A": PAUSE 5:PRINT AT 10,f;" ": NEXT f 6040 LET l$="BRAWO!"

6050 FOR f=1 TO LEN l$: PRINT AT 11,12;l$(1 TO f): BEEP.1,f+10: NEXT f 6060 PAUSE 30: FOR f=1 TO 30: BEEP .1,RND*20+20: BORDER RND*7: NEXT f 6070 PAUSE 100 6090 RUN




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Millennium’1901 - Hidden Part. День первый.
P.S. - как вы успели заметить новый номер вышел в новой оболочке.
Железо - архитектура БИС параллельного интерфейса KP580BB55.
Новье !? - О программах: Lemmings 2, Color Balls, The Red Stone 1&2, Crimes Santa Clause, Fillers, Prince of Persia, Soldier of Future.
Дела сисопские - ZXNet под бой курантов...

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