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

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


Этот вариант настольной игры "ДЬЯВОЛЬСКИЕ ДИСКИ" рассчитан на
двух игроков Игровое поле представлено на рисунке Каждый игрок
имеет по 4 фишки (диска). Игроки ходят по-очереди. Каждый игрок
имеет право за один ход передвинуть один диск прямо вперед по нап-
равлению к сопернику на одну клетку. Правило передвижения такое.
Цвет поля, на которое будет передвинут диск, должен совпадать с
цветом одного из полей перед любым диском соперника: прямо перед
ним, или вперед по диагонали влево или вправо от диска противника.
Когда диск, продвигаясь вперед, достигает края игрового поля, он
пропадает. Теперь у Вашего соперника будет меньше вариантов для хо-
да .

Если Вы попытаетесь сделать недозволенный ход (согласно прави-
лу цвета), то, в наказание. Ваш диск будет отброшен на исходную по-
зицию. Поэтому внимательно смотрите за допустимостью хода!

Если возникает ситуация, когда ход недопустим, то Вы можете
отказаться от него (это лучше, чем оказаться опять иа начальной ли-
нии) .

Вначале игры, как правило, возможны любые ходы, ио потом, по
мере достижения Вашим противником края игрового поля и "сбросом"
своих дисков. Вам остается меньше вариантов для хода. Кроме того,
жизнь осложняют черные фигуры, которые, появляясь на экране, "съе-
дают" цвет, оставляя Вам меньше вариантов для хода

При наборе программы обратите внимание иа строку 5000: здесь
не графические, а обычные символы

1 GO ТО 10

2 BORDER 7: CLEAR 64599 LOAD
"chr"CODE 64600

3 POKE 23675,88: POKE 23676,2
55: GO SUB 5000

4 RUN

5 GO TO 9990

10 POKE 23606,88: POKE 23607,2

51

20 GO SUB 6500
30 GO SUB 500
40 LET SC01-0: LET SC02=q
50 LET LIV1=0: LET LIV2-0
120 FOR X-2 TO 18 STEP 2
130 FOR Y=1 TO 30 STEP 2
140 LET A=INT (RND*4)+2
150 PRINT AT X,Y; BRIGHT 0; PAP
ER A; INK 0;" ";AT X+1,Y; PAPER
A: INK 0;" ": NEXT Y: NEXT X
160 DIM C(8) . FOR X=1 TO 8: LET
C(X)=ATTR (H(X),P(X)): NEXT X
170 GO TO 1000

500 BRIGHT 1: PAPER 0: INK 0: В
ORDER 1: CLS
510 DIM P(8)
520 FOR X-l TO 8:
530 LET P(X)=INT (RND*14)+2: LE
T P(X)=P(X)«2: IF P(X)=30 THEN
GO TO 530
540 FOR Y=1 TO X
550 IF P(X)=P(Y) AND XOY THEN
GO TO 530

560 NEXT Y: NEXT X

570 DIM H(8): FOR X-l TO 4: LET

H(X) -2: NEXT X' FOR X-5 TO 8 L
ET HfX)=19. NEXT X

580 RETURN
1000 BRIGHT 0: FOR X=1 TO 4: PRI
NT AT H(X),P(X)-1; PAPER (C(X)/8
); INK 1;"EF";AT H(X)+1,P(X)-1;
PAPER (C(X)/8); INK 1;"GH": NEXT
X

1010 BRIGHT 0: FOR X-5 TO 8: PRI
NT AT H(X),P(X)-1; PAPER (C(X)/8
); INK 7;"£C";AT H(X)-1,P(X)-1,
PAPER (C(X)/8); INK 7;"ftB": NEXT
X

1020 LET A=10: LET B=ll
1200 REM ХОД 1 ИГРОКА ———-
1210 PRINT INK 6: PAPER 1; BRIG
HT 0;AT 21,0 ."ХОД 1 ИГРОКА
";AT 0,0;"

1220 PRINT INK 5; PAPER 0;AT 20

,B;"3uJ" ;AT 1,В;"КУ

1230 PRINT INK 5; PAPER 0,AT A,

0;"N";AT A+1,0;"M";AT A,31;"Q";A

T A+l,31;"P"

1235 LET G-A: LET W=B

1240 LET A=A+(2 AND (INKEY$="6"

OR CODE INKEYS=10) AND A<18)-(2

AND (INKEY$»"7" OR CODE INKEYS-l

1) AND A>2)

1250 LET В—B+(2 AND (INKEY$="8"
OR CODE INKEYS—9) AND B<28)-(2 A
ND (INKEY$="5" OR CODE INKEY$=8)
AND B>2)

1260 IF AOG THEN PRINT INK 7"

PAPER 0;AT G,0;" ";AT G+1,0;" "
;AT 0,31;" ";AT 0+1,31;" ": BEEP
.005,35

1270 IF HOB THEN PRINT INK 7;

PAPER 0;AT 20,W;" ";AT 1,W;"
": BEEP .005,15
1275 IF INKEY$="1" THEN BEEP
1,0. GO TO 1500

1277 IF INKEYJ="C" OR INKEY$="q"

THEN GO TO 4000
1280 IF (INKEY$="0" OR INKEYS-"
" OR CODE INKEY$=12) AND (ATTR (
A,B)/8)оINT (ATTR (A,B)/8) THEN

GO TO 1300
1290 GO TO 1220

1300 FOR X-5 TO 8: IF (A+1)=H(X)
AND (B+1)=P(X) THEN GO TO 1330
1310 NEXT X
1320 GO TO 1240
1330 LET DSK-X

1340 LET COL=ATTR (H(DSK)-2,P(DS
K))

1350 FOR X=1 TO 4
1360 IF ((ATTR (H(X)+2,P(X)-2)=C
OL) OR (ATTR (H(X)+2,P(X))=COL)
OR (ATTR (H(X)+2,P(X)+2)=COL)) A
ND H(X)>1 THEN GO TO 1390
1370 NEXT X

1380 PRINT INK 0; PAPER (C(DSK)
/8);AT H(DSK),P(DSK)-1;" ";AT H
(DSK)-1,P(DSK)-1;" "
1385 LET H(DSK)=19

1388 PRINT INK 7; PAPER (C(DSK)
/8);AT H(DSK),P(DSK)-1;"C£";AT H
(DSK)-1,P(DSK)-1;"AB"

1389 FOR X=40 TO 1 STEP -2: BEEP
.01,X: NEXT X: GO TO 1500

1390 BEEP .01,55: BEEP .01,50: P
RINT INK 0; PAPER (C(DSK)/8);AT

H(DSK),P(DSK)-1;" ";AT H(DSK)-
1,P(DSK)-1;" "

1400 LET С(DSK)-COL: LET SC01=SC
01 + 10

1410 LET H(DSK)-H(DSK)-2

1420 PRINT INK 7; PAPER (C(DSK)

/8),AT H(DSK),P(DSK)-1;"CD",AT H

(DSK)-l,P(DSK)-l;"Ag"

1430 IF H(DSK)<>3 THEN GO TO 14

40

1432 PRINT INK 0; PAPER (C(DSK)
/8),AT H(DSK),P(DSK)-1;" ";AT H
(DSK)-1,P(DSK)-1;" ": LET P(DSK
)=0: LET H(DSK)-0 * LET LIV1-LIV1
+1: LET SC01-SC01+50: FOR X=1 T
О 20: BEEP .005,X*3: NEXT X
1435 IF LIV1-4 THEN GO TO 4500:

REM --> ПОБЕДА 1 ИГРОКА
1440 IF RND>RND THEN GO TO 1500
1450 LET GND=INT (RND*8)+2: LET
GND=GND*2: LET LEV-INT (RND*14)+
1: LET LEV=LEV*2

1470 FOR X-l TO 8- IF LEV+2=P(X)

THEN GO TO 1500
1480 NEXT X

1490 PRINT INK 7; BRIGHT 1;AT GN
D,LEV+1; "2S" ; AT GND+1,LEV+1;"RT"
1500 REM ХОД 2 ИГРОКА —======—

1510 PRINT INK 6; PAPER 1; BRIG
HT 0;AT 0,0;"ХОД 2 ИГРОКА
";AT 21,0;"

II

1520 PRINT INK 5; PAPER 0;AT 20

,B;"13";AT l,B,"Kb"

1530 PRINT INK 5, PAPER 0;AT A,

0;"I!";AT A+1,0;"H";AT A,31;"fi";A

T A+l,31;"P"

1535 LET Q-A: LET W=B

1540 LET A—A+(2 AND (INKEY$="6"

OR CODE INKEYS-10) AND A<18)-(2

AND (INKEY$-"7" OR CODE INKEYS-l

1) AND A>2)

1550 LET B-B+(2 AND (INKEY$-"8"
OR CODE INKEYS-9) AND B<28)-(2 A
ND (INKEYJ="5" OR CODE INKEY$=8)
AND B>2)

1560 IF AOQ THEN PRINT INK 7;

paper 0;at q,0;" ";at q+1,0;" "
;at q,31;" ";at q+1,31;" ": beep
.005,35

1570 if иов then print ink 7;

paper 0;at 20,w;" ";at l.w;"
": beep .005,15

1575 if inkey$-"2" then beep 1
,0: go to 1200

1577 if inkeyi«"0" or inkeys="q"

then go to 4000
1580 if (inkey$="0" or inkey$="
" or code inkey$=12) and (attr (
a, b)/8) oint (attr (a,b)/8) then

go to 1600
1590 go to 1520

1600 for x=1 to 4: if a=h(x) and

(b+1)-=p(x) then go to 1630
1610 next x
1620 go to 1520
1630 let dsk=x

1640 let col=attr (h(dsk )+2 , p (db

K))

1650 for x=5 to 8
1660 if ((attr (h(x)-2,p(x)-2)=c
ol) or (attr (h(x)-2,p(x) )=col)
or (attr (h(x)-2,p(x)+2)=col)) a
nd h(x)>1 then go to 1690
1670 next x

1680 print paper с(dsk)/8:at h(
dsk)+1,p(dsk)-1;" ";at h(dsk),p
(dsk)-1;" "
1685 let h(dsk)=2

1688 print ink 1; paper c(dsk)/
8;at h(dsk)+1,p(dsk)-1;"gh";at h
(dsk),p(dsk) -1; "£f"

1689 for x=39 to 0 step -2: beep
.01,x: next x: go to 1200

1690 beep .01,40: beep .01,45: p
rint paper c(dsk)/8;at h(dsk)+1
,p (dsk) -1; " 11; at h(dsk),p(dsk) -
1;" "

1700 let sc02=sc02+10: let h(dsk

)-H(DSK)+2: LET C(DSK)=COL

1710 PRINT INK 1; PAPER C(DSK)/

8,AT H(DSK)+l,P(DSK)-l;"GH";AT H

(DSK),P(DSK)-1;"EF"

1720 IF H(DSK)<>18 THEN GO TO 1

730

1722 PRINT INK 0; PAPER (C(DSK)
/8);AT H(DSK),P(DSK)-1;" ";AT H
(DSK)+1,P(DSK)-1;" ": LET P(DSK
)=0: LET H(DSK)-0: LET LIV2=LIV2
+1: LET SC02=SC02 + 50: FOR X=1 TO

20: BEEP .005,X*3: NEXT X
1725 IF LIV2=4 THEN GO TO 4750:

REM —> ПОБЕДА 2 ИГРОКА
1730 IF RND>RND THEN GO TO 1200
1740 LET GND=INT (RND*8)+2: LET
GND=GND*2: LET LEV=INT (RND»14)+
1: LET LEV-=LEV*2

1760 FOR X=1 TO 8: IF LEV+2=P(X)

THEN GO TO 1200
1770 NEXT X

1780 PRINT INK 7; BRIGHT 1;AT GN
D,LEV+1;"£S";AT GND+1,LEV+1;"ET"
1790 GO TO 1200

4000 REM КОНЕЦ ИГРЫ ====-====-==
4010 FOR X-=l TO 30: BEEP .01,X«2
: BEEP .01,60-(X*2): NEXT X
4020 BRIGHT 1: PAPER 0: INK 7: В
ORDER 0: CLS

4030 PRINT FLASH 1; BRIGHT 0;AT

6,9;"ИГРА ОКОНЧЕНА";
4040 PRINT AT 10,13;"СЧЕТ:"
4050 PRINT AT 13,9;"ИГРОК 1 - ";
SCOl;AT 15,9;"ИГРОК 2 - ";SC02
4060 PRINT #0;" СЫГРАЕТЕ Ell)

E? (Y/N)": PAUSE 0
4070 IF INKEY$="N" OR INKEY$="n"

THEN GO TO 9999
4080 IF INKEYS="y" OR INKEY$="Y"

THEN RUN
4090 INPUT ;: BEEP .10: GO TO 4
060

4500 REM ПОБЕДА 1 ИГРОКА -«—«•
4510 BRIGHT О: PAPER 1: INK 7: С
LS

4520 PRINT FLASH l.AT 8,8;"ИГРО
К 1 ПОБЕДИЛ";AT 10,7,"ТАК КАК ОН
ПРОВЕЛ":AT 12,11;"ВСЕ ДИСКИ": F
OR F=1 ТО 6: FOR Y-l ТО 40 STEP
3: ВЕЕР .005,Y: NEXT Y: NEXT F
4530 GO TO 4060

4750 REM ПОБЕДА 2 ИГРОКА ——-
4760 BRIGHT 0: PAPER 2" INK 7: С
LS

4780 PRINT FLASH 1;AT 8,8;"ИГРО
К 2 ПОБЕДИЛ";AT 10,7;"ТАК КАК ОН
ПРОВЕЛ";АТ 12,11;"ВСЕ ДИСКИ": F
OR F=1 ТО 6: FOR Y=1 ТО 4 0 STEP
4: ВЕЕР .004,У: ВЕЕР .00в,40-у:
NEXT У: NEXT F
4790 GO ТО 4060

5000 LET Z$="ABCDEFGHI3KLMNOPQRS
TU"

5010 FOR Y=1 TO 20
5020 FOR X=0 TO 7
5030 READ A

5040 POKE USR ZS(Y)+X,A
5050 NEXT X: NEXT Y
5060 RETURN

6000 DATA 0,7,15,31,63,127,127,1

27,0,224,240,248,252,254,254,254

,127,127,127,63,31,15,7,0,254,25

4,254,252,248,240,224,0

6010 DATA 0,1,3,7,15,31,63,127,0

,128,192,224,240,248,252,254,127

,63,31,15,7,3,1,0,254,252,248,24

0,224,192,128,0

6020 DATA 1,3,7,15,31,31,31,31,1

28,192,224,240,248,248,248,248,3

1,31,31,31,15,7,3,1,248,248,248,

248,240,224,192,128

6030 DATA 255,254,252,248,240,0,

0,0,0,0,0,240,248,252,254,255,0,

0,0,15,31,63,127,255,255,127,63,

31,15,0,0,0
6040 DATA 128,64,32,16,15,8,8,8,
8,8,8,15,16,32,64,128,1,2,4,8,24
0,16,16,16,16,16,16,240,8,4,2,1
6500 PAPER 3: BRIGHT 1: INK 7: В
ORDER 4: CLS

6505 PRINT BRIGHT 1 ;AT 8,5 ;"ДВ"
;AT 9,5;"CE";AT 8,24;"EE";AT 9,2
4;"SE"

6510 PRINT INK 1; INVERSE 1;AT
8,9;" ДЬЯВОЛЬСКИЕ ";AT 10,12;" Д
ИСКИ "

6515 PRINT FLASH 1;AT 14,5;"BAM

нужна ИНСТРУКЦИЯ?"
6520 PRINT #0;" НАЖМИТЕ ""у

..., ш ..«N»»»; PAUSE о: LET A$-I
NKEYS

6530 IF A$="Y" OR A$="y" THEN В

EEP .1,20: GO TO 6600

6540 IF A$="N" OR A$«"n" THEN В

EEP .1,20: RETURN

6550 INPUT ;: BEEP .1,0: GO TO 6

520

6600 PAPER 5: INK 0: BRIGHT 0: В
ORDER 7: CLS

6610 PRINT AT 2,10; "УПРАВЛЕНИЕ";

AT 3,9;"------------"

6620 PRINT AT 5,1; "УПРАВЛЯЯ КУРС
OPOM, или"; AT 7,1; "КЛАВИШАМИ ""5
""-""8"", УКАЖИТЕ";АТ 9,1;"ПЕРЕС
ЕЧЕНИЕМ СТРЕЛОК ТОТ ДИСК,";AT 11
,1;"КОТОРЫМ БУДЕТ СДЕЛАН ХОД."
6630 PRINT AT 14,1; "ДЛЯ ПЕРЕДВИЖ
ЕНИЯ ВЫБРАННОГО" :AT 16,1;"ДИСКА
НАЖМИТЕ •'■'О"" ИЛИ ""SPACE""."
6640 PRINT INK 1;AT 19,1;"ЭТО К
АСАЕТСЯ ОБОИХ ИГРОКОВ."
6700 GO SUB 8000

6710 PRINT AT 3,6; "ПРАВИЛА ПЕРЕМ

ЕЦ|ЕНИЯ!";АТ 4,6;"---------------

_____«

6720 PRINT AT 6,5;"ЦВЕТ ПОЛЯ ПЕР
ед ДИСКОМ,";AT 8,6;"КОТОРЫМ ДЕЛА
ЕТСЯ ХОД,";AT 10,4;"ДОЛЖЕН СОВПА
дать с цветом";at 12,6;"свободно
го поля перед" ;at 14,3 .-"одним из
дисков соперника:";at 16,6;"пря
мо перед ним, или";ат 18,2;"впер
еди по диагонали от него."
6800 go sub 8000

6810 print at 3,4;"если вы не мо
жете ходить?"

6820 print at 4,4;"-------------

------------";ат 6,7;"для пропус

ка хода:"

6830 print at 8,6;"игрок 1 нажим
АЕТ ""1......

6840 print at 10,6;"игрок 2 нажи
мает ""2"""

6850 print at 13,1; "если оба игр
ока не могут ходить" ;ат 15,3;"то

нажмите ""q"" для выхода."
6860 print at 17,4;"победитель о
пределяется" ;ат 19,5; "по наиб<Я1ь
шему счету."
6900 go sub 8000

6910 print bright 1; ink 7; pap

er 0;at 1,6;"£s";at 2,6;"ri"
6920 print at 2,9;"- что это так
oe?";at 3,5;"-------------------

__II

6930 print at 5,2;"это уничтожен
ие цвета,";at 7,2;"разрешающего
перемещение";at 9,2;"диска, что
может привести";at 11,2;"к потер
е хода,"

6940 print at 13,2;"потому, что
эта фигура";at 15,2;"никогда не
появляется" ; at 17,2; "на пути дис
ка, а только" ;ат 19,2; "слева или

справа от него."
7000 go sub 8000: go то 6500
8000 print #0;" яхжмите любу

ю клавишу"

8010 pause 1ез: веер .1,20: cls
: return

9990 save "devils" line 2

9999 border 7: paper 7: ink о: в

right 0




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
body postbox - нам пишут.
Новости - появление в продаже TurboSound FM, Недавно встретился с Surfin Bird, Послал денег ALCO, убились два почтовых раздела на ZX-HDD, Заказал у CARO плату ZX MULTI CARD, В этом году на Спектрум уже было потрачено 2994 рубля.
Литы - огонек.
Тусовка - Письмо от Дмитрия Бурлака из г.Минска.
Что нового - О новинках в Минске.

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