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 |