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

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


ПИРАМИДА

B начале игры фишки находятся на клетках первого (нижнего) ряда игрового поля. Играющий имеет право выполнить один ход - по вертикали, горизонтали или дополнительное продвижение.

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

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

Дополнительные продвижения. Чтобы получить преимущество над соперником, необходимо создавать и использовать возможности дополнительных продвижений. В процессе игры три любые фишки, в том числе свои и противника, могут занять положение треугольником две снизу,

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

В - выбор фишки. N - выбор поля для хода. М - выполнение хода. Е - конец игры.

Программа 37. ПИРАМИДА.

5 BORDER 0: OVER 0: PAPER 0: FLASH 0: INK 0: CLS

7 LET pau=500

50 FOR n=0 TO 63: READ i: POKE USR "a"+n,i: NEXT n

55 DATA 128,128,128,128,128,128,128,128,255,128,128,128, 128,128,128,128,255,0,0,0,0,0,0,0,255,255,248,240,224,192, 192,192,255,255,31,15,7,3,3,3,192,192,192,224,240,248,255,255, 3,3,3,7,15,31,255,255,0,255,0,255,0,255,0,255 100 GO TO 3000

500 REM ----START GAME-------

505 BORDER 0: PAPER 0: INK 0: CLS

510 DIM a(13,13): DIM x(6): DIM y(6): DIM h(6): DIM v(6)

515 DIM 0(14): DIM p(14): DIM r(6): DIM u(6)

520 LET c=1: LET wr1=0: LET wr2=0: LET wr11=0: LET wr12=0:LET mm1=0: LET mm2=0 600 LET t=1

605 FOR i=1 TO 11: LET t=t+1: LET a(t,i)=2: NEXT i 610 FOR i=1 TO 12: LET a(i,12)=1: NEXT i

615 FOR i=1 TO 6: LET u(i)=12: LET v(i)=12: LET R(i)=i: LET h(i)=i+6: NEXT i

620 REM **********************

621 BRIGHT 0

622 for i=0 to 21: paper 1:print at i,0;"nnnnnnnnnnnnnnnn";PAPER

2;"ПППППППППППППППП":NEXT i 625 BRIGHT 0

627 LET j=13: INK 0: PAPER 6

630 FOR i=1 TO 10: LET j=j-1: FOR t=1 TO i+1:PRINT AT i*2-1,j+t*2;"BC": PRINT AT

i*2,j+t*2;"A ":

NEXT t: NEXT i

635 PRINT AT 0,15;"ПП"

640 PRINT AT 21,4; BRIGHT 1; PAPER 1;"DEDEDEDEDEDE";PAPER 2;"DEDEDEDEDEDE"; BRIGHT 0 642 PRINT AT 3,25; PAPER 2; INK 7;"00:00" 645 GO TO 1370

650 REM ***********************

651 GO TO 660

652 FLASH 0: LET x1=x(f): LET y1=y(f): GO SUB 2800: PRINT AT yy,xx;"DE": IF y(f)<>12 THEN PRINT AT yy+1,xx;"FG"

653 RETURN 660 LET f=1 662 BRIGHT 1

665 IF f>6 THEN LET f=1 667 PAPER c: INK 0

670 FLASH 1: LET x1=x(f): LET y1=y(f): GO SUB 2800: PRINT AT yy,xx;"DE": IF y(f)<>12 THEN PRINT AT yy+1,xx;"FG" 675 FLASH 0

680 IF INKEY$="b" OR INKEY$="B" THEN GO SUB 652: BEEP 0.02,50: LET f=f+1: GO TO 665

682 IF INKEY$="n" OR INKEY$="N" THEN BEEP 0.02,0: GO TO 750

683 IF INKEY$="e" OR INKEY$="E" THEN GO TO 3000 690 GO SUB 2100

700 GO TO 680 750 LET e=1

760 IF y(f)=12 THEN GO TO 800

765 IF a(x(f),y(f)*1)=1 AND a(x(f)+1,y(f)+1)=1 THEN GO TO 800

770 LET i=0: LET ii=y(f)

772 LET i=i+1: IF i>6 THEN GO TO 800

774 IF y(i)>ii THEN GO TO 900

775 GO TO 772 780 GO TO 900

800 IF x(f)-1<=0 THEN GO TO 805

801 IF a(x(f)-1,y(f)-1)<>1 AND a(x(f)-1,y(f)-1)<>2 THEN LET o(e)=x(f)-1: LET p(e)=y(f)-1: LET e=e+1

805 IF a(x(f),y(f)-1)<>1 AND a(x(f),y(f)-1)<>2 THEN LET o(e)=x(f): LET p(e)=y(f)-1: LET e=e+1

899 REM ***********

900 LET k=x(f) 910 LET k=k+1

915 IF k>12 THEN GO TO 930

920 IF a(k,y(f))<>1 AND a(k,y(f))<>2 THEN LET o(e)=k: LET p(e)=y(f): LET e=e+1: GO TO 910

925 REM ********** 930 LET k=x(f) 940 LET k=k-1

945 IF k<1 THEN GO TO 1000

950 IF a(k,y(f))<>1 THEN LET o(e)=k: LET p(e)=y(f):LET e=e+1: GO TO 940 960 REM ******************** 1000 LET i=1

1002 IF o(1)=0 OR p(1)=0 THEN GO TO 662 1005 IF o(i)=0 OR p(i)=0 THEN LET i=1

1007 IF p(i)=1 THEN PRINT AT 0,15; FLASH 1; PAPER 6; INK 0;BRIGHT 0;"HH": GO TO 1020 1010 LET x1=o(i): LET y1=p(i): GO SUB 2800: FLASH 1: BRIGHT 0: PAPER 6: INK 0: PRINT AT yy,xx;"HH": IF y1<>12 THEN PRINT AT yy+1,xx;"HH"

1020 IF INKEY$="N" OR INKEY$="n" THEN GO SUB 2050:BEEP 0.02,0: LET i=i+1: GO TO 1005 1030 IF INKEY$="B" OR INKEY$="b" THEN GO SUB 2050: BEEP 0.02,50: FOR t=1 TO 14: LET o(t)=0: LET p(t)=0: NEXT t: GO TO 665

1035 IF INKEY$="m" OR INKEY$="M" THEN BEEP 0.01,0: BEEP 0.01,10: BEEP 0.01,20: GO TO 1200

1036 IF INKEY$="e" OR INKEY$="E" THEN GO TO 3000

1037 GO SUB 2100 1040 GO TO 1020

1050 REM *********************

1200 REM *

1201 FLASH 0

1205 IF p(i)=1 THEN BRIGHT 0: PAPER 6: INK 0: LET x1=x(f): LET y1=y(f): GO SUB 2800: PRINT AT yy,xx;"BC": PRINT AT yy+1,xx;"A ": PRINT AT 0,15; PAPER c; INK 0; BRIGHT 1;"FG": GO TO 2300

1210 IF y(f)=12 THEN BRIGHT 0: PAPER 6: INK 0: LET x1=x(f): LET y1=12: GO SUB 2800: PRINT AT yy,xx;"BC": BRIGHT 1: PAPER c: INK 0: LET x1=o(i): LET y1=p(i): GO SUB 2800: PRINT AT yy,xx;"DE": LET a(x(f),y(f))=0: LET a(o(i),p(i))=1: LET x(f)=o(i): LET y(f)=p(i): GO SUB 2000: GO TO 1300

1230 BRIGHT 0: PAPER 6: INK 0: LET x1=x(f): LET y1=y(f): GO SUB 2800: PRINT AT yy,xx;"BC": PRINT AT yy+1,xx;"A ": BRIGHT 1: PAPER c: INK 0: LET x1=o(i): LET y1=p(f): GO SUB 2800: PRINT AT yy,xx;"DE": PRINT AT yy+1,xx;"FG": LET a(o(i),p(i))=1: LET a(x(f),y(f))=0: LET x(f)=o(i): LET y(f)=p(i) 1300 IF c=1 THEN GO TO 1310 1305 IF c=2 THEN GO TO 1340

1310 FOR t=1 TO 6: LET r(t)=x(t): LET u(t)=y(t): NEXT t 1320 GO TO 1350

1340 FOR t=1 TO 6: LET h(t)=x(t): LET v(t)=y(t): NEXT t 1350 IF c=1 THEN LET c=2: GO TO 1370 1360 IF c=2 THEN LET c=1

1370 IF c=1 THEN FOR t=1 TO 6: LET x(t)=r(t): LET y(t)=u(t): NEXT t 1380 IF c=2 THEN FOR t=1 TO 6: LET x(t)=h(t): LET y(t)=v(t): NEXT t 1385 FOR t=1 TO 14: LET o(t)=0: LET p(t)=0: NEXT t 1390 GO TO 660

1395 REM ********************

2000 IF p(i)<>12 THEN PRINT AT yy+l,xx;"FG": RETURN

2010 RETURN

2050 LET x1=o(i): LET y1=p(i): GO SUB 2800: FLASH 0: BRIGHT 0: PAPER 6: INK 0: PRINT AT yy,xx;"BC": IF y1<>12 THEN PRINT AT yy+1,xx;"A "

2055 LET x1=x(f): LET y1=y(f): GO SUB 2800: FLASH 1: BRIGHT 1: PAPER c: INK 0: PRINT

AT yy,xx;"DE": IF y1<>12 THEN PRINT AT yy+1,xx;"FG"

2060 RETURN

2100 REM *** VREM ***

2110 IF c=1 THEN GO TO 2130

2120 IF c=2 THEN GO TO 2200

2130 LET WR11=WR11+0.105

2140 LET WR1=INT (WR11)

2150 IF UR1=60 THEN LET WR11=0: LET wr1=0: LET mm1=mm1+1 2155 IF mm1>=60 THEN LET mm1=0

2160 INK 7: PAPER 1: BRIGHT 0: FLASH 0

2161 PRINT AT 3,1;" ";

2162 IF mm1<10 THEN PRINT AT 3,2; "0";

2164 PRINT mm1;":";: IF wr1<10 THEN PRINT "0";

2166 PRINT wr1

2168 INK 0: BRIGHT 1

2170 RETURN

2200 LET WR12=WR12+0.105 2210 LET WR2=INT (WR12)

2220 IF WR2=60 THEN LET WR12=0: LET WR2=0: LET MM2=MM2+1

2230 IF MM2>=60 THEN LET MM2=0

2240 INK 7: PAPER 2: BRIGHT 0: FLASH 0

2250 PRINT AT 3,24;" ";

2260 IF mm2<10 THEN PRINT AT 3,25;"0";

2270 PRINT mm2;":";: IF wr2<10 THEN PRINT "0";

2280 PRINT wr2

2285 INK 0: BRIGHT 1

2290 RETURN

2300 REM *** MUZYKA ***

2305 FOR j=4 TO 15

2310 FOR t=-20 TO 30 STEP j

2320 BEEP 0.02,t

2330 NEXT t

2340 NEXT j

2342 FOR i=1 TO 15: LET ch=INT (RND*20+10): BEEP 0.02,ch:NEXT i

2350 REM ** KONEC IGRY **

2360 GO TO 3000

2800 REM ****************

2820 LET xx=2+x1*2+(12-y1): LET yy=y1*2-3

2830 RETURN

3000 REM *** MENQ ***

3010 PAPER 0: FLASH 0: BORDER 0: CLS

3015 PAPER 2

3020 FOR i=0 TO 21: PRINT AT i,0;" ": NEXT i: FOR i=0 TO 31: PRINT AT 21,i;" ": NEXT i: FOR i=21 TO 0 STEP -1: PRINT AT i,31;" ": NEXT i: FOR i=31 TO 0 STEP -1: PRINT AT 0,i;" ": NEXT i

3025 PAPER 1

3030 FOR i=1 TO 20: PRINT AT i,1;" ": NEXT i: FOR i=1 TO 30: PRINT AT 20,i;" ": NEXT i: FOR i=20 TO 1 STEP -1:PRINT AT i,30;" ": NEXT i: FOR i=30 TO 1 STEP -1:PRINT AT 1,i;" ": NEXT i

3035 PAPER 7

3040 FOR i=2 TO 19: PRINT AT i,2;" ": NEXT i: FOR i=2 TO 29: PRINT AT 19,i;" ": NEXT i: FOR i=19 TO 2 STEP -1: PRINT AT i,29;" ": NEXT i: FOR i=29 TO 2 STEP -1: PRINT AT 2,i;" ": NEXT i

3045 PAPER 0

3050 PRINT AT 4,12; INK 6;"PIRAMIDA"

3060 PRINT AT 7,10; INK 1; BRIGHT 1;"Press any key";AT 9,11,"to continue"

3070 PRINT AT 12,8; INK 3;"SANKT-PETERBURG"

3080 PRINT AT 14,14; INK 7;"1992"

3082 PRINT AT 16,4; INK 3;"AUTHOR:KAPULTSEVICH IGOR"

3085 INK 7

3090 PLOT 24,87: DRAW 208,0: PLOT 24,85: DRAW 208,0 3100 IF INKEY$<>"" THEN BEEP 0.1,15: GO TO 500 3110 GO TO 3100




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
От авторов - Креаторы и всё такое.
Обзор - Поступило большое количество электронных газет.
Железо - схема Cashe памяти для Спектрума.
Реклама - Реклама и объявления.
Credits - Мнения редакции не всегда совпадают с мнением автора статьи.

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