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

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


ЛИСЫ

Охота на лис - это логическая игра, название которой дала игра радиолюбительская, заключающаяся в том, что спортсмены с радиоприемниками передвигаются по пересеченной местности, пытаясь «засечь» и найти спрятанные

передатчики («лисы») и получая за это определенные очки.

Цель нашей игры - обнаружить и уничтожить пятерых «лис», спрятанных на поле размером 9x9 клеток. Играющий может просматривать клетки поля, вводя два числа, X и Y, где X номер клетки по горизонтали, а Y - номер клетки по вертикали. Номера клеток проставлены слева и сверху поля. После ввода координат клетки на поле в заданном месте загорается число. Это число показывает, сколько «лис» находится на одной линии с этой точкой, считая по горизонтали, вертикали и двум диагоналям вместе. Например, если на одной прямой по горизонтали (вертикали, диагонали) с вашей точкой есть три «лисы», то в этой клетке загорится число 3. Другой пример. Пусть на горизонтали Y = 5 имеется 2 «лисы», на вертикали Х = 3 есть одна «лиса» и на диагоналях, проходящей через точку Х = 3, Y = 5 также есть одна «лиса». Если теперь ввести эти координаты, то вы увидите в соответствующей клетке поля число 4.

Выстрел за выстрелом, на поле будут появляться числа, на основании которых можно вычислить положения всех «лис». Побеждает тот, кто за меньшее количество выстрелов обнаружит 5 «лис». Для выхода из игры необходимо вместо координат ввести два нуля, то есть Х = 0, Y = 0.

Программа 35. ЛИСЫ.

10 BORDER 0: PAPER 0: INK 5 15 OVER 0: FLASH 0: BRIGHT 0

18 CLS

19 GO SUB 6100

20 GO SUB 7000

22 LET HOD=50: LET RE=50 40 GO SUB 5000 45 CLS 47 PAUSE 30 50 DIM M$(3,22) 55 LET F=0

60 LET M$(1)="nnnnnnSTART GAME" 62 LET M$(2)="nnnnnSAVE program" 64 LET M$(3)="nnnnnQUIT PROGRAM"

70 PRINT AT 2,5; INK 3;"***"; INK 6;" HUNTING THE FOX ";INK 3;"***"

72 INK 1: PLOT 39,59: DRAW 0,64: DRAW 177,0: DRAW 0,-64:DRAW -177,0

75 INK 5

80 FOR N=1 TO 3

90 PRINT AT N*2+6,5;M$(N)

100 NEXT N

102 PAPER 1: INK 5: PRINT AT 18,13;"nnnnnn": PRINT AT 18,15 ;RE: PAPER 0

103 PRINT AT 16,13; INK 2;"record" 105 PRINT AT 8,5; PAPER 1;M$(1)

107 PRINT AT 20,0; INK 4;"6-down, 7-up, ENTER-start"

110 LET No=1

120 LET Noo=No

130 LET a=CODE INKEY$

135 IF INKEY$="6" THEN LET No=No+1: GO TO 160

140 IF INKEY$="7" THEN LET No=No-1: GO TO 160

145 IF a=13 OR INKEY$="0" THEN GO TO 210

150 GO TO 130

160 IF No=0 THEN LET No=3

170 IF No=4 THEN LET No=1

180 PRINT AT No*2+6,5; PAPER 1;M$(No)

190 PRINT AT Noo*2+6,5; PAPER 0;M$(Noo)

195 BEEP 0.01,20: FOR N=1 TO 40: NEXT N

200 GO TO 120

210 BEEP 0.05,0

215 IF No=1 THEN GO TO 250

220 IF No=2 THEN GO TO 5800

230 IF No=3 THEN GO TO 6000

240 REM ------START GAME----

250 DIM P$(9,9)

255 LET HOD=0: LET PROM=0:

257 LET POP=0

260 CLS

290 FOR N=1 TO 5

300 LET X=INT (RND*9+1)

310 LET Y=INT (RND*9+1)

320 IF P$(X,Y)="L" THEN GO TO 300

330 LET P$(X,Y)="L"

340 NEXT N

350 CLS

360 REM -----------

400 FOR N=12 TO 156 STEP 16 410 PLOT N,163: DRAW 0,-144 420 NEXT N

430 FOR N=163 TO 15 STEP -16

440 PLOT 12,N: DRAW 144,0

450 NEXT N

455 INK 6

460 FOR N=1 TO 9

470 PRINT AT N*2,0;N

480 NEXT N

490 PRINT AT 0,2;"1 2 3 4 5 6 7 8 9"

491 INK 5

492 PLOT 163,163: DRAW 90,0: DRAW 0,-144: DRAW -90,0: DRAW 0,144: PLOT 165,161: DRAW 86,0: DRAW 0,-140: DRAW -86,0: DRAW 0,140

493 INK 3: PRINT AT 3,23;"SHOTS:": PRINT AT 8,24;"HITS:": PRINT AT 13,22;"X and Y": PRINT AT 14,21;"LAST SHOT"

495 PAPER 1: PRINT AT 5,23;"nnnnnn": PRINT AT 10,23;"nnnnnn" 497 PAPER 0

500 REM ------------

502 LET X=0: LET Y=0

510 LET X1=X: LET Y1=Y: GO SUB 2000

511 INPUT "X=";X,"Y=";Y

514 IF X=0 AND Y=0 THEN GO SUB 5000: GO TO 45

515 IF X<1 OR X>9 OR Y<1 OR Y>9 THEN BEEP 0.5,-23: GO TO 511 520 LET HOD=HOD+1

525 LET KOL=0

530 IF P$(X,Y)="L" THEN GO TO 1000

540 REM ----1----

550 FOR N=1 TO 9

560 IF P$(N,Y)="L" THEN LET KOL=KOL+1 570 NEXT N 580 REM ----2-590 FOR N=1 TO 9

600 IF P$(X,N)="L" THEN LET KOL=KOL+1

610 NEXT N 620 REM ---3---625 LET M=Y 630 LET N=X 650 LET M=M-1 670 LET N=N-1

675 IF N<1 OR M<1 THEN GO TO 700

680 IF P$(N,M)="L" THEN LET KOL=KOL+1

690 GO TO 650

700 LET N=X: LET M=Y

710 LET N=N+1: LET M=M+1

720 IF N>9 OR M>9 THEN GO TO 750

730 IF P$(N,M)="L" THEN LET KOL=KOL+1

740 GO TO 710

745 REM ----4----

750 LET N=X: LET M=Y

760 LET N=N-1: LET M=M+1

770 IF N<1 OR M>9 THEN GO TO 800

780 IF P$(N,M)="L" THEN LET KOL=KOL+1

790 GO TO 760

800 LET N=X: LET M=Y

810 LET N=N+1: LET M=M-1

820 IF N>9 OR M<1 THEN GO TO 850

830 IF P$(N,M)="L" THEN LET KOL=KOL+1

840 GO TO 810

850 GO SUB 1050

860 GO TO 510

1000 REM --P.P. PRINT FOX-

1010 PRINT AT Y*2,X*2; BRIGHT 1; INK 2;"A"

1015 FOR m=1 TO 2: FOR n=20 TO 0 STEP -5: BEEP 0.03,n: PAUSE 1: NEXT n: FOR n=0 TO 20 STEP 5: BEEP 0.03,n: PAUSE 1: NEXT n: NEXT m 1020 LET POP=POP+1 1025 GO SUB 2000

1030 IF POP>=5 THEN GO SUB 3000: GO SUB 5000: GO TO 45 1040 GO TO 510 1050 REM --P.P. PRINT -1060 INK 4: BRIGHT 1: PRINT AT Y*2,X*2;KOL 1065 BRIGHT 0: BEEP 0.06,-5 1070 RETURN

2000 REM ----P.P. PRINT

2010 PAPER 1: INK 4: PRINT AT 5,25;HOD 2020 PRINT AT 10,25;POP

2030 PRINT AT 17,22;"h= u=": PRINT AT 17,24;X1: PRINT AT 17,29;Y1 2035 PAPER 0 2040 RETURN

2140 REM ----------------------

3000 REM----KONEC----

3010 FOR N=1 TO 100: NEXT n

3020 PRINT AT 21,0; INK 2; BRIGHT 1;" BBBBBBBBBBBBB ";BRIGHT 0; INK 4;HOD;BRIGHT 1; INK 2;" BBBBBBBBBBBBB":BRIGHT 0 3030 PAUSE 0

3035 IF RE>HOD THEN LET RE=HOD 3040 RETURN

5000 REM ---- Zastawka ---5002 LET hod=50 5005 CLS

5010 DIM L$(9,32)

5020 let L$(1)="nnnnnnBBB BnnnnBnnBBBBnnBnnnnnnB" 5022 LET L$(2)=nnnnnBnnB BnnnnB BnnnnB BnnnnnnB" 5024 let L$(3)= nnnnBnnnB BnnnnB BnnnnnnBnnnnnnB"

5026 LET L$(4)="nnnBnnnnB ВПППВВ ВППППППВВВВВППВ" 5028 LET L$(5)=nnnBnnnnB ВППВ В ВППППППВППППВ В" 5030 LET L$(6)="nnnBnnnnB В ВППВ ВППППППВППППВ В" 5032 LET L$(7)="nnnBnnnnB ВВПППВ ВППППППВППППВ В" 5034 LET L$(8)="nnBnnnnnB ВППППВ ВППППВ ВППППВ В" 5036 LET L$(9)="BBnnnnnnB ВППППВППВВВВППВВВВВППВ" 5040 BRIGHT 1

5045 FOR N=32 TO 0 STEP -1

5050 FOR M=9 TO 1 STEP -1

5060 PRINT AT M+6,0; INK 2;L$(M)(N+1 TO 32)

5070 NEXT M

5075 BEEP 0.003,20

5077 IF INKEY$<>"" THEN BRIGHT 0: RETURN 5080 NEXT N 5185 BRIGHT 0

5190 LET B$="SANKT-PETERBURG": LET YK=0: LET XK=8: LET CK=5 : GO SUB 5510

5200 LET B$="1993": LET YK=2: LET XK=13: LET CK=4:GO SUB 5500

5210 LET B$="AUTHOR:K. Igor": LET YK=4: LET XK=9: LET CK=6:GO SUB 5510

5220 LET B$="Press any key to continue": LET YK=20:LET XK=3 : LET CK=7: GO SUB 5510

5225 LET P=0

5230 REM ----------------

5240 LET C=INT (RND*6+1)

5245 LET B=INT <RND*1.1>

5250 LET Y=INT (RND*9+1)

5260 LET X=INT (RND*32+1)

5265 IF L$(Y,X)=" " THEN GO TO 5250

5270 PRINT AT Y+6,X-1; BRIGHT B; INK C;L$(Y,X)

5275 LET P=P+1

5280 IF INKEY$<>"" OR P>2000 THEN RETURN 5290 GO TO 5240

5499 STOP

5500 REM ---- B.KWADRAT ---5510 LET S=LEN B$

5520 FOR N=1 TO S 5530 LET C$=B$(N TO N)

5540 PRINT AT YK,XK+N; INK CK;C$; PAPER 3;" " 5545 BEEP 0.03,10 5550 NEXT N

5555 PRINT AT YK,N+XK;" " 5557 PAUSE 15 5560 RETURN

5800 REM ----SAVE PROGRAM----

5810 CLS

5820 PRINT AT 9,1; INK 5;"SAVE program HUNTING THE FOX" 5830 SAVE "FOXES" LINE 10 5840 PAUSE 30 5850 GO TO 45

6000 REM --WYHOD IZ PROGRAMY--6010 BORDER 1: PAPER 1: INK 5 6020 CLS 6030 STOP

6100 REM -- Graphics ------

6110 FOR N=0 TO 15 6120 READ S 6130 POKE USR "A"+N,S 6140 NEXT N 6150 RETURN

6160 DATA 2,30,46,254.30,127,15,15 6170 DATA 124,222,158,254,254,254,124,0 7000 REM ----BEEP----

7010 BEEP 0.1,0: BEEP 0.1,5:BEEP 0.1,10: BEEP 0.1,15:BEEP 0.1,20 7020 RETURN




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Обратная связь - контакты редакции.
Бук - Похождения Штиpлица и дpугие пpиключения Боpмана.
Юмор - анекдоты.
IBM - IBM + Эмулятор = ZX Spectrum.
Millennium’1901 - Взгляд изнутри. День второй.

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