10 ' "JACQUET" pour Amstrad, par Elie MADEUF
20 MODE 1:INK 0,26:INK 1,6:INK 2,0:INK 3,24:PAPER 3:PEN 2:INPUT"Voulez-vous les regles (O/N)";o$:IF UPPER$(o$)="O"THEN GOSUB 940
30 CLS:DIM a(40),b(25):a(1)=2:a(6)=-5:a(8)=-3::a(12)=5:a(13)=-5:a(17)=3:a(19)=5:a(24)=-2
40 WINDOW#1,15,40,1,25:PAPER#1,0:PEN#1,1:WINDOW#3,1,15,1,5:PAPER#3,0:PEN#3,2:LOCATE#3,2,2:PRINT#3,"J A C Q U E T":PRINT#3," +++++++++++++ "
50 WINDOW#0,1,15,5,18:PAPER#0,3:PEN#0,1:WINDOW#2,1,15,19,25:PAPER#2,1:PEN#2,2
60 LOCATE#1,4,1:PRINT#1,CHR$(209)+STRING$(18,208)+CHR$(211)
70 m=0:FOR i=2 TO 24:IF i MOD 2=0 THEN x$=RIGHT$(STR$(24-m),2):y$=RIGHT$(STR$(1+m),2):m=m+1 ELSE x$="  ":y$="  "
80 PEN#1,2:LOCATE#1,2,i:PRINT#1,y$;:PEN#1,1:PRINT#1,CHR$(209)+STRING$(18," ")+CHR$(211);:PEN#1,2:PRINT#1,x$:NEXT
90 PEN#1,1:LOCATE#1,4,25:PRINT#1,CHR$(209)+STRING$(18,210)+CHR$(211):LOCATE#1,5,13:PRINT#1,STRING$(18,210):PEN#1,2:FOR i=1 TO 24:b(i)=1:NEXT:GOSUB 100:GOTO 210
100 FOR i=2 TO 24 STEP 2:IF b(i/2)=0 THEN 120 ELSE x=a(i/2):LOCATE#1,5,i:PRINT#1,"         ":LOCATE#1,5,i:FOR k=1 TO ABS(x):IF x>0 THEN PRINT#1,CHR$(231);:ELSE IF x<0 THEN PRINT#1,CHR$(230);
110 NEXT
120 IF b(25-i/2)=0 THEN 140 ELSE y=a(25-i/2):LOCATE#1,14,i:PRINT#1,"         ":LOCATE#1,23-ABS(y),i:FOR k=1 TO ABS(y):IF Y>0 THEN PRINT#1,CHR$(231);:ELSE IF y<0 THEN PRINT#1,CHR$(230);
130 NEXT
140 NEXT:LOCATE#2,1,1:PRINT#2,"  P R I S O N  ":LOCATE#2,1,3:PRINT#2,"CPC :":PRINT#2,"              ":LOCATE#2,1,5:PRINT#2,"TOI :":PRINT#2,"              ":LOCATE#2,1,4:IF a(0)>0 THEN FOR i=1 TO a(0):PRINT#2,CHR$(231);:NEXT          
150 LOCATE#2,1,6:IF a(25)<0 THEN FOR i=1 TO -a(25):PRINT#2,CHR$(230);:NEXT
160 FOR i=1 TO 24:b(i)=0:NEXT:RETURN
170 RANDOMIZE TIME:y=INT(RND*6)+1:z=INT(RND*6)+1:RETURN
180 FOR b=7 TO 25:IF a(b)<0 THEN a=1:GOTO 200
190 NEXT
200 RETURN
210 GOSUB 170:u=u+1:IF u=1 THEN IF y MOD 2=0 THEN 430
220 d$=STR$(y)+STR$(z):IF y=z THEN d$=d$+d$
230 l=LEN(d$):c$="Tes des":IF l<3 THEN c$="Ton de
240 y1=0:CLS#0:PRINT#0,c$;" :";d$:PRINT:PRINT:PRINT"Joue (ou :0)":INPUT d:IF d=0 THEN 430
250 e=INT(d):f=ROUND(100*(d-e),0):b(e)=1:b(f)=1
260 a=0:GOSUB 180:IF a=0 AND f<>0 THEN 340
270 IF e-f=VAL(LEFT$(d$,2))THEN y1=1:GOTO 290
280 IF e-f<>VAL(RIGHT$(d$,2))THEN 340
290 IF f=0 AND a=1 THEN 340
300 IF f=0 AND a(e)<0 THEN a(e)=a(e)+1:GOSUB 100:GOTO 370
310 IF a(25)<0 AND e<>25 THEN 340
320 IF e>25 OR f>24 THEN 340
330 IF a(e)<0 AND a(f)<2 THEN 350
340 CLS#0:PRINT#0,"E R R E U R !!!":CALL &BB06:GOTO 230
350 a(e)=a(e)+1:IF a(f)=1 THEN a(f)=0:a(0)=a(0)+1
360 a(f)=a(f)-1:GOSUB 100
370 i=1
380 IF a(i)>=0 THEN 410
390 IF y1>0 THEN d$=RIGHT$(d$,l-2)ELSE d$=LEFT$(d$,l-2)
400 IF d$=""THEN 430 ELSE 230
410 i=i+1:IF i<25 THEN 380
420 CLS#0:PRINT:PRINT:PRINT:PRINT#0,"**B R A V O !**":PRINT:PRINT:PRINT#0," TU AS GAGNE ! ":CALL &BB06:END
430 GOSUB 170:d$=STR$(y)+STR$(z):a=2:CLS#0:IF y=z THEN d$=d$+d$:a=4
440 PRINT#0,"Mes des :";d$:l=y+z/10:r=3:q=3:v=0:g=INT(l):c=0:h=ROUND(10*(l-g),0)
450 IF a=0 THEN GOSUB 100:CALL &BB06:GOTO 210
460 IF a(0)>0 THEN 750
470 FOR m=1 TO 2:IF m=1 THEN p=g
480 IF q=2 THEN m=2
490 IF m=2 THEN p=h
500 IF q=1 THEN m=2:p=g
510 j=26:FOR i=1 TO 24:IF a(i)>0 THEN a(j)=i:j=j+1
520 NEXT:IF a(26)>18 THEN 840
530 FOR n=1 TO 7:FOR k=26 TO j-1:ON n GOTO 540,580,600,660,680,710,710
540 IF a(a(k)+p)<>1 THEN 720
550 IF a(k)+p>24 THEN 720
560 PRINT#0,a(k);".";a(k)+p:b(a(k))=1:b(a(k)+p)=1
570 a(a(k))=a(a(k))-1:a(a(k)+p)=a(a(k)+p)+1:c=c+1:GOTO 730
580 IF a(a(k)+p)=-1 AND a(k)+p<25 THEN a(25)=a(25)-1:a(a(k)+p)=0:GOTO 560
590 GOTO 720
600 IF m=1 AND ABS(a(a(k)+h))<2 AND h-g=a(k+1)-a(k)THEN 620
610 GOTO 720
620 IF a(k)+h>24 THEN 720
630 PRINT#0,a(k);".";a(k)+h:PRINT#0,a(k+1);".";a(k+1)+g:b(a(k))=1:b(a(k)+h)=1:b(a(k+1))=1:b(a(k+1)+g)=1
640 a(a(k))=a(a(k))-1:a(a(k)+h)=a(a(k)+h)+2:a(a(k+1))=a(a(k+1))-1
650 a=a-2:c=c+1:m=2:IF a=0 THEN GOSUB 100:CALL &BB06:GOTO 210 ELSE 730
660 IF a(a(k))=1 AND a(a(k)+p)>-1 THEN 550
670 GOTO 720
680 IF a(a(k)+p)>-1 AND a(a(k))<>2 THEN 550
690 IF a(a(k)+p)>-1 AND g=h THEN 550
700 GOTO 720
710 IF a(a(k)+p)>-1 THEN 550
720 NEXT:NEXT
730 NEXT:IF g=h AND r=3 THEN q=3:r=5:GOTO 450
740 GOSUB 100:CALL &BB06:GOTO 210
750 IF a(g)<-1 AND a(h)<-1 THEN 830
760 IF a(g)<-1 THEN 790
770 PRINT#0,"0 .";g:b(g)=1:IF a(g)=-1 THEN a(g)=0:a(25)=a(25)-1
780 a(0)=a(0)-1:a(g)=a(g)+1:a=a-1:IF a(0)=0 THEN q=2:GOTO 450
790 IF a(h)<-1 THEN GOSUB 100:CALL &BB06:GOTO 210
800 IF a(h)=-1 THEN a(h)=0:a(25)=a(25)-1
810 a(0)=a(0)-1:a(h)=a(h)+1:PRINT#0,"0 .";h:b(h)=1:a=a-1:IF a(0)=0 THEN q=1:GOTO 450
820 GOSUB 100:CALL &BB06:GOTO 210
830 PRINT#0,"Bloque !":GOSUB 100:CALL &BB06:GOTO 210
840 IF h=0 THEN 880
850 l=h:c=c+1
860 IF l=25-a(26)THEN a(a(26))=a(a(26))-1:PRINT#0,a(26);".25":b(a(26))=1:GOTO 880
870 IF a(25-l)>0 THEN  a(25-l)=a(25-l)-1:PRINT#0,25-l;".25":b(25-l)=1:GOTO 880
880 IF a(a(26))<=0 THEN a(26)=a(26)+1:GOTO 880
890 IF a(26)>24 THEN GOSUB 100:CLS#0:PRINT:PRINT:PRINT:PRINT" J'ai gagne !! ":CALL &BB06:END
900 IF g=0 THEN GOSUB 100:CALL &BB06:GOTO 210
910 IF c=1 OR c=3 THEN c=c+1:l=g:GOTO 860
920 IF g=h AND c<4 THEN 850
930 GOSUB 100:CALL &BB06:GOTO 210
940 CLS:LOCATE 11,1:PRINT"*** J A C Q U E T ***":LOCATE 11,2:PRINT STRING$(21,"*"):PRINT
950 PRINT" Ce programme permet de jouer au JACQUETou TRICTRAC ou BACK-GAMMON, contre le                 +++CPC 464+++
960 PRINT"Vous avez les pions clairs qui circulenten sens inverse des numeros, et le CPC ales pions noirs circulant dans le sens  des numeros.
970 PRINT" Affichage des deux numeros tires, pour le CPC, ou pour vous. Si c'est son tour,le CPC indique son deplacement et changel'etat du jeu; sinon il vous attend. Vosnumeros doivent tous avoir deux chiffres
980 PRINT"   Exemple : ";:PEN 1:PRINT"     13.09":PRINT:PEN 2
990 PRINT" Ecrivez votre depart, un point, votre  arrivee, <ENTER>. Vous pouvez avancer dunombre de cases donne par l'un des deux nombres de votre tirage et puis l'autre,si  vous n'avez aucun pion en prison, oualors il faudra d'abord en sortir.  
1000 PEN 1:PRINT" Appuyez sur une touche pour continuer":CALL &BB06:CLS:PEN 2:PRINT:PRINT:PRINT:PRINT
1010 PRINT" Il y a quatre deplacements possibles sivous avez tire deux numeros semblables. Vous pouvez vous poser sur une case videou occupee par vous-meme ou par un seul pion adverse qui va alors en prison.
1020 PRINT" Les pions en prison seront indiques en bas, a gauche de l'ecran. Les votres en 25, ceux du CPC en 0. Pour sortir il estnecessaire que vous puissiez aller sur  une case non protegee; vous faites alors";
1030 PRINT"par exemple:";:PEN 1:PRINT"25.21";:PEN 2:PRINT" si vous avez tire un 4":PEN 1:PRINT" Appuyez sur une touche pour continuer":CALL &BB06:CLS:PEN 2:PRINT:PRINT:PRINT:PRINT
1040 PRINT" Le but du jeu est d'amener tous ses 15 pions dans son quart d'arrivee:le votre 1 a 6, 19 a 24 pour le CPC.Ensuite vous devez les faire sortir tous, vous en 0, lui en 25. Pour cela il vous faut faire
1050 PRINT"par exemple : ":PEN 1:PRINT"               04.0 ":PEN 2:PRINT"si vous aviez tire un 4, car on ne peut jouer un nombre different de ce qu'on a tire. 
1060 PRINT" Une fois tous ses pions dans son quart d'arrivee, on ne peut plus les deplacer a l'interieur de ce quart, seulement lessortir en faisant le nombre precis de ladifference avec 0 ou 25.
1070 PEN 1:PRINT" Appuyez sur une touche pour continuer":CALL &BB06:CLS:PEN 2:RETURN