0010 DATA 0,-1,0,-2,0,-3,0,1,0,-1,0,1,0,-2,0,2,0,1,0,2,0,-1,0,3,1,1,2,2,3,3,-1,-1,1,1,-1,-1
0020 DATA 2,2,-2,-2,-1,-1,-2,-2,1,1,-3,-3,1,-1,2,-2,-1,1,3,-3,-1,1,1,-1,2,-2,-2,2
0030 DATA -1,1,-2,2,-3,3,1,-1
0040 DATA 0,-1,0,-3,0,-2,0,1,0,-2,0,-1,0,2,0,3,0,1
0050 DATA 1,1,3,3,2,2,2,2,-1,-1,1,1,-2,-2,-3,-3,-1,-1
0060 DATA 1,-1,3,-3,2,-2,2,-2,-1,1,1,-1,-2,2,-3,3,-1,1
0070 DATA 0,2,0,3,2,2,3,3,0,1,1,1,0,2,0,3,-2,2,-3,3,0,1,-1,1
0080 DATA 2,3,2,3,2,3,2,-1
0090 DATA 1,1,1,2,1,3,0,1,-1,2,-2,3,2,1,3,2,4,3
0100 DIM L0(7),A0(7,7),N0(7),M0(7),S0(4),F0(4),V0(16)
0110 DATA 1,100,500,1.E20,1,800,4000,1.E20
0120 DATA 1,75,900,1.E18,1,450,3000,1.E18
0130 RESTORE 110 @ FOR I=1 TO 16 @ READ V0(I) @ NEXT I @ GOTO 240
0140 C=0 @ H=0 @ V2=-1 @ GOSUB 180
0150 C=0 @ H=1 @ V2=0 @ GOSUB 180 @ H=-1 @ V2=0 @ GOSUB 180
0160 C=0 @ H=1 @ V2=1 @ GOSUB 180 @ H=-1 @ V2=-1 @ GOSUB 180
0170 C=0 @ H=-1 @ V2=1 @ GOSUB 180 @ H=1 @ V2=-1 @ GOSUB 180 @ RETURN
0180 K=0
0190 K=K+1 @ A1=A+K*V2 @ B1=B+K*H
0200 IF A1<1 OR B1<1 OR A1>6 OR B1>7 THEN RETURN
0210 IF A0(A1,B1)<>J THEN RETURN ELSE C=C+1
0220 IF C=3 THEN POP @ RETURN
0230 IF K=3 THEN RETURN ELSE GOTO 190
0240 FOR A=0 TO 7 @ FOR B=0 TO 7 @ A0(A,B)=0 @ NEXT B @ NEXT A @ FOR A=1 TO 7 @ L0(A)=0 @ NEXT A
0250 M3=0 @ M2=0 @ N9=0 @ FOR I=1 TO 7 @ A0(0,I)=3 @ A0(I,0)=3 @ NEXT I
0260 T1=0 @ T2=1 @ O=1 @ X=2 @ T=0
0270 W1=0 @ INPUT "Desirez-vous commencer ? ";A$
0280 IF A$[1,1]="N" THEN A0(1,4)=1 @ L0(4)=1 @ BEEP @ DISP "Je joue 4 ( 0 ),"; @ N9=1
0290 IF N9<>42 THEN INPUT "votre choix:";B ELSE 1790
0300 IF B<1 OR B>7 THEN DISP "Position non jouable" @ GOTO 290
0310 IF L0(B)=6 THEN DISP "Position non jouable" @ GOTO 290
0320 L0(B)=L0(B)+1 @ N9=N9+2
0330 A=L0(B) @ A0(A,B)=2
0340 J=2 @ GOSUB 140 @ IF C=3 THEN DISP "Vous avez gagne !! en";T @ END
0350 ! * Bibliotheque d'ouverture *
0360 IF N9=6 AND M2=43 AND B=6 THEN M3=436
0370 IF N9=8 AND M3=436 AND B=5 THEN M=4 @ T2=T1+2 @ BEEP @ GOTO 1430
0380 IF N9=6 AND M2=45 AND B=2 THEN M3=452
0390 IF N9=8 AND M3=452 THEN M=4 @ BEEP @ T2=T1+2 @ GOTO 1430
0400 IF N9=6 AND M2=33 AND B=4 THEN M3=334
0410 IF N9=8 AND M3=334 AND B=6 THEN M=6 @ BEEP @ T2=T1+2 @ GOTO 1430
0420 IF N9=6 AND M2=55 AND B=4 THEN M3=554
0430 IF M3=554 AND N9=8 AND B=2 THEN BEEP @ M=2 @ T2=T1+2 @ GOTO 1430
0440 IF N9=2 OR N9=3 OR N9=5 THEN M1=B @ M=4 @ BEEP @ GOTO 1430
0450 IF N9>11 THEN 530
0460 IF N9>5 AND N9<12 THEN 1450
0470 M2=10*M1+B
0480 IF M2=43 OR M2=12 OR M2=21 OR M2=22 OR M2=26 THEN BEEP @ M=2 @ GOTO 1430
0490 IF M2=33 OR M2=42 THEN BEEP @ M=3 @ GOTO 1430
0500 IF M2=55 OR M2=46 THEN BEEP @ M=5 @ GOTO 1430
0510 IF M2=45 OR M2=62 OR M2=66 OR M2=67 OR M2=76 THEN BEEP @ M=6 @ GOTO 1430
0520 M=4 @ BEEP @ GOTO 1430
0530 ! * Pgm de reflexion *
0540 C1=0 @ Z=0 @ FOR I=1 TO 7 @ N0(I)=0 @ NEXT I @ T1=INT(TIME)
0550 FOR F=1 TO 7
0560 IF L0(F)=6 THEN Z=Z+1 @ N0(F)=-MAXREAL @ GOTO 1330
0570 L0(F)=L0(F)+1 @ A=L0(F) @ B=F @ J=1 @ GOSUB 140
0580 IF C=3 THEN M=F @ F=7 @ C1=1 @ GOTO 1330 ELSE A0(A,B)=1
0590 GOSUB 820 @ N0(F)=N0(F)+Y
0600 IF A<3 OR A=6 THEN 620
0610 IF A0(A-1,B)=1 AND A0(A-2,B)=1 THEN N0(F)=N0(F)+100010
0620 GOSUB 950 @ N0(F)=N0(F)+Y
0630 RESTORE 90 @ FOR K=1 TO 3 @ READ H1,V1,H2,V2,H3,V3 @ C2=0
0640 A1=A+H1 @ A2=A+H2 @ A3=A+H3 @ B1=B+V1 @ B2=B+V2 @ B3=B+V3
0650 IF A3<1 OR A3>6 OR B3<1 OR B3>7 THEN 670
0660 IF A0(A1,B1)=1 AND A0(A2,B2)=1 AND A0(A3,B3)=1 THEN N0(F)=N0(F)-10000000 @ C2=1
0670 IF C2<>0 THEN 690
0680 B1=B-V1 @ B2=B-V2 @ B3=B-V3 @ C2=1 @ GOTO 650
0690 NEXT K
0700 IF N9<12 OR N9>20 THEN 720
0710 GOSUB 1040 @ N0(F)=N0(F)+Y
0720 FOR I=1 TO 7 @ M0(I)=0 @ NEXT I @ W2=0
0730 FOR B=1 TO 7 @ IF L0(B)=6 THEN 1280 ELSE A=L0(B)+1 @ J=2 @ GOSUB 140
0740 IF C=3 THEN N0(F)=-MAXREAL/10 @ B=7 @ GOTO 1280
0750 GOSUB 820 @ M0(B)=M0(B)+Y
0760 IF C2=1 THEN B=7 @ GOTO 1280
0770 IF A<3 OR A=6 THEN 790
0780 IF A0(A-1,B)=2 AND A0(A-2,B)=2 THEN M0(B)=M0(B)+100000
0790 GOSUB 950 @ M0(B)=M0(B)+Y
0800 IF N9<12 OR N9>29 THEN 1270
0810 GOSUB 1040 @ M0(B)=M0(B)+Y @ GOTO 1270
0820 ! * Ss-pgm d'analyse 1 *
0830 RESTORE 10 @ C2=0 @ Y=0
0840 FOR K=1 TO 9 @ READ H1,V1,H2,V2,H3,V3,H4,V4 @ Z1=0 @ N8=0
0850 A1=A+H1 @ A2=A+H2 @ A3=A+H3 @ A4=A+H4 @ B1=B+V1 @ B2=B+V2 @ B3=B+V3 @ B4=B+V4
0860 IF A1<1 OR A2<1 OR B1<1 OR B2<1 OR A1>6 OR A2>6 OR B1>7 OR B2>7 THEN 940
0870 IF A3<1 OR B3<1 OR A3>6 OR B3>7 THEN N8=1 @ GOTO 890
0880 IF A0(A1,B1)=J AND A0(A2,B2)=J AND A0(A3,B3)=0 THEN Y=Y+1000000
0890 IF A4<1 OR A4>6 OR B4<1 OR B4>7 THEN 940
0900 IF A0(A1,B1)=J AND A0(A2,B2)=J AND A0(A4,B4)=0 THEN Y=Y+1000000
0910 IF N8=1 THEN 940
0920 IF A0(A1,B1)=3-J AND A0(A2,B2)=3-J AND A0(A3,B3)=0 AND A0(A3-1,B3)<>0 THEN Z1=1
0930 IF Z1=1 AND A0(A4,B4)=0 AND A0(A4-1,B4)<>0 THEN Y=MAXREAL/100 @ K=9 @ C2=1
0940 NEXT K @ RETURN
0950 ! * Ss-pgm d'analyse 2 *
0960 Y=0 @ FOR K=1 TO 9 @ C2=0 @ READ H1,V1,H2,V2,H3,V3
0970 A1=A+H1 @ A2=A+H2 @ A3=A+H3 @ B1=B+V1 @ B2=B+V2 @ B3=B+V3
0980 IF A1<1 OR A2<1 OR A3<1 OR B1<1 OR B2<1 OR B3<1 THEN 1010
0990 IF A1>6 OR A2>6 OR A3>6 OR B1>7 OR B2>7 OR B3>7 THEN 1010
1000 IF A0(A1,B1)=J AND A0(A2,B2)=J AND A0(A3,B3)=0 THEN Y=Y+1000000
1010 IF C2=1 THEN 1030
1020 A1=A-H1 @ A2=A-H2 @ A3=A-H3 @ B1=B-V1 @ B2=B-V2 @ B3=B-V3 @ C2=1 @ GOTO 980
1030 NEXT K @ RETURN
1040 ! * Ss-pgm d'analyse 3 *
1050 RESTORE 70 @ Y=0
1060 FOR K=1 TO 2 @ C2=0 @ Z1=0 @ READ H1,V1,H2,V2,H3,V3,H4,V4,H5,V5,H6,V6
1070 A1=A+H1 @ A2=A+H2 @ A3=A+H3 @ A4=A+H4 @ A5=A+H5 @ A6=A+H6
1080 B1=B+V1 @ B2=B+V2 @ B3=B+V3 @ B4=B+V4 @ B5=B+V5 @ B6=B+V6
1090 IF A4<1 OR A4>6 OR B2<1 OR B2>7 THEN 1120
1100 IF A0(A1,B1)=J AND A0(A2,B2)=J AND A0(A3,B3)=J AND A0(A4,B4)=J THEN Z1=1
1110 IF Z1=1 AND A0(A5,B5)=0 AND A0(A6,B6)=0 THEN Y=Y+J*10000000000 @ C2=1
1120 IF C2<>0 THEN 1150
1130 A1=A-H1 @ A2=A-H2 @ A3=A-H3 @ A4=A-H4 @ A5=A-H5 @ A6=A-H6 @ C2=1
1140 B1=B-V1 @ B2=B-V2 @ B3=B-V3 @ B4=B-V4 @ B5=B-V5 @ B6=B-V6 @ GOTO 1090
1150 NEXT K
1160 ! * Ss-pgm d'analyse 3bis *
1170 Y=0 @ FOR K=1 TO 2 @ Z1=0 @ C2=0 @ READ V1,V2,V3,V4
1180 A1=A @ A2=A @ A6=A @ A3=A-1 @ A4=A3 @ A5=A3 @ A7=A3
1190 B1=B+V1 @ B2=B+V2 @ B3=B+V3 @ B4=B+V4 @ B5=B @ B6=B+1 @ B7=B6
1200 IF A=1 OR B2<1 OR B2>7 OR B4<1 OR B4>7 THEN 1230
1210 IF A0(A1,B1)=J AND A0(A2,B2)=J AND A0(A3,B3)=J AND A0(A4,B4)=J AND A0(A5,B5)=J THEN Z1=1
1220 IF Z1=1 AND A0(A6,B6)=0 AND A0(A7,B7)=0 THEN Y=Y+J*10000000000 @ C2=1
1230 IF C2<>0 THEN 1250
1240 B1=B-V1 @ B2=B-V2 @ B3=B-V3 @ B4=B-V4 @ B6=B-1 @ B7=B6 @ C2=1 @ GOTO 1200
1250 NEXT K @ RETURN
1260 ! * Suite de *
1270 IF N0(F)-M0(B)1 THEN N0(F)=N0(F)-M0(B) @ B=7 @ W2=1
1280 NEXT B
1290 A=L0(F) @ L0(F)=L0(F)-1 @ A0(A,F)=0
1300 IF W2=1 THEN 1320
1310 W=M0(1) @ FOR I=2 TO 7 @ W=W+M0(I) @ NEXT I @ N0(F)=N0(F)-W
1320 IF F=1 THEN W1=N0(1) ELSE W1=MAX(W1,N0(F))
1330 NEXT F @ T2=INT(TIME) @ T=T+T2-T1 @ BEEP
1340 N0(2)=N0(2)+1 @ N0(3)=N0(3)+5 @ N0(4)=N0(4)+10 @ N0(5)=N0(5)+5 @ N0(6)=N0(6)+1
1350 IF Z=7 THEN DISP "Partie nulle en";T @ END
1360 IF C1=1 THEN DISP "Je joue en";M;"et je gagne en";T @ END
1370 W=MAX(N0(1),N0(2)) @ FOR I=3 TO 7 @ W=MAX(W,N0(I)) @ NEXT I
1380 R=INT(RND*2) @ IF R=0 THEN 1410
1390 FOR F=1 TO 7 @ IF N0(F)=W THEN M=F @ F=7
1400 NEXT F @ GOTO 1430
1410 FOR F=7 TO 1 STEP -1 @ IF N0(F)=W THEN M=F @ F=1
1420 NEXT F
1430 DISP "Je joue";M;"(";T2-T1-1;"),"; @ L0(M)=L0(M)+1 @ A=L0(M) @ A0(A,M)=1 @ GOTO 290
1440 ! * Pgm de reflexion *
1450 M=B @ T1=INT(TIME) @ M9=0 @ V1=0 @ N1=1
1460 FOR M4=1 TO 7 @ L=L0(M4)+1
1470 IF L>6 THEN 1770
1480 V=1 @ P=O @ W=0 @ M=M4
1490 GOSUB 1850
1500 FOR Z1=1 TO 4 @ N0(Z1)=0 @ NEXT Z1
1510 FOR Z=1 TO 4
1520 S=S0(Z)
1530 IF S-W>3 THEN T2=INT(TIME) @ GOTO 1810
1540 U=S+F0(Z)
1550 IF U<4 THEN 1570
1560 V=V+4 @ N0(S)=N0(S)+1
1570 NEXT Z
1580 FOR I=1 TO 4 @ N=N0(I)-1
1590 IF N=-1 THEN 1620
1600 I1=8*W+4*SGN(N)+I
1610 V=V+V0(I1)+N*V0(8*W+I)
1620 NEXT I
1630 IF W=1 THEN 1660
1640 W=1 @ P=X
1650 GOTO 1490
1660 FOR B=1 TO 7 @ A=L0(B)+1
1670 IF A>6 THEN 1710
1680 J=X @ GOSUB 140
1690 IF C=3 AND B<>M4 THEN V=V-1.E+19
1700 IF C=3 AND B=M4 THEN V=.5
1710 NEXT B
1720 IF VV1 THEN N1=1 @ GOTO 1760
1740 N1=N1+1
1750 IF RND>1/N1 THEN 1770
1760 V1=V @ M9=M4
1770 NEXT M4 @ T2=INT(TIME) @ T=T+T2-T1
1780 IF M9<>0 THEN 1800
1790 BEEP @ DISP "Partie nulle en";T-60 @ END
1800 M=M9
1810 BEEP @ DISP "Je joue";M;"(";ABS(T2-T1);"),";
1820 L=L0(M)+1 @ L0(M)=L0(M)+1
1830 A0(L,M)=O @ A=L @ B=M @ J=O
1840 GOSUB 140 @ IF C=3 THEN DISP " et je gagne en";T @ END ELSE 290
1850 Q=X
1860 IF P=X THEN Q=O
1870 D2=1 @ D1=0 @ Z=0 @ GOSUB 1920
1880 D1=1 @ D2=1 @ GOSUB 1920
1890 D2=0 @ D1=1 @ GOSUB 1920
1900 D1=1 @ D2=-1 @ GOSUB 1920
1910 RETURN
1920 D=1 @ S=1 @ U=0 @ Z=Z+1
1930 C=0 @ FOR K=1 TO 3
1940 M5=M+K*D1 @ L1=L+K*D2
1950 IF M5<1 OR M5>7 OR L1<1 OR L1>6 THEN 2020
1960 B=A0(L1,M5)
1970 IF C=0 THEN 2000
1980 IF B=Q THEN K=3 @ GOTO 2020
1990 U=U+1 @ GOTO 2020
2000 IF B=P THEN S=S+1 @ GOTO 2020
2010 C=1 @ GOTO 1980
2020 NEXT K
2030 IF D=0 THEN 2060
2040 D=0 @ D1=-D1 @ D2=-D2
2050 GOTO 1930
2060 S0(Z)=S @ F0(Z)=U @ RETURN