10 REM ***************
20 REM *   MARIAGE   *
30 REM * BAUSSARON C *
40 REM ***************
50 REM
60 REM ******************************
70 REM INITIALISATION FENETRE COULEUR
80 REM ******************************
90 CLEAR
100 WINDOW #1,1,80,1,4
110 WINDOW #0,1,80,6,25
120 WINDOW #2,1,80,5,5
130 INK 0,26
140 INK 1,2
150 INK 2,0
160 INK 3,6
170 BORDER 1
180 REM *********************
190 REM DEFINITION CARACTERES
200 REM *********************
210 SYMBOL AFTER 204
220 REM *** trefle ***
230 SYMBOL 230,56,56,214,254,214,16,56,0
240 REM *** trefle inverse ***
250 SYMBOL 234,0,56,16,214,254,214,56,56
260 REM *** pique inverse ***
270 SYMBOL 233,0,56,16,254,254,124,56,16  
280 REM *** coeur inverse ***
290 SYMBOL 232,0,16,56,124,254,254,254,108 
300 REM *** carreau inverse ***
310 SYMBOL 231,0,16,56,124,254,124,56,16
320 REM *** roi ***
330 SYMBOL 205,0,0,0,0,0,0,0,24
340 SYMBOL 235,2,2,3,3,3,2,2,2
350 SYMBOL 242,126,24,24,60,255,0,0,231
360 SYMBOL 249,64,64,192,192,192,64,64,64
370 SYMBOL 206,2,1,1,1,0,0,0,0
380 SYMBOL 213,0,24,24,0,189,195,102,126
390 SYMBOL 220,64,128,128,128,0,0,0,0
400 SYMBOL 204,126,60,0,0,0,0,0,0
410 REM *** reine ***
420 SYMBOL 236,1,1,3,3,3,7,6,6
430 SYMBOL 243,24,24,189,255,255,0,0,231
440 SYMBOL 250,128,128,192,192,192,224,96,96
450 SYMBOL 207,6,13,13,29,28,16,0,0
460 SYMBOL 214,0,24,0,60,129,66,60
470 SYMBOL 221,96,176,176,184,56,0,0
480 REM *** valet ***
490 SYMBOL 237,3,15,31,15,7,3,2,2
500 SYMBOL 244,255,255,255,255,129,0,0,231
510 SYMBOL 251,192,240,248,240,224,192,64,64
520 SYMBOL 208,2,1,1,1,0,0,0,0
530 SYMBOL 215,0,24,0,60,129,66,60
540 SYMBOL 222,64,128,128,128,0,0,0,0
550 REM *** as carreau ***
560 SYMBOL 238,0,0,0,0,0,0,1,3
570 SYMBOL 245,0,0,24,60,126,255,255,255
580 SYMBOL 252,0,0,0,0,0,0,128,192
590 SYMBOL 209,3,1,0,0,0,0,0,0
600 SYMBOL 216,255,255,255,126,60,24,0,0
610 SYMBOL 223,192,128,0,0,0,0,0,0
620 REM *** as coeur ***
630 SYMBOL 239,0,0,0,1,3,7,7,7
640 SYMBOL 246,0,0,0,195,231,255,255,255
650 SYMBOL 253,0,0,0,128,192,224,224,224
660 SYMBOL 210,3,1,0,0,0,0,0,0
670 SYMBOL 217,255,255,255,126,60,24,0,0
680 SYMBOL 224,192,128,0,0,0,0,0,0
690 REM *** as pique ***
700 SYMBOL 240,0,0,0,0,0,0,1,3
710 SYMBOL 247,0,0,24,60,126,255,255,255
720 SYMBOL 254,0,0,0,0,0,0,128,192
730 SYMBOL 211,7,7,7,3,0,0,0,0
740 SYMBOL 218,255,255,219,153,60,126,0,0
750 SYMBOL 225,224,224,224,192,0,0,0,0
760 REM *** as trefle ***
770 SYMBOL 241,0,0,0,0,0,0,3,7
780 SYMBOL 248,0,60,126,255,255,126,24,219
790 SYMBOL 255,0,0,0,0,0,0,192,224
800 SYMBOL 212,15,15,7,3,0,0,0,0
810 SYMBOL 219,255,255,219,24,60,126,0,0
820 SYMBOL 226,240,240,224,192,0,0,0,0
830 REM *******************************
840 REM INITIALISATION TABLEAUX-JOUEURS
850 REM *******************************
860 DIM jeu$(52,5)
870 DIM mem(4,13)
880 DIM memc(52)
890 DIM p(13)
900 DIM score(4)
910 GOSUB 2850
920 REM *********************
930 REM MELANGE JEU DE CARTES
940 REM *********************
950 PEN #2,0
960 CLS
970 PRINT #2,TAB(11)"JE MELANGE LES CARTES..."
980 ERASE jeu$
990 DIM jeu$(52,5)
1000 FOR i=0 TO 2
1010 FOR j=2 TO 14
1020 RANDOMIZE TIME
1030 c=1+INT(RND*52)
1040 IF jeu$(c,1)<>"" THEN 1030
1050 GOSUB 4650
1060 GOSUB 4750
1070 NEXT
1080 NEXT
1090 j=0
1100 FOR i=1 TO 52
1110 IF jeu$(i,1)<>"" THEN 1140
1120 j=j+1
1130 p(j)=i
1140 NEXT
1150 i=3
1160 FOR j=2 TO 14
1170 c=1+INT(RND*13)
1180 IF jeu$(p(c),1)<>"" THEN 1170
1190 c=p(c)
1200 GOSUB 4650
1210 GOSUB 4750
1220 NEXT
1230 ERASE memc
1240 DIM memc(52)
1250 FOR i=1 TO 52
1260 memc(i)=i
1270 NEXT
1280 nbc=52
1290 FOR i=334 TO 0 STEP -1
1300 MOVE 0,i
1310 DRAWR 640,0,3
1320 NEXT
1330 REM ********************
1340 REM DESSIN DES 52 CARTES
1350 REM ********************
1360 PAPER #2,1
1370 CLS #2
1380 PEN 1
1390 FOR i=1 TO 4
1400 LOCATE 1,i*5
1410 PRINT STRING$(40,CHR$(143));
1420 NEXT
1430 MOVE 0,0
1440 DRAWR 0,319,1
1450 FOR i=50 TO 640 STEP 49
1460 MOVE i,0
1470 DRAWR 0,319,1
1480 NEXT
1490 PAPER 1
1500 PEN 2
1510 FOR i=1 TO 4
1520 FOR j=1 TO 13
1530 LOCATE 2+(j-1)*3,i*5
1540 PRINT USING "##";(i-1)*13+j
1550 NEXT
1560 NEXT
1570 REM ************
1580 REM DEBUT DU JEU
1590 REM ************
1600 ERASE score
1610 DIM score(4)
1620 ERASE mem
1630 DIM mem(4,13)
1640 joueur=1
1650 WHILE nbpaires<26
1660 REM *****************
1670 REM ECRITURE DES NOMS
1680 REM *****************
1690 FOR i=1 TO nbj
1700 PEN #1,0
1710 IF i=joueur THEN PEN #1,3
1720 LOCATE #1,10*i-9,1
1730 PRINT #1,joueur$(i)
1740 LOCATE #1,10*i-9,3
1750 PRINT #1,score(i)
1760 NEXT
1770 REM **************************
1780 REM CHOIX DES CARTES : JOUEURS
1790 REM **************************
1800 IF joueur$(joueur)="CPC 464" THEN GOTO 1900
1810 PEN #2,0
1820 CALL 47872
1830 INPUT #2,"choisissez vos cartes x,y ",c1,c2
1840 IF c1<1 OR c1>52 THEN 1830
1850 IF c2<1 OR c2>52 THEN 1830
1860 IF c2=c1 THEN 1830
1870 IF jeu$(c1,4)=""OR jeu$(c2,4)="" THEN 1830
1880 GOTO 2180
1890 REM **************************
1900 REM CHOIX DES CARTES : CPC 464
1910 REM **************************
1920 FOR i=1 TO 4 STEP 2
1930 FOR j=1 TO 13
1940 IF mem(i,j)=0 OR mem(i+1,j)=0 THEN 1960
1950 IF jeu$(mem(i,j),4)<>"" THEN 2160
1960 NEXT
1970 NEXT
1980 IF nbpaires<25 THEN 2060
1990 FOR i=1 TO 52
2000 IF jeu$(i,4)="" THEN NEXT
2010 c1=i
2020 FOR i=c1+1 TO 52
2030 IF jeu$(i,4)="" THEN NEXT
2040 c2=i
2050 GOTO 2180
2060 RANDOMIZE TIME
2070 c1=1+INT(RND*nbc)
2080 c1=memc(c1)
2090 IF jeu$(c1,4)="" THEN 2060
2100 RANDOMIZE TIME
2110 c2=1+INT(RND*nbc)
2120 c2=memc(c2)
2130 IF jeu$(c2,4)="" THEN 2100
2140 IF c2=c1 THEN 2100
2150 GOTO 2180
2160 c1=mem(i,j)
2170 c2=mem(i+1,j)
2180 PRINT #2,"Appuyez sur enter pour continuer a jouer";
2190 REM *** APPEL DESSINS- MEMOIRE ***
2200 GOSUB 3770
2210 GOSUB 4140
2220 joueur=joueur-(joueur<=nbj)
2230 IF joueur>nbj THEN joueur=1
2240 WEND
2250 REM ***************
2260 REM PARTIE TERMINEE
2270 REM ***************
2280 TAGOFF
2290 REM **********
2300 REM CLASSEMENT
2310 REM **********
2320 CLS
2330 CLS #2
2340 LOCATE 15,3
2350 PRINT "CLASSEMENT"
2360 LOCATE 1,7
2370 FOR i=1 TO nbj
2380 IF score(i)>=score(meilleur) THEN meilleur=i
2390 NEXT
2400 IF meilleur=0 THEN 2480
2410 IF der<>score(meilleur) THEN PEN 2
2420 IF der=0 THEN PEN 3
2430 der=score(meilleur)
2440 PRINT ,joueur$(meilleur),score(meilleur)
2450 score(meilleur)=-1
2460 meilleur=0
2470 GOTO 2370
2480 REM *********************
2490 REM NOUVELLE PARTIE / FIN
2500 REM *********************
2510 der=0
2520 nbpaires=0
2530 CLS #1
2540 PEN #1,0
2550 LOCATE #1,6,2
2560 PRINT #1,"Voulez vous rejouer  (O/N) ?"
2570 IF INKEY(46)=0 THEN NEW
2580 IF INKEY(34)<>0 THEN 2570
2590 CLS#1
2600 PRINT #1,,"1 = Les memes joueurs"
2610 PRINT #1,,"2 = D'autres joueurs"
2620 PRINT #1,,"3 = Revoir les regles"
2630 LOCATE #2,1,2
2640 CALL 47872
2650 INPUT #2,"Votre Choix ";i
2660 i=INT(i)
2670 IF i<1 OR i>3 THEN 2630
2680 MOVE 0,0
2690 FOR j=399 TO 0 STEP -1
2700 MOVE 0,j
2710 DRAWR 639,0,2
2720 NEXT
2730 PAPER#2,2
2740 PAPER 2
2750 IF i=1 THEN GOTO 920
2760 IF i=2 THEN GOSUB 3290:GOTO 920
2770 RUN
2780 REM ***********************
2790 REM *** SOUS PROGRAMMES ***
2800 REM ***********************
2810 REM
2820 REM ******
2830 REM REGLES
2840 REM ******
2850 PAPER #1,2
2860 CLS #1
2870 PEN #1,1
2880 PAPER #2,2:CLS#2
2890 PAPER 2:CLS
2900 REM *** DATA PRESENTATION ***
2910 RESTORE 2920
2920 DATA 132,128,136,128,136,140,132,128,140,140,132,128,140,140,132,128,140,140,128,128,140,140,128,136,140,140
2930 DATA 135,140,139,128,133,128,138,128,133,128,134,128,128,133,128,138,128,128,133,138,128,128,129,138,128,128
2940 DATA 133,128,138,128,135,131,139,128,135,131,132,128,128,133,128,138,131,131,133,138,128,140,132,138,131,129
2950 DATA 133,128,138,128,133,128,138,128,133,128,138,128,140,141,132,138,128,128,133,130,140,140,133,138,140,140
2960 FOR i=0 TO 3
2970 LOCATE #1,8,i+1
2980 FOR  j=1 TO 26
2990 READ k
3000 PRINT #1,CHR$(k);
3010 NEXT
3020 NEXT
3030 EVERY 20 GOSUB 3680 
3040 PEN 0
3050 LOCATE 17,1
3060 PRINT "REGLES"
3070 LOCATE 1,3
3080 PRINT "52 cartes vont etre placees face cachee.";
3090 PRINT"Elles sont numerotees de 1 a 52."
3100 PRINT
3110 PRINT"Il faut que vous trouviez des paires"
3120 PRINT"de cartes (meme valeur,meme couleur)."
3130 PRINT
3140 PRINT"Pour ceci vous devez choisir 2 cartes en";
3150 PRINT"entrant leurs numeros (ex: 2,34 + enter)"
3160 PRINT"Vous avez la possibilite de jouer a 4."
3170 PRINT"L'un de ces 4 joueurs peut etre votre"
3180 PRINT"ordinateur.Celui ci etant capable de"
3190 PRINT"jouer tres bien (force 10) ou assez mal";
3200 PRINT"(force 1)."
3210 PRINT
3220 PRINT"Le joueur qui doit jouer est indique en"
3230 PRINT"rouge."
3240 LOCATE 1,20
3250 PRINT "appuyez sur la barre espace"
3260 CALL 47872
3270 IF INKEY$<>" " THEN 3270
3280 c=REMAIN(0)
3290 REM ******************
3300 REM ENTREE DES JOUEURS
3310 REM ******************
3320 INK 0,26
3330 INK 1,9
3340 CLS #1
3350 PEN #1,0
3360 LOCATE #1,5,1
3370 PRINT #1,"combien de joueurs ? (1 a 4)"
3380 CALL 47872
3390 i$=INKEY$
3400 IF i$<"1"OR i$>"4" THEN 3390
3410 nbj=VAL(i$)
3420 jh=nbj
3430 CLS #1
3440 PEN #2,0
3450 PRINT #2,"voulez vous que le CPC 464 joue ? (O/N)";
3460 choix$=UPPER$(INKEY$)
3470 IF choix$="O" THEN 3490
3480 IF choix$="N" THEN 3550 ELSE 3460
3490 jh=jh-1
3500 joueur$(nbj)="CPC 464"
3510 LOCATE #2,1,2
3520 INPUT #2,"Quelle force (1 a 10) ";f
3530 IF f<1 OR f>10 THEN 3520
3540 f=f/10
3550 FOR i=1 TO jh
3560 LOCATE #2,1,2
3570 PRINT #2,"Joueur No"i;
3580 INPUT #2,joueur$(i)
3590 CALL 47872
3600 IF joueur$(i)="" OR joueur$(i)="CPC 464" THEN 3560
3610 joueur$(i)=LEFT$(joueur$(i),9)
3620 LOCATE #1,10*i-9,1
3630 PRINT #1,joueur$(i)
3640 NEXT
3650 LOCATE #1,10*i-9,1
3660 PRINT #1,joueur$(i)
3670 RETURN
3680 REM ******************
3690 REM CHANGEMENT COULEUR
3700 REM ******************
3710 READ encre
3720 IF encre=2 THEN RESTORE 3760
3730 INK 1,encre
3740 RETURN
3750 REM *** NUMEROS DES COULEURS ***
3760 DATA 18,6,8,2
3770 REM ************************
3780 REM DESSIN CARTES RETOURNEES
3790 REM ************************
3800 y1=INT((c1-1)/13)
3810 x1=c1-y1*13
3820 y1=319-y1*80
3830 x1=(x1-1)*49
3840 x1=x1+1
3850 dec1=-(x1/2<>INT(x1/2))
3860 x1=x1+dec1
3870 co=2-(ASC(jeu$(c1,1))<229)
3880 PLOT x1,y1,co
3890 TAG
3900 PRINT jeu$(c1,1);
3910 PLOT x1,y1-16,co
3920 PRINT jeu$(c1,2);
3930 PLOT x1,y1-32,co
3940 PRINT jeu$(c1,3);
3950 PLOT x1,y1-48,co
3960 PRINT jeu$(c1,4);
3970 y2=INT((c2-1)/13)
3980 x2=c2-y2*13
3990 y2=319-y2*80
4000 x2=(x2-1)*49
4010 x2=x2+1
4020 dec2=-(x2/2<>INT(x2/2))
4030 x2=x2+dec2
4040 co=2-(ASC(jeu$(c2,1))=228 OR ASC(jeu$(c2,1))=227)
4050 PLOT x2,y2,co
4060 PRINT jeu$(c2,1);
4070 PLOT x2,y2-16,co
4080 PRINT jeu$(c2,2);
4090 PLOT x2,y2-32,co
4100 PRINT jeu$(c2,3);
4110 PLOT x2,y2-48,co
4120 PRINT jeu$(c2,4);
4130 IF INKEY(18)=0 OR INKEY(6)=0 THEN RETURN ELSE 4130
4140 REM **********
4150 REM TEST PAIRE
4160 REM **********
4170 IF(ASC(jeu$(c1,1))<229 AND ASC(jeu$(c2,1))>228)OR(ASC(jeu$(c1,1))>228 AND ASC(jeu$(c2,1))<229) THEN 4280
4180 IF ASC(MID$(jeu$(c1,2),2,1))>244 AND ASC(MID$(jeu$(c2,2),2,1))>244 THEN 4200
4190 IF jeu$(c1,2)<>jeu$(c2,2) THEN 4280
4200 REM *** BONNE PAIRE ***
4210 jeu$(c1,4)=""
4220 jeu$(c2,4)=""
4230 score(joueur)=score(joueur)+1
4240 nbpaires=nbpaires+1
4250 encre=1
4260 bonp=1
4270 GOTO 4320
4280 REM *** MAUVAISE PAIRE ***
4290 bonp=0
4300 encre=3
4310 REM *** DESSIN CARTES EFFACEES ***          ***               CACHEES  ***
4320 FOR i=0 TO 3
4330 PLOT x1,y1-i*16,encre
4340 PRINT STRING$(3,CHR$(143));
4350 NEXT
4360 MOVE x1-dec1,y1
4370 DRAWR 0,-64,1
4380 MOVE x1-dec1+49,y1
4390 DRAWR 0,-64,1
4400 FOR i=0 TO 3
4410 PLOT x2,y2-i*16,encre
4420 PRINT STRING$(3,CHR$(143));
4430 NEXT
4440 MOVE x2-dec2,y2
4450 DRAWR 0,-64,1
4460 MOVE x2-dec2+49,y2
4470 DRAWR 0,-64,1
4480 REM ******************************
4490 REM MISE EN MEMOIRE PAR LE CPC 464
4500 REM ******************************
4510 i=c1
4520 RANDOMIZE TIME
4530 IF RND>f AND bonp=0 THEN 4640
4540 c=ASC(jeu$(i,1))-226
4550 v=ASC(MID$(jeu$(i,2),2,1))
4560 IF v<58 THEN v=v-48 ELSE v=v-232
4570 IF v>13 THEN v=13
4580 IF mem(c,v)<>0 THEN 4640
4590 mem(c,v)=i
4600 FOR j=1 TO 52
4610 IF memc(j)<>i THEN NEXT
4620 memc(j)=memc(nbc)
4630 nbc=nbc-1
4640 IF i=c2 THEN RETURN ELSE i=c2:GOTO 4520
4650 REM ******************************
4660 REM CARACTERES CARTES :S P MELANGE
4670 REM ******************************
4680 jeu$(c,1)=CHR$(227+i)+" "+CHR$(227+i)
4690 IF j=14 THEN j=j+i
4700 IF j>10 THEN jeu$(c,2)=CHR$(224+j)+CHR$(231+j)+CHR$(238+j) ELSE jeu$(c,2)=" "+MID$(STR$(j),2,1)+" "
4710 IF j>10 THEN jeu$(c,3)=CHR$(195+j)+CHR$(202+j)+CHR$(209+j) ELSE IF j<10 THEN jeu$(c,3)=" . " ELSE jeu$(c,3)=" 0 "
4720 jeu$(c,4)=CHR$(231+i)+" "+CHR$(231+i)
4730 IF j=11 THEN jeu$(c,1)=LEFT$(jeu$(c,1),1)+CHR$(205)+RIGHT$(jeu$(c,1),1):jeu$(c,4)=LEFT$(jeu$(c,4),1)+CHR$(204)+RIGHT$(jeu$(c,4),1)
4740 RETURN
4750 REM *************************
4760 REM DESSIN PENDANT LE MELANGE
4770 REM *************************
4780 lig=2+INT(RND*14)
4790 col=2+INT(RND*36)
4800 PAPER 0
4810 co=2-(ASC(jeu$(c,1))<229)
4820 PEN co
4830 FOR k=1 TO 4
4840 LOCATE col,lig+k
4850 PRINT jeu$(c,k)
4860 NEXT
4870 RETURN