10 '====================================
20 '
30 ' JEU DE YAM A 5 COLONNES
40 '
50 '     par Joel Vernet
60 '
70 ' 8 rue gambetta 60100 NOGENT sur OISE34'
80 '====================================
85 RANDOMIZE TIME
90 DEFINT a-z:CLS:MODE 1
100 LOCATE 15,10:PRINT"JEU DE YAM":LOCATE 14,12:PRINT"A 5 COLONNES":LOCATE 18,20:PRINT"par Joel Vernet"
110 DIM dt(5),dr(5),tb(38),c(5,81),flagm(5),flagd(5),nomjou$(5),svdt(5),ff(12),finjou(5)
120 DIM ray(60),son(5),svnomjou(5),svc(5)
130 GOSUB 5660
140 LOCATE 5,25:PRINT"Voulez vous les regles ?(o/n)"
150 DECi$=INKEY$:IF DECi$="" THEN 150
160 IF INKEY(34)>=0 THEN GOSUB 6340
170 GOSUB 5740:jou=0
180 GOSUB 5890:GOTO 6000
190 '========jeu de l'AMSTRAD========
200 CLS #1:GOSUB 4930
210 GOSUB 2680
220 CLS #6:CLS #5:LOCATE #5,5,1:PRINT #5,"Je reflechis..."
230 deci$=""
240 '---------choix de l'AMSTRAD------
250 ON ne1 GOTO 360,590,790,900
260 'ne1=0:tous les des sont differents
270 IF somde=15 OR somde=20 THEN GOSUB 990:IF deci$="M" THEN 3070
280 IF tir=3 THEN 340
290 GOSUB 1690:IF deci$="T" THEN 2510
300 FOR n=1 TO 5:vde1=dt(n):GOSUB 1360
310 IF deci$="T" THEN 2510
320 NEXT n
330 deci$="T":dr(1)=1:dr(2)=1:dr(3)=1:dr(4)=1:dr(5)=1:GOTO 2510
340 GOSUB 1030:IF deci$="M" THEN 2510
350 deci$="R":GOSUB 1480:GOTO 2510
360 'ne1=1:2 des semblables
370 ON ne2+1 GOTO 480,480,380
380 'ne2=2:c'est un fool
390 IF somde>=14 OR x<10 THEN GOSUB 1130:IF deci$="M" THEN 2510
400 IF somde>=23 THEN GOSUB 1220:IF deci$="M" THEN 2510
410 IF somde>=21 AND somde<24 THEN GOSUB 1160:IF deci$="M" THEN 2510
420 IF tir<3 THEN cc=vde2:GOSUB 1280:IF deci$="M" THEN 2510
430 IF tir<3 THEN GOSUB 1360:IF deci$="T" THEN 2510
440 IF tir<3 THEN GOSUB 1690:IF deci$="T" THEN 2510
450 cc=vde1:GOSUB 1280:IF deci$="M" THEN 2510
460                     IF tir<3 THEN deci$="T":FOR l=1 TO 5:dr(l)=1:NEXT:GOTO 2510
470 deci$="R":GOSUB 1480:GOTO 2510
480 'ne2=1:2 fois 2 des semblables ou 2 semblables,3 differents
490 IF somde>=23 THEN GOSUB 1220:IF deci$="M" THEN 2510
500 IF somde>=21 AND somde<24 THEN GOSUB 1160:IF deci$="M" THEN 2510
510 IF tir<3 THEN GOSUB 1690:IF deci$="T" THEN 2510
520 IF tir<3 THEN GOSUB 1360:IF deci$="T" THEN 2510
530 IF vde1<vde2 THEN cc=vde1:GOSUB 1280:IF deci$="M" THEN 2510
540 IF ne2=1 THEN cc=vde2:GOSUB 1280:IF deci$="M" THEN 2510
550 IF vde1>=vde2 THEN cc=vde1:GOSUB 1280:IF deci$="M" THEN 2510
560 IF x<10 THEN GOSUB 1030:IF deci$="M" THEN 2510
570 IF tir<3 THEN deci$="T":dr(1)=1:dr(2)=1:dr(3)=1:dr(4)=1:dr(5)=1:GOTO 2510
580 deci$="R":GOSUB 1480:GOTO 2510
590 'ne1=2:3 des semblables
600 IF ne2=1 THEN 690
610 'ne2=0
620 cc=vde1:GOSUB 1280:IF deci$="M" THEN 2510
630 IF tir<3 THEN GOSUB 1690:IF deci$="T" THEN 2510
640 IF tir<3 THEN GOSUB 1360:IF deci$="T" THEN 2510
650 IF somde>=21 AND somde<24 THEN GOSUB 1160:IF deci$="M" THEN 2510
660 IF x<10 THEN GOSUB 1030:IF deci$="M" THEN 2510
670 IF tir<3 THEN deci$="T":FOR l=1 TO 5:dr(l)=1:NEXT:GOTO 2510
680 deci$="R":GOSUB 1480:GOTO 2510
690 ' ne2=1:c'est un fool
700 IF somde>=14 OR tir<3 THEN GOSUB 1130:IF deci$="M" THEN 2510
710 IF somde>=23 THEN GOSUB 1220:IF deci$="M" THEN 2510
720 IF somde>=21 AND somde<24 THEN GOSUB 1160:IF deci$="M" THEN 2510
730 cc=vde1:GOSUB 1280:IF deci$="M" THEN 2510
740 IF tir<3 THEN GOSUB 1690:IF deci$="T" THEN 2510
750 GOSUB 1130:IF deci$="M" THEN 2510
760 cc=vde2:GOSUB 1280:IF deci$="M" THEN 2510
770 IF tir<3 THEN deci$="T":FOR l=1 TO 5:dr(l)=1:NEXT:GOTO 2510
780 deci$="R":GOSUB 1480:GOTO 2510
790 ' ne1=3:c'est un carre
800 IF vde1>=3 OR tir<3 THEN GOSUB 1540:IF deci$="M" THEN 2510
810 IF tir<3 THEN GOSUB 1690:IF deci$="T" THEN 2510
820 cc=vde1:GOSUB 1280:IF deci$="M" THEN 2510
830 IF somde>=23 THEN GOSUB 1220:IF deci$="M" THEN 2510
840 IF somde>=21 AND somde<24 THEN GOSUB 1160:IF deci$="M" THEN 2510
850 IF tir<3 THEN GOSUB 1360:IF deci$="T" THEN 2510
860 IF tir<3 THEN deci$="T":FOR l=1 TO 5:dr(l)=1:NEXT:GOTO 2510
870 GOSUB 1540:IF deci$="M" THEN 2510
880 GOSUB 1030:IF deci$="M" THEN 2510
890 deci$="R":GOSUB 1480:GOTO 2510
900 'c'est un yam
910 GOSUB 1600:IF deci$="M" THEN 2510
920 IF vde1>=3 OR x<10 THEN GOSUB 1540:IF deci$="M" THEN 2510
930 IF vde1>=3 OR x<10 THEN GOSUB 1130:IF deci$="M" THEN 2510
940 cc=vde1:GOSUB 1280:IF deci$="M" THEN 2510
950 IF somde>=23 THEN GOSUB 1220:IF deci$="M" THEN 2510
960 IF somde >=21 AND somde <24 THEN GOSUB 1160:IF deci$="M" THEN 2510
970 IF tir <3 THEN deci$="T":FOR l=1 TO 5:dr(l)=1:NEXT:GOTO 2510
980 deci$="R":GOSUB 1480:GOTO 2510
990 '==========sous programmes de l'AMSTRAD========
1000 ' choix d'une suite
1010 FOR l=1 TO x:IF tb(l)=10 OR tb(l)=22 OR tb(l)=34 OR tb(l)=46 OR tb(l)=58 THEN deci$="M":choix=tb(l):RETURN
1020 NEXT:RETURN
1030 ' choix d'un coup simple
1040 FOR l=1 TO x
1050 IF tir=1 AND tb(l)>0 AND tb(l)<7 THEN 1090
1060 IF tir=1 AND tb(l)>12 AND tb(l)<19 THEN 1090
1070 IF tir=3 AND ((tb(l)>24 AND tb(l)<31) OR (tb(l)>36 AND tb(l)<43) OR (tb(l)>48 AND tb(l)<55)) THEN 1090
1080 NEXT:RETURN
1090 bb=tb(l) MOD 6
1100 FOR p=1 TO 5:IF bb=dt(p) OR (bb=0 AND dt(p)=6) THEN deci$="M":choix=tb(l):RETURN
1110 NEXT
1120 GOTO 1080
1130 ' choix d'un fool
1140 FOR l=1 TO x:IF tb(l)=9 OR tb(l)=21 OR tb(l)=33 OR tb(l)=45 OR tb(l)=57 THEN deci$="M":choix=tb(l):RETURN
1150 NEXT:RETURN
1160 ' choix du moins
1170 FOR l=1 TO x
1180 IF tb(l)=8 OR tb(l)=20 OR (tb(l)=32 AND flagd(jou)=32) OR (tb(l)=44 AND flagm(jou)=44) OR tb(l)=56 THEN 1200
1190 NEXT:RETURN
1200 IF c(jou,(tb(l)-1))=0 OR c(jou,(tb(l)-1))>=somde+2 THEN deci$="M":choix=tb(l):RETURN
1210 GOTO 1190
1220 ' choix du plus
1230 FOR l=1 TO x
1240      IF tb(l)=7 OR tb(l)=19 OR (tb(l)=31 AND flagd(jou)=31) OR (tb(l)=43 AND flagm(jou)=43) OR tb(l)=55 THEN 1260
1250 NEXT:RETURN
1260 IF c(jou,(tb(l)+1))=0 OR c(jou,(tb(l)+1))+2 <=somde THEN deci$="M":choix=tb(l):RETURN
1270 GOTO 1250
1280 ' choix d'un coup simple pour une egalite
1290 FOR l=1 TO x
1300  IF tir=1 AND tb(l)>0 AND tb(l)<7 THEN 1340
1310 IF tir=2 AND tb(l)>12 AND tb(l)<19 THEN 1340
1320 IF tir=3 AND ((tb(l)>24 AND tb(l)<31) OR (tb(l)>36 AND tb(l)<43) OR (tb(l)>48 AND tb(l)<55)) THEN 1340
1330 NEXT l:RETURN    
1340  IF tb(l) MOD 6=cc OR (tb(l) MOD 6=0 AND cc=6) THEN deci$="M":choix=tb(l):RETURN
1350 GOTO 1330
1360 ' retirage en fonction des coups simples possibles
1370 FOR l=1 TO x    
1380                     IF tir=1 AND tb(l)>12 AND tb(l)<19 THEN 1410
1390                     IF (tb(l)>24 AND tb(l)<31) OR (tb(l)>36 AND tb(l)<43) OR (tb(l)>48 AND tb(l)<55) THEN 1410
1400 NEXT:RETURN    
1410 IF tb(l) MOD 6=vde2 OR (tb(l) MOD 6=0 AND vde2=6) THEN 1440:'retirer vde1
1420 IF tb(l) MOD 6=vde1 OR (tb(l) MOD 6=0 AND vde1=6) THEN 1460:'retirer vde2  
1430 GOTO 1400
1440 FOR m=1 TO 5:IF dt(m)=vde1 THEN dr(m)=1
1450 NEXT m:deci$="T":RETURN
1460 FOR m=1 TO 5:IF dt(m)<>vde1 THEN dr(m)=1
1470 NEXT m:deci$="T":RETURN    
1480 ' choix de la rayure
1490 FOR l=1 TO 60:IF c(jou,ray(l))=0 THEN 1510
1500 NEXT
1510 IF(ray(l)>24 AND ray(l)<37) AND flagd(jou)<>ray(l) THEN 1500
1520 IF(ray(l)>36 AND ray(l)<49) AND flagm(jou)<>ray(l) THEN 1500
1530 choix=ray(l):RETURN
1540 'choix d'un carre
1550 FOR l=1 TO x
1560 IF tir=1 AND tb(l)=11 THEN deci$="M":choix=tb(l):RETURN
1570 IF tir=2 AND tb(l)=23 THEN deci$="M":choix=tb(l):RETURN
1580 IF tir=3 AND tb(l) MOD 12=11 THEN deci$="M":choix=tb(l):RETURN  
1590 NEXT:RETURN
1600 ' choix d'un yam
1610 FOR l=1 TO x:IF tb(l)=12 OR tb(l)=24 OR tb(l)=36 OR tb(l)=48 OR tb(l)=60 THEN deci$="M":choix=tb(l):RETURN   
1620 NEXT:RETURN
1630 ' affichage du retirage de l'AMSTRAD
1640 LOCATE #5,5,3:PRINT #5,"Je retire ";
1650 FOR l=1 TO 5:IF dr(l)=1 THEN PRINT #5,dt(l);
1660 NEXT
1670 FOR l=1 TO 2000:NEXT
1680 RETURN
1690 ' retirage en fonction d'une figure possible
1700 ON ne1 GOTO 1780,2230,2440
1710 ' ne1=0
1720 FOR l=1 TO x
1730 IF tir=1 AND tb(l)=22 THEN 1760
1740 IF tb(l)=34 OR tb(l)=46 OR tb(l)=58 THEN 1760
1750 NEXT:RETURN
1760 deci$="T":FOR l=1 TO 5:IF dt(l)=1 THEN dr(l)=1
1770 NEXT:RETURN   
1780 'ne1=1
1790 ON ne2 GOTO 1960,2120
1800 ' ne2=0
1810 FOR l=1 TO x   
1820 IF (tir=1 AND tb(l) MOD 12=9 AND tb(l)<>9) OR (tir=1 AND tb(l) MOD 12=9 AND tb(l)<>21) THEN 1910
1830 NEXT:FOR l=1 TO x
1840 IF (tir=1 AND tb(l) MOD 12=10 AND tb(l)<>10) OR (tir=1 AND tb(l) MOD 12=10 AND tb(l)<>22) THEN 1930
1850 NEXT
1860 FOR l=1 TO x  
1870 IF tir>1 THEN 1890
1880 IF (tb(l) MOD 12 =11 AND tb(l) <>11) OR (tb(l) MOD 12=0 AND tb(l)<>12) THEN 1910
1890 IF (tb(l) MOD 12 =11 AND tb(l) <>23) OR (tb(l) MOD 12=0 AND tb(l)<>24) THEN 1910
1900 NEXT:RETURN
1910 deci$="T":FOR l=1 TO 5:IF dt(l)<>vde1 THEN dr(l)=1
1920 NEXT:RETURN
1930 IF dt(1)=6 AND dt(5)=1 THEN 1860
1940 deci$="T":FOR l=1 TO 5:IF dt(l)=vde1 THEN dr(l)=1:RETURN
1950 NEXT
1960 'ne2=1
1970 FOR l=1 TO x   
1980 IF tir=1 AND tb(l) MOD 12=9 AND tb(l)<>9 THEN 2050
1990 IF tir>1 AND tb(l) MOD 12=9 AND tb(l)<>21 THEN 2050
2000 NEXT l
2010 FOR l=1 TO x
2020 IF tir=1 AND (tb(l) MOD 12=11 AND tb(l)<>11) OR (tb(l) MOD 12=0 AND tb(l)<>12) THEN 2070
2030 IF tir=1 AND (tb(l) MOD 12=11 AND tb(l)<>23) OR (tb(l) MOD 12=0 AND tb(l)<>24) THEN 2070
2040 NEXT l:RETURN
2050 deci$="T":FOR l=1 TO 5:IF dt(l)<>vde1 AND dt(l)<>vde2 THEN dr(l)=1
2060 NEXT:RETURN
2070 deci$="T":IF vde1>vde2 THEN 2100
2080 FOR l=1 TO 5:IF dt(l)=vde1 THEN dr(l)=1
2090 NEXT:RETURN    
2100 FOR l=1 TO 5:IF dt(l)=vde2 THEN dr(l)=1    
2110 NEXT:RETURN  
2120 ' ne2=2
2130 FOR l=1 TO x
2140 IF tir>1 THEN 2160
2150 IF (tb(l) MOD 12=11 AND tb(l)<>11) OR (tb(l) MOD 12=0 AND tb(l)<>12) THEN 2180
2160 IF (tb(l) MOD 12=11 AND tb(l)<>23) OR (tb(l) MOD 12=0 AND tb(l)<>24) THEN 2180
2170 NEXT:RETURN
2180 deci$="T":IF vde2<3 AND vde2>vde1 THEN 2210
2190 FOR l=1 TO 5:IF dt(l)<>vde2 THEN dr(l)=1
2200 NEXT:RETURN
2210 FOR l=1 TO 5:IF dt(l)<>vde1 THEN dr(l)=1
2220 NEXT:RETURN  
2230 ' ne1=2
2240 IF ne2=1 THEN 2330
2250 'ne2=0
2260 FOR l=1 TO x
2270 IF tir>1 THEN 2290
2280 IF (tb(l) MOD 12=11 AND tb(l)<>11) OR (tb(l) MOD 12=0 AND tb(l)<>12) THEN 2310
2290 IF (tb(l) MOD 12=11 AND tb(l)<>23) OR (tb(l) MOD 12=0 AND tb(l)<>24) THEN 2310
2300 NEXT:RETURN
2310 deci$="T":FOR l=1 TO 5:IF dt(l)<>vde1 THEN dr(l)=1
2320 NEXT:RETURN  
2330 'ne2=1
2340 FOR l=1 TO x
2350 IF tir>1 THEN 2370
2360 IF (tb(l) MOD 12=11 AND tb(l)<>11) OR (tb(l) MOD 12=0 AND tb(l)<>12) THEN 2390
2370 IF (tb(l) MOD 12=11 AND tb(l)<>23) OR (tb(l) MOD 12=0 AND tb(l)<>24) THEN 2390
2380 NEXT:RETURN
2390 deci$="T":IF vde1<3 AND vde1>=vde2 THEN 2420
2400 FOR l=1 TO 5:IF dt(l)<>vde1 THEN dr(l)=1
2410 NEXT:RETURN
2420 FOR l=1 TO 5:IF dt(l)<>vde2 THEN dr(l)=1
2430 NEXT:RETURN
2440 ' ne1=3
2450 FOR l=1 TO x
2460 IF tir=1 AND (tb(l) MOD 12=11 AND tb(l)<>11) OR (tb(l) MOD 12=0 AND tb(l)<>12) THEN 2490
2470 IF tir=1 AND (tb(l) MOD 12=11 AND tb(l)<>23) OR (tb(l) MOD 12=0 AND tb(l)<>24) THEN 2490
2480 NEXT:RETURN
2490 deci$="T":FOR l=1 TO 5:IF dt(l)<>vde1 THEN dr(l)=1
2500 NEXT:RETURN   
2510 '=======fonction help============
2520 IF help=1 THEN 2560
2530 IF deci$="T" THEN GOSUB 1630:GOTO 210
2540 IF deci$="M" THEN 3070
2550 IF deci$="R" THEN 3070
2560 LOCATE #5,5,5:PRINT #5,"Vous devriez ";
2570 IF deci$="T" THEN PRINT #5,"retirer"
2580 IF deci$="M" THEN PRINT #5,"marquer"
2590 IF deci$="R" THEN PRINT #5,"rayer"
2600 LOCATE #5,5,6
2610 IF deci$="M" OR deci$="R" THEN 2640
2620 FOR l=1 TO 5:IF dr(l)=1 THEN PRINT #5,dt(l);
2630 NEXT:GOTO 2670
2640 ii=choix MOD 12:IF ii=0 THEN ii=12
2650 gg2$=MID$(po2$,ii,1):ii=INT((choix-1)/12)+1:gg1$=MID$(po1$,ii,1)
2660 PRINT #5,"le ";gg2$;" en ";gg1$
2670 FOR l=1 TO 3500:NEXT:help=0:GOTO 3840
2680 '==========tirage des des==========
2690 tir=tir+1
2700 FOR l=1 TO 5:IF dr(l)=1 THEN dt(l)=INT(RND*6)+1:FOR m=1 TO 100:NEXT m
2705 NEXT l
2710 GOSUB 2930
2720  CLS #4:LOCATE #4,2,2:GOSUB 5610:PRINT #4,"TIRAGE ";tir;" : ";dt(1);" ";dt(2);" ";dt(3);" ";dt(4);" ";dt(5)
2730 'tri par ordre decroissant
2740 FOR l=1 TO 4:FOR m=l+1 TO 5
2750 IF dt(m)>dt(l) THEN aa=dt(l):dt(l)=dt(m):dt(m)=aa
2760 NEXT m:NEXT l
2770 'calcul des egalites de type 1
2780 ne1=0:ne2=0:vde1=0:vde2=0:l=1
2790 FOR m=l+1 TO 5
2800 IF dt(m)=dt(l) THEN ne1=ne1+1:vde1=dt(m)
2810 NEXT
2820 IF ne1=0 AND l<4 THEN l=l+1:GOTO 2790
2830 IF ne1=0 OR ne1>=3 THEN 2900
2840 'calcul des egalites de type 2
2850 FOR m=l+1 TO 5
2860 IF dt(m)=dt(l) AND dt(m)<>vde1 THEN ne2=ne2+1:vde2=dt(m)
2870 NEXT
2880 IF ne2=0 AND l<4 THEN l=l+1:GOTO 2850
2890 IF ne2=0 AND l=3 THEN l=4:GOTO 2860
2900 somde=dt(1)+dt(2)+dt(3)+dt(4)+dt(5)
2910 dr(1)=0:dr(2)=0:dr(3)=0:dr(4)=0:dr(5)=0
2920 RETURN
2930 'liste des coups possibles
2940 x=1:FOR l=1 TO 38:tb(l)=0:NEXT
2950 ON tir GOTO 2960,2990,3010
2960 FOR l=1 TO 24:IF c(jou,l)=0 THEN tb(x)=l:x=x+1
2970 NEXT
2980 GOTO 3010
2990 FOR l=13 TO 24:IF c(jou,l)=0 THEN tb(x)=l:x=x+1  
3000 NEXT   
3010 FOR l=25 TO 36:IF c(jou,l)=0 AND flagd(jou)=l THEN tb(x)=l:x=x+1    
3020 NEXT
3030 FOR l=37 TO 48:IF c(jou,l)=0 AND flagm(jou)=l THEN tb(x)=l:x=x+1 
3040 NEXT
3050 FOR l=49 TO 60:IF c(jou,l)=0 THEN tb(x)=l:x=x+1   
3060 NEXT:RETURN
3070 '=========calcul de la marque=======
3080 IF choix>24 AND choix<37 THEN flagd(jou)=flagd(jou)+1
3090 IF choix>36 AND choix<49 THEN flagm(jou)=flagm(jou)-1
3100 IF deci$="R" THEN 3170
3110 IF choix<7 OR (choix>12 AND choix<19) OR (choix>24 AND choix<31) OR (choix>36 AND choix<43) OR (choix>48 AND choix<55) THEN 3200
3120 IF choix MOD 12=7 OR choix MOD 12 =8 THEN 3230
3130 IF choix MOD 12=9 THEN 3250
3140 IF choix MOD 12=10 THEN 3270
3150 IF choix MOD 12=11 THEN 3300
3160 GOTO 3320:'yam
3170 IF choix MOD 12=7 THEN 3350
3180 IF choix MOD 12=8 THEN 3380
3190 GOTO 3410:'tous les autres
3200 'les coups simples
3210 somde=0:FOR l=1 TO 5:IF choix MOD 12=dt(l) THEN somde=somde+dt(l)
3220 NEXT:c(jou,choix)=somde:GOTO 3430
3230 'le plus ou le moins
3240 c(jou,choix)=somde:GOTO 3430
3250 'le fool
3260 c(jou,choix)=somde+20:GOTO 3430
3270 'la suite
3280 IF somde=15 THEN c(jou,choix)=45:GOTO 3430
3290 c(jou,choix)=60:GOTO 3430
3300 'le carre
3310 c(jou,choix)=vde1*4+30:GOTO 3430
3320 'le yam
3330 c(jou,choix)=somde+40:GOTO 3430
3340 'la rayure
3350 'le plus
3360 c(jou,choix)=99:svc(jou)=c(jou,choix+1):c(jou,choix+1)=99:IF choix=31 THEN flagd(jou)=33
3370 GOTO 3490
3380 'le moins
3390 c(jou,choix)=99:svc(jou)=c(jou,choix-1):c(jou,choix-1)=99:IF choix=44 THEN flagm(jou)=42
3400 GOTO 3490
3410 'les autres
3420 c(jou,choix)=99:GOTO 3490
3430 'affichage de la marque
3440 IF jou=1 AND amstrad=1 THEN 3460
3450 LOCATE #5,20,6:PRINT #5,"SOIT ";c(jou,choix);" POINTS":GOTO 3550
3460 ii=choix MOD 12:IF ii=0 THEN ii=12
3470 gg2$=MID$(po2$,ii,1):ii=INT((choix-1)/12)+1:gg1$=MID$(po1$,ii,1)
3480 LOCATE #5,5,3:PRINT #5,"Je marque le ";gg2$;" en ";gg1$:LOCATE #5,8,6:PRINT #5,"SOIT ";c(jou,choix);" POINTS":GOTO 3550
3490 'affichage de la rayure
3500 IF jou=1 AND amstrad=1 THEN 3520
3510 LOCATE #5,5,6:PRINT #5,"D'ACCORD, C'EST RAYE":GOTO 3550
3520 ii=choix MOD 12:IF ii=0 THEN ii=12
3530 gg2$=MID$(po2$,ii,1):ii=INT((choix-1)/12)+1:gg1$=MID$(po1$,ii,1)
3540 LOCATE #5,5,3:PRINT #5,"Je raye le ";gg2$;" en ";gg1$:GOTO 3550
3550 'totaux par colonnes
3560 FOR k=0 TO 4
3570 dd=12*k
3580 IF c(jou,61+k)<>0 THEN 3680
3590 FOR l=1 TO 6:IF c(jou,dd+l)=0 THEN 3750
3600 NEXT l
3610 FOR m=1 TO 6:IF c(jou,dd+m)=99 THEN 3630
3620 c(jou,61+k)=c(jou,61+k)+c(jou,dd+m)
3630 NEXT m
3640 IF c(jou,61+k)>=80 THEN c(jou,66+k)=c(jou,61+k)*2:GOTO 3680
3650 IF c(jou,61+k)>=70 THEN c(jou,66+k)=c(jou,61+k)+30:GOTO 3680
3660 IF c(jou,61+k)>=60 THEN c(jou,66+k)=c(jou,61+k)+20:GOTO 3680
3670 c(jou,66+k)=c(jou,61+k)
3680 IF c(jou,71+k)<>0 THEN 3750
3690 FOR l=7 TO 12:IF c(jou,dd+l)=0 THEN 3750
3700 NEXT l
3710 c(jou,71+k)=c(jou,66+k)
3720 FOR m=7 TO 12:IF c(jou,dd+m)=99 THEN 3740
3730 c(jou,71+k)=c(jou,71+k)+c(jou,dd+m)
3740 NEXT m
3750 NEXT k
3760 IF c(jou,71)<>0 AND c(jou,72)<>0 AND c(jou,73)<>0 AND c(jou,74)<>0 AND c(jou,75)<>0 THEN finjou(jou)=1
3770 c(jou,76)=c(jou,71)*3:c(jou,77)=c(jou,72)*2:c(jou,78)=c(jou,73)
3780 c(jou,79)=c(jou,74):c(jou,80)=c(jou,75)
3790 c(jou,81)=c(jou,76)+c(jou,77)+c(jou,78)+c(jou,79)+c(jou,80)
3800 GOTO 5970
3810 ' ===========jeu du joueur==========
3820 CLS #1:GOSUB 4930
3830 GOSUB 2680
3840 CLS #5:CLS #6
3850 LOCATE #5,5,1:PRINT #5,"Que faites vous ? ";
3860 deci$=UPPER$(INKEY$):IF deci$="" THEN 3860
3870 IF deci$="T" THEN PRINT #5,"T":GOSUB 3940:GOTO 3950
3880 IF deci$="M" THEN PRINT #5,"M":GOSUB 3940:GOTO 4140
3890 IF deci$="R" THEN PRINT #5,"R":GOSUB 3940:GOTO 4140
3900 IF deci$="C" THEN PRINT #5,"C":GOTO 4780
3910 IF deci$="A" THEN PRINT #5,"A":GOSUB 3940:GOTO 4910
3920 IF deci$="H" THEN PRINT #5,"H":GOSUB 3940:help=1:LOCATE #5,5,2:PRINT #5,"Je reflechis...":GOTO 230
3930 GOTO 3860
3940 svdt(1)=dt(1):svdt(2)=dt(2):svdt(3)=dt(3):svdt(4)=dt(4):svdt(5)=dt(5):svdeci$=deci$:svjou=jou:svtir=tir:RETURN
3950 'retirage des des
3960 IF tir=3 THEN GOSUB 5640:CLS #6:PRINT #6,"IMPOSSIBLE, C'EST DEJA LE TIRAGE 3":FOR l=1 TO 2500:NEXT:GOTO 3840
3970 LOCATE #5,5,3:PRINT #5,"Quels des retirez vous ?":LOCATE #5,5,4:PRINT #5,"tous:9-valid.:<ENTER>-erreur:curseur G"
3980 l=1:LOCATE #5,5,6
3990 deci$=INKEY$:IF deci$="" THEN 3990
4000 IF deci$=CHR$(13) THEN 4070:'return
4010 IF deci$=CHR$(242) THEN LOCATE #5,5,6:PRINT #5,SPC(20):FOR l=1 TO 4:ff(l)=0:NEXT:GOTO 3980:'curseur G
4020 IF deci$="9" THEN dr(1)=1:dr(2)=1:dr(3)=1:dr(4)=1:dr(5)=1:GOTO 3830
4030 IF ASC(deci$)<49 OR ASC(deci$)>54 THEN 3990
4040 IF l=5 THEN 3990
4050 ff(l)=VAL(deci$):PRINT #5,ff(l);:l=l+1
4060 GOTO 3990
4070 'validation
4080 FOR n=1 TO l-1
4090 FOR m=1 TO 5
4100 IF ff(n)=dt(m) AND dr(m)=0 THEN dr(m)=1:GOTO 4120
4110 NEXT m
4120 NEXT n
4130 GOTO 3830
4140 'marque ou rayure
4150 IF deci$="R" THEN LOCATE #5,5,3:PRINT #5,"Quelle case rayez vous ?":GOTO 4170
4160 LOCATE #5,5,3:PRINT #5,"Quelle case marquez vous ?"
4170 LOCATE #5,5,4:PRINT #5,"valid.:<ENTER>-erreur:curseur G"
4180 GOSUB 4570
4190 'calcul de la variable tb
4200 FOR l=0 TO 4:IF MID$(po1$,(l+1),1)=gg1$ THEN 4220
4210 NEXT
4220 FOR m=1 TO 12:IF MID$(po2$,m,1)=gg2$ THEN 4240
4230 NEXT
4240 choix=(l*12)+m:svchoix=choix
4250 'verification de la legalite du coup
4260 IF c(jou,choix)=99 THEN GOSUB 5640:CLS #6:PRINT #6,"IMPOSSIBLE, CETTE CASE EST DEJA RAYEE":FOR l=1 TO 2500:NEXT:GOTO 3840
4270 IF c(jou,choix)>0 THEN GOSUB 5640:CLS #6:PRINT #6,"IMPOSSIBLE, CETTE CASE EST DEJA REMPLIE":FOR l=1 TO 2500:NEXT:GOTO 3840
4280 IF (choix>36 AND choix<49) AND flagm(jou)<>choix THEN GOSUB 5640:CLS #6:PRINT #6,"IMPOSSIBLE, VOUS N'ETES PAS ENCORE A CETTE CASE":FOR l=1 TO 2500:NEXT:GOTO 3840
4290 IF (choix>24 AND choix<37) AND flagd(jou)<>choix THEN GOSUB 5640:CLS #6:PRINT #6,"IMPOSSIBLE, VOUS N'ETES PAS ENCORE A CETTE CASE":FOR l=1 TO 2500:NEXT:GOTO 3840  
4300 IF deci$="R" THEN 3070
4310 FOR n=1 TO x:IF choix=tb(n) THEN 4340
4320 NEXT
4330 GOSUB 5640:CLS #6:PRINT #6,"IMPOSSIBLE,C'EST DEJA LE TIRAGE ";tir:FOR l=1 TO 2500:NEXT:GOTO 3840
4340 ON m GOTO 4350,4350,4350,4350,4350,4350,4390,4420,4450,4480,4510,4540
4350 'les coups simples
4360 FOR n=1 TO 5:IF dt(n)=m THEN 3070
4370 NEXT
4380 GOSUB 5640:CLS #6:PRINT #6,"IMPOSSIBLE, VOUS N'AVEZ PAS DE ";m:FOR l=1 TO 2500:NEXT:GOTO 3840
4390 'le plus
4400 IF somde>=23 AND somde>=c(jou,choix+1)+2 THEN 3070
4410 GOSUB 5640:CLS #6:PRINT #6,"IMPOSSIBLE, LE TIRAGE EST INSUFFISANT":FOR l=1 TO 2500:NEXT:GOTO 3840
4420 'le moins
4430 IF somde>=21 AND (somde<=c(jou,choix-1)-2 OR c(jou,choix-1)=0) THEN 3070
4440 GOSUB 5640:CLS #6:PRINT #6,"IMPOSSIBLE, LE TIRAGE NE CONVIENT PAS":FOR l=1 TO 2500:NEXT:GOTO 3840
4450 'le fool
4460 IF (ne1=1 AND ne2=2) OR (ne1=2 AND ne2=1) OR ne1=4 THEN 3070
4470 GOSUB 5640:CLS #6:PRINT #6,"IMPOSSIBLE, VOUS N'AVEZ PAS UN FOOL":FOR l=1 TO 2500:NEXT:GOTO 3840
4480 'la suite
4490 IF somde=15 OR somde=20 THEN 3070
4500 GOSUB 5640:CLS #6:PRINT #6,"IMPOSSIBLE, VOUS N'AVEZ PAS UNE SUITE":FOR l=1 TO 2500:NEXT:GOTO 3840
4510 'le carre
4520 IF ne1=3 OR ne1=4 THEN 3070
4530 GOSUB 5640:CLS #6:PRINT #6,"IMPOSSIBLE, VOUS N'AVEZ PAS UN CARRE":FOR l=1 TO 2500:NEXT:GOTO 3840
4540 'le yam
4550 IF ne1=4 THEN 3070
4560 GOSUB 5640:CLS #6:PRINT #6,"IMPOSSIBLE, VOUS N'AVEZ PAS UN YAM":FOR l=1 TO 2500:NEXT:GOTO 3840
4570 'sous programme d'affichage
4580 LOCATE #5,5,6:PRINT #5,"le   en ":LOCATE #5,8,6
4590 dc$=UPPER$(INKEY$):IF dc$="" THEN 4590
4600 IF ASC(dc$)>48 AND ASC(dc$)<55 THEN gg2$=dc$:PRINT #5,gg2$:GOTO 4680
4610 IF dc$="+" THEN PRINT #5,dc$:gg2$=dc$:GOTO 4680
4620 IF dc$="-" THEN PRINT #5,dc$:gg2$=dc$:GOTO 4680   
4630 IF dc$="F" THEN PRINT #5,dc$:gg2$=dc$:GOTO 4680   
4640 IF dc$="S" THEN PRINT #5,dc$:gg2$=dc$:GOTO 4680  
4650 IF dc$="C" THEN PRINT #5,dc$:gg2$=dc$:GOTO 4680    
4660 IF dc$="Y" THEN PRINT #5,dc$:gg2$=dc$:GOTO 4680
4670 GOTO 4590
4680 LOCATE #5,13,6
4690 dc$=UPPER$(INKEY$):IF dc$="" THEN 4690
4700 IF dc$=CHR$(242) AND POS(#5)>7 THEN LOCATE #5,8,6:PRINT #5," ":LOCATE #5,13,6:PRINT #5," ":LOCATE #5,8,6:GOTO 4590
4710 IF dc$=CHR$(13) THEN RETURN
4720 IF dc$="1" THEN PRINT #5,dc$:gg1$=dc$:GOTO 4690
4730 IF dc$="2" THEN PRINT #5,dc$:gg1$=dc$:GOTO 4690    
4740 IF dc$="M" THEN PRINT #5,dc$:gg1$=dc$:GOTO 4690 
4750 IF dc$="D" THEN PRINT #5,dc$:gg1$=dc$:GOTO 4690   
4760 IF dc$="I" THEN PRINT #5,dc$:gg1$=dc$:GOTO 4690   
4770 GOTO 4690
4780 'annulation de la commande precedente
4790 IF jou=2 AND amstrad=1 THEN saut=1
4800 tir=svtir:dt(1)=svdt(1):dt(2)=svdt(2):dt(3)=svdt(3):dt(4)=svdt(4):dt(5)=svdt(5)
4810 IF svdeci$="T" THEN GOSUB 2710:GOTO 3840
4820 IF svdeci$="M" OR svdeci$="R" THEN jou=svjou:choix=svchoix
4830 IF svdeci$="M" THEN c(jou,choix)=0:GOSUB 4930:GOSUB 2710:GOTO 3840
4840 IF svdeci$="A" THEN jou=svjou:finjou(jou)=0:GOSUB 4930:GOSUB 2710:GOTO 3840
4850 IF svdeci$="C" THEN 3840
4860 'svdeci$="R"
4870 IF choix MOD 12 =7 THEN c(jou,choix)=0:c(jou,choix+1)=svc(jou):GOSUB 4930:GOSUB 2710:GOTO 3840
4880 IF choix MOD 12=8 THEN c(jou,choix)=0:c(jou,choix-1)=svc(jou):GOSUB 4930:GOSUB 2710:GOTO 3840
4890 'autre cas
4900 c(jou,choix)=0:GOSUB 4930:GOSUB 2710:GOTO 3840
4910 'abandon
4920 finjou(jou)=1:GOTO 5970
4930 '========affichage permanent======
4940 LOCATE #1,1,1
4950 PRINT #1,TAB(4);CHR$(149);TAB(6);"1C";TAB(9);CHR$(149);TAB(11);"2C";TAB(14);CHR$(149);TAB(17);"D";TAB(19);CHR$(149);TAB(22);"M";TAB(24);CHR$(149);TAB(26);"IN"
4960 PRINT #1,STRING$(28,154);
4970 PRINT #1," 1 ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149)
4980 PRINT #1," 2 ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149)  
4990 PRINT #1," 3 ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149)
5000 PRINT #1," 4 ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149) 
5010 PRINT #1," 5 ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149)  
5020 PRINT #1," 6 ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149)  
5030 PRINT #1,STRING$(28,154);
5040 PRINT #1,"ST ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149)
5050 PRINT #1,"TB ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149)  
5060 PRINT #1,STRING$(28,154);
5070 PRINT #1," + ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149)  
5080 PRINT #1," - ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149)  
5090 PRINT #1,STRING$(28,154);    
5100 PRINT #1," F ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149) 
5110 PRINT #1," S ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149)  
5120 PRINT #1," C ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149)  
5130 PRINT #1," Y ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149)  
5140 PRINT #1,STRING$(28,154);
5150 PRINT #1," T ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149)  
5160 PRINT #1,"TB ";CHR$(149);TAB(9);CHR$(149);TAB(14);CHR$(149);TAB(19);CHR$(149);TAB(24);CHR$(149)  
5170 dd=0:LOCATE #1,7,3
5180 FOR l=1 TO 6:FOR m=1 TO 5
5190 IF c(jou,dd+l)<>0 AND c(jou,dd+l)<>99 THEN LOCATE #1,(5*m),(2+l):PRINT #1,USING "###";c(jou,dd+l);:dd=dd+12:GOTO 5220
5200 IF c(jou,dd+l)=99 THEN LOCATE #1,((5*m)+1),(2+l):PRINT #1,CHR$(233);CHR$(233);:dd=dd+12:GOTO 5220
5210 dd=dd+12
5220 NEXT m:dd=0
5230 NEXT l
5240 dd=60
5250 FOR l=1 TO 2
5260 FOR m=1 TO 5
5270   IF c(jou,dd+m)<>0 THEN LOCATE #1,(5*m),(9+l):PRINT #1,USING "###";c(jou,dd+m);
5280 NEXT m:dd=65
5290 NEXT l
5300 dd=6
5310 FOR l=1 TO 2
5320 FOR m=1 TO 5
5330   IF c(jou,dd+l)<>0 AND c(jou,dd+l)<>99 THEN LOCATE #1,(5*m),(12+l):PRINT #1,USING "###";c(jou,dd+l);:dd=dd+12:GOTO 5360
5340 IF c(jou,dd+l)=99 THEN LOCATE #1,((5*m)+1),(12+l):PRINT #1,CHR$(233);CHR$(233);:dd=dd+12:GOTO 5360
5350 dd=dd+12
5360 NEXT m:dd=6
5370 NEXT l
5380 dd=8
5390 FOR l=1 TO 4
5400 FOR m=1 TO 5 
5410 IF c(jou,dd+l)<>0 AND c(jou,dd+l)<>99 THEN LOCATE #1,(5*m),(15+l):PRINT #1,USING "###";c(jou,dd+l);:dd=dd+12:GOTO 5440
5420 IF c(jou,dd+l)=99 THEN LOCATE #1,((5*m)+1),(15+l):PRINT #1,CHR$(233);CHR$(233);:dd=dd+12:GOTO 5440
5430 dd=dd+12
5440 NEXT m:dd=8
5450 NEXT l
5460 dd=70
5470 FOR l=1 TO 2
5480 FOR m=1 TO 5
5490 IF c(jou,dd+m)<>0 THEN LOCATE #1,(5*m),(20+l):PRINT #1,USING "###";c(jou,dd+m);
5500 NEXT m:dd=75:NEXT l
5510 CLS #2:LOCATE #2,2,1:PRINT #2,"C'est a ";nomjou$(jou);" de jouer"
5520 RETURN
5530 'affichage des commandes
5540 PRINT #3," Tirer les des............T"
5550 PRINT #3," Marquer les des..........M"
5560 PRINT #3," Rayer une case...........R"
5570 PRINT #3," Annuler la commande......C"
5580 PRINT #3," Abandonner...............A"
5590 PRINT #3," Help !...................H"
5600 RETURN
5610 '=========sonorisation===========
5620 'tirage
5630 FOR l=1 TO 5:SOUND 1,son(l),10:NEXT:RETURN
5640 'erreur
5650 SOUND 1,1046,100:RETURN
5660 '=========initialisations========
5670 po2$="123456+-FSCY":po1$="12DMI"
5680 FOR l=1 TO 5:flagm(l)=48:flagd(l)=25:NEXT
5690 jou=1
5700 FOR l=1 TO 5:finjou(l)=0:NEXT
5710 RESTORE:FOR l=1 TO 60:READ ray(l):NEXT
5720 FOR l=1 TO 5:READ son(l):NEXT
5730 RETURN
5740 '========inscription des joueurs========
5750 CLS:MODE 1
5760 LOCATE #0,9,3:PRINT"INSCRIPTION DES JOUEURS"
5770 LOCATE #0,1,5:PRINT"Voulez vous que je joue ? (O/N): ";
5780 deci$=UPPER$(INKEY$):IF deci$="" THEN 5780
5790 PRINT deci$:IF deci$="O" THEN amstrad=1:nomjou$(1)="AMSTRASUPER":svnomjou$(1)="AMSTRASUPER"
5800 jj=10:jou=1:WINDOW #1,1,40,18,19:WINDOW #2,1,40,22,23
5810 LOCATE #0,5,jj:IF nomjou$(jou)<>"" THEN PRINT "Joueur ";jou;"   ";nomjou$(jou):jj=jj+1:jou=jou+1:nbjou=nbjou+1
5820 IF jou=6 THEN CLS #1:LOCATE #1,5,1:PRINT #1,"DESOLE,PAS PLUS DE 5":FOR l=1 TO 2000:NEXT:GOSUB 5890:GOTO 6000
5830 LOCATE #2,1,1:PRINT #2,"Tapez le nom du joueur et <ENTER>,ou <ENTER> seul pour demarrer le jeu."
5840 CLS #1:LOCATE #1,5,1:PRINT #1,"Nom du joueur ";jou;:LINE INPUT #1,nomjou$(jou):nomjou$(jou)=UPPER$(nomjou$(jou)):svnomjou$(jou)=nomjou$(jou)
5850 IF LEN(nomjou$(jou))>12 THEN CLS #1:LOCATE #1,5,1:PRINT #1,"CE N'EST PAS POSSIBLE !":FOR l=1 TO 1000:NEXT:GOTO 5840
5860 IF nomjou$(jou)="" THEN RETURN
5870 GOTO 5810
5880 RETURN
5890 '========dessin du cadre==========
5900 MODE 2:CLS
5910 FOR l=1 TO 25:LOCATE 1,l:PRINT CHR$(127);TAB(30);CHR$(127);TAB(79);CHR$(127):NEXT
5920 LOCATE 1,1:PRINT STRING$(30,127):LOCATE 31,1:PRINT STRING$(48,208):LOCATE 31,3:PRINT STRING$(48,140):LOCATE 30,10:PRINT STRING$(49,127):LOCATE 30,14:PRINT STRING$(49,127)
5930 LOCATE 30,21:PRINT STRING$(49,127):LOCATE 1,24:PRINT STRING$(79,127):PRINT STRING$(79,127):LOCATE 30,25:PRINT"  YAM A 5 COLONNES  "
5940 WINDOW #1,2,29,2,23:WINDOW #2,31,78,2,2:WINDOW #3,31,78,4,9:WINDOW #4,31,78,11,13:WINDOW #5,31,78,15,20:WINDOW #6,31,78,22,23
5950 GOSUB 5530
5960 RETURN
5970 '=========boucle de jeu===========
5980 CLS #6:LOCATE #6,12,1:PRINT #6,"<SPACE> pour continuer le jeu"
5990 IF INKEY(47)<0 THEN 5990
6000 jou=jou+1:IF jou>nbjou THEN jou=1
6010 IF flagfinjeu=nbjou THEN 6070
6020 IF saut=1 THEN jou=jou+1:saut=0
6030 IF finjou(jou)=1 THEN flagfinjeu=flagfinjeu+1:GOTO 6000
6040 tir=0:dr(1)=1:dr(2)=1:dr(3)=1:dr(4)=1:dr(5)=1
6050 IF jou=1 THEN flagfinjeu=0:IF amstrad=1 THEN 190
6060 GOTO 3810
6070 '=========fin du jeu============
6080 MODE 1
6090 LOCATE 10,1:PRINT"VOICI LES RESULTATS"
6100 FOR l=1 TO nbjou-1:FOR m=l+1 TO nbjou
6110 IF c(m,81)>c(l,81) THEN aa=c(l,81):aa$=nomjou$(l):c(l,81)=c(m,81):nomjou$(l)=nomjou$(m):c(m,81)=aa:nomjou$(m)=aa$
6120 NEXT m:NEXT l
6130 FOR l=1 TO nbjou
6140 LOCATE 1,4+l:PRINT l;"   ";nomjou$(l);TAB(25);c(l,81);" points"
6150 NEXT
6160 IF nomjou$(1)="AMSTRASUPER" THEN LOCATE 2,16:PRINT"J'avoue que je ne suis pas mecontent...":GOTO 6180
6170 LOCATE 5,16:PRINT"BRAVO ";nomjou$(1);" !"
6180 LOCATE 5,18:PRINT"Une autre partie? (O/N)"
6190 CLEAR INPUT
6200 deci$=UPPER$(INKEY$):IF deci$="" THEN 6200
6210 IF deci$="O" THEN 6230
6220 LOCATE 5,20:PRINT"Dommage...":END
6230 LOCATE 5,20:PRINT"Avec les memes joueurs? (O/N)"
6240 deci$=UPPER$(INKEY$):IF deci$="" THEN 6240
6250 IF deci$="O" THEN 6270
6260 CLS:GOTO 130
6270 FOR l=1 TO nbjou:finjou(l)=0:nomjou$(l)=svnomjou$(l):flagm(l)=48:flagd(l)=25:FOR m=1 TO 81
6280 c(l,m)=0:NEXT m:NEXT l
6290 jou=0:flagfinjeu=0:GOSUB 5890:GOTO 6000
6300 '==========data's==============
6310 DATA 48,49,25,26,27,28,29,30,42,41,40,39,38,37,44,31,50,51,52,53,54,46,34,12,56,55,33,47,35,45
6320 DATA 36,24,43,32,57,58,59,13,1,14,15,16,17,18,2,3,4,5,6,20,19,22,21,23,8,7,10,9,11,60
6330 DATA 1396,1567,1760,1975,2093
6340 '============regles du jeu=========================
6350 MODE 2:PRINT TAB(34);"REGLES DU JEU":PRINT TAB(34);"_____________":PRINT
6360 PRINT"Le but de ce jeu de reflexion et de hasard est de realiser avec 5 des et en 3"
6370 PRINT"tirages maximum, un certain nombre de figures. Celles ci sont reparties en"
6380 PRINT"colonnes, sur lesquelles s'exercent diverses contraintes:"
6390 PRINT
6400 PRINT"-Les figures de la colonne 1 ne peuvent etre realisees qu'en 1 seul tirage."
6410 PRINT"-Celles de la colonne 2 ne peuvent etre faites qu'en 2 coups maximum."
6420 PRINT"-La colonne D doit etre remplie dans l'ordre en descendant."
6430 PRINT"-La colonne M doit etre remplie dans l'ordre en montant."
6440 PRINT"-La colonne I est entierement libre."
6450 PRINT
6460 PRINT"Si en 3 tirages le joueur n'a pu realiser une des figures demandees, il doit"
6470 PRINT"rayer une case vide de son choix (celles des colonnes D et M seront cependant"
6480 PRINT"rayees dans l'ordre D ou M). La rayure du + ou du - annule ces 2 cases en"
6490 PRINT"meme temps. Une case rayee vaut 0 point."
6500 PRINT"Les coups simples (de 1 a 6) beneficient d'un bonus, si leur total (ST) est"
6510 PRINT"superieur ou egal a 60. Les points de la colonne 1 sont ensuite multiplies par 3"
6520 PRINT"ceux de la colonne 2 par 2. Le vainqueur est celui qui a le total de points"
6530 PRINT"le plus eleve."
6540 PRINT TAB(30);"<SPACE> pour continuer"
6550 CALL &BB06:CLS
6560 PRINT"FIGURE              CONDITION EXIGEE              VALEUR"
6570 PRINT
6580 PRINT"1-2-3-4-5-6         au moins 1 de de la           somme des des correspondants"
6590 PRINT"                    valeur voulue"
6600 PRINT" le +               somme des des >=23            somme des des"
6610 PRINT"                    et <= (moins+2)"
6620 PRINT" le -               somme des des >=21            somme des des"
6630 PRINT"                    et <= (plus-2)"
6640 PRINT" le Fool            2 des pareils + 3             20 + somme des des"
6650 PRINT"                    des pareils"
6660 PRINT" la suite           1-2-3-4-5 ou                  45 ou 60"
6670 PRINT"                    2-3-4-5-6"
6680 PRINT" le carre           4 des pareils                 30 + somme des des"
6690 PRINT" le yam             5 des pareils                 40 + somme des des"
6700 PRINT
6710 PRINT"Le programme autorise 5 joueurs, l'ordinateur peut etre l'un d'eux. Il sert"
6720 PRINT"d'arbitre, de comptable, et empeche la triche. On peut lui demander conseil (H)"
6730 PRINT"Un joueur peut abandonner en cours de partie sans empecher les autres de"
6740 PRINT"continuer (A). On peut enfin revenir en arriere en annulant la commande"
6750 PRINT"precedente. Cette commande n'est active que quand la question 'que faites vous"
6760 PRINT"est posee, donc au tour du joueur suivant. Le programme revient alors en"
6770 PRINT"arriere, en sautant le tour de l'AMSTRAD si celui ci etait intercale."
6780 PRINT TAB(30);"<SPACE> pour continuer"
6790 CALL &BB06:CLS
6800 PRINT"Pour corriger une erreur, on peut, selon les circonstances, utiliser le curseur"
6810 PRINT"GAUCHE, demander l'execution d'un ordre illegal (ex. marquer une case deja"
6820 PRINT"remplie) ou utiliser la commande C au tour du joueur suivant."
6830 PRINT
6840 PRINTSi vous desirez une demonstration, designez l'ordinateur comme unique joueur."
6850 LOCATE 1,20:PRINT  TAB(30);"<SPACE> pour continuer"
6860 CALL &BB06:RETURN