ЛИСЫ
Охота на лис - это логическая игра, название которой дала игра радиолюбительская, заключающаяся в том, что спортсмены с радиоприемниками передвигаются по пересеченной местности, пытаясь «засечь» и найти спрятанные
передатчики («лисы») и получая за это определенные очки.
Цель нашей игры - обнаружить и уничтожить пятерых «лис», спрятанных на поле размером 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