ПИРАМИДА
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