![]()
Этот вариант настольной игры "ДЬЯВОЛЬСКИЕ ДИСКИ" рассчитан на
двух игроков Игровое поле представлено на рисунке Каждый игрок
имеет по 4 фишки (диска). Игроки ходят по-очереди. Каждый игрок
имеет право за один ход передвинуть один диск прямо вперед по нап-
равлению к сопернику на одну клетку. Правило передвижения такое.
Цвет поля, на которое будет передвинут диск, должен совпадать с
цветом одного из полей перед любым диском соперника: прямо перед
ним, или вперед по диагонали влево или вправо от диска противника.
Когда диск, продвигаясь вперед, достигает края игрового поля, он
пропадает. Теперь у Вашего соперника будет меньше вариантов для хо-
да .![]()
Если Вы попытаетесь сделать недозволенный ход (согласно прави-
лу цвета), то, в наказание. Ваш диск будет отброшен на исходную по-
зицию. Поэтому внимательно смотрите за допустимостью хода!Если возникает ситуация, когда ход недопустим, то Вы можете
отказаться от него (это лучше, чем оказаться опять иа начальной ли-
нии) .Вначале игры, как правило, возможны любые ходы, ио потом, по
мере достижения Вашим противником края игрового поля и "сбросом"
своих дисков. Вам остается меньше вариантов для хода. Кроме того,
жизнь осложняют черные фигуры, которые, появляясь на экране, "съе-
дают" цвет, оставляя Вам меньше вариантов для ходаПри наборе программы обратите внимание иа строку 5000: здесь
не графические, а обычные символы1 GO ТО 10
2 BORDER 7: CLEAR 64599 LOAD
"chr"CODE 646003 POKE 23675,88: POKE 23676,2
55: GO SUB 50004 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 1000500 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 530560 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 X580 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
X1010 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
X1020 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,351270 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 15001277 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) THENGO TO 1300
1290 GO TO 12201300 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-X1340 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 X1380 PRINT INK 0; PAPER (C(DSK)
/8);AT H(DSK),P(DSK)-1;" ";AT H
(DSK)-1,P(DSK)-1;" "
1385 LET H(DSK)=191388 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 15001390 BEEP .01,55: BEEP .01,50: P
RINT INK 0; PAPER (C(DSK)/8);ATH(DSK),P(DSK)-1;" ";AT H(DSK)-
1,P(DSK)-1;" "1400 LET С(DSK)-COL: LET SC01=SC
01 + 101410 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*21470 FOR X-l TO 8- IF LEV+2=P(X)
THEN GO TO 1500
1480 NEXT X1490 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,351570 if иов then print ink 7;
paper 0;at 20,w;" ";at l.w;"
": beep .005,151575 if inkey$-"2" then beep 1
,0: go to 12001577 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) thengo to 1600
1590 go to 15201600 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=x1640 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 x1680 print paper с(dsk)/8:at h(
dsk)+1,p(dsk)-1;" ";at h(dsk),p
(dsk)-1;" "
1685 let h(dsk)=21688 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 12001690 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 TO20: 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*21760 FOR X=1 TO 8: IF LEV+2=P(X)
THEN GO TO 1200
1770 NEXT X1780 PRINT INK 7; BRIGHT 1;AT GN
D,LEV+1;"£S";AT GND+1,LEV+1;"ET"
1790 GO TO 12004000 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: CLS4030 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
0604500 REM ПОБЕДА 1 ИГРОКА -«—«•
4510 BRIGHT О: PAPER 1: INK 7: С
LS4520 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 40604750 REM ПОБЕДА 2 ИГРОКА ——-
4760 BRIGHT 0: PAPER 2" INK 7: С
LS4780 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 ТО 40605000 LET Z$="ABCDEFGHI3KLMNOPQRS
TU"5010 FOR Y=1 TO 20
5020 FOR X=0 TO 7
5030 READ A5040 POKE USR ZS(Y)+X,A
5050 NEXT X: NEXT Y
5060 RETURN6000 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: CLS6505 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
NKEYS6530 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: CLS6610 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 80006710 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 80006810 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 80006910 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
: return9990 save "devils" line 2
9999 border 7: paper 7: ink о: в
right 0