10 '*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
20 '*                               *
30 '*      LE ROUGE ET LE NOIR      *
40 '*     ( ==> Ecran couleur )     *
50 '*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
60 INK 0,25:INK 1,1:INK 2,0:INK 3,6
70 PAPER 0:PEN 1
80 MODE 1
90 RESTORE 220
100 '
110 '----CHOIX DE LA COMBINAISON
120 '
130 CLS:LOCATE 1,3:PRINT "ENTREZ UN NOMBRE DE 1 A 7:"
140 LOCATE 29,3
150 NB1$=INKEY$:IF NB1$="" THEN 150
160 IF NB1$<"1" OR NB1$>"7" THEN 190
170 PRINT NB1$
180 FOR Z=2 TO VAL(NB1$):FOR Y=1 TO 9:READ A:NEXT Y:NEXT Z
190 FOR I=1 TO 9
200 READ A:P(I)=A:S(I)=ABS(A-1)
210 NEXT I
220 DATA 1,1,1,1,0,1,1,1,1
230 DATA 0,0,0,0,1,0,0,0,0
240 DATA 0,1,0,0,0,1,1,1,0
250 DATA 0,1,0,0,1,0,1,0,1
260 DATA 0,1,1,0,1,0,0,1,1
270 DATA 0,1,0,0,1,1,0,1,0
280 DATA 0,1,1,1,0,0,0,1,1
290 DATA 0,0,1,0,1,1,0,0,1
300 CLS:GOSUB 1260
310 GOSUB 1280
320 XX=30:INV=1:GOSUB 1380
330 '-----------------------
340 '----NOMBRE DE COUPS----
350 '-----------------------
360 LOCATE 31,15:PRINT "Nombre"
370 LOCATE 30,16:PRINT "de coups"
380 LOCATE 34,17:PRINT "0"
390 XX=5:INV=0:GOSUB 1380
400 '-----------------------
410 '----PAVES IDENTIQUES
420 '-----------------------
430 FOR X=1 TO 9
440 IF S(X)<>P(X) THEN 510 ELSE 450
450 NEXT X
460 LOCATE 5,5:PRINT "BRAVO C'EST TRES BIEN"
470 A=0:GOTO 650
480 '----------------------------------
490 '----RESTE-T'IL DES CASES NOIRES ?-
500 '----------------------------------
510 FOR X=1 TO 9
520 IF P(X)<>1 THEN 570
530 NEXT X
540 LOCATE 5,5:PRINT "MAL JOUE VOUS VOUS ETES BLOQUE"
550 A=0:GOTO 650
560 '-----------------------
570 '----CASE A MODIFIER----
580 '-----------------------
590 LOCATE 5,1:PRINT "Entrez le numero de la case"
600 LOCATE 10,2:PRINT "ou 0 pour arreter"
610 A$=INKEY$:IF A$="" THEN 610
620 IF A$<"0" OR A$>"9" THEN 610
630 A=VAL(A$)
640 '-------------------
650 '----FIN DU JEU ----
660 '-------------------
670 IF A=0 THEN 680 ELSE 710
680 FOR I=1 TO 2000:NEXT I
690 INK 0,1:INK 1,24:CLS:END
700 '------------------
710 '---- CONTROLE ----
720 '------------------
730 IF P(A)<> 1 THEN 780
740 PRINT CHR$(7);
750 LOCATE 1,4:PRINT "Coup interdit,la case doit etre noire"
760 FOR I=1 TO 500:NEXT I
770 LOCATE 1,4:PRINT STRING$(37," "):GOTO 590
780 COUP=COUP+1:LOCATE 33,17:PRINT COUP
790 ON A GOSUB 840,890,930,980,1020,1080,1120,1170,1210
800 GOTO 390
810 '------------------------------
820 '----MODIFICATIQN DES CASES----
830 '------------------------------
840 P(1)=1
850 P(2)=ABS(P(2)-1)
860 P(4)=ABS(P(4)-1)
870 P(5)=ABS(P(5)-1)
880 RETURN
890 P(2)=1
900 P(1)=ABS(P(1)-1)
910 P(3)=ABS(P(3)-1)
920 RETURN
930 P(3)=1
940 P(2)=ABS(P(2)-1)
950 P(5)=ABS(P(5)-1)
960 P(6)=ABS(P(6)-1)
970 RETURN
980 P(4)=1
990 P(1)=ABS(P(1)-1)
1000 P(7)=ABS(P(7)-1)
1016 RETURN
1020 P(5)=1
1030 P(2)=ABS(P(2)-1)
1040 P(4)=ABS(P(4)-1)
1050 P(6)=ABS(P(6)-1)
1060 P(8)=ABS(P(8)-1)
1070 RETURN
1080 P(6)=1
1090 P(3)=ABS(P(3)-1)
1100 P(9)=ABS(P(9)-1)
1110 RETURN
1120 P(7)=1
1130 P(4)=ABS(P(4)-1)
1140 P(5)=ABS(P(5)-1)
1150 P(8)=ABS(P(8)-1)
1160 RETURN
1170 P(8)=1
1180 P(7)=ABS(P(7)-1)
1190 P(9)=ABS(P(9)-1)
1200 RETURN
1210 P(9)=1
1220 P(5)=ABS(P(5)-1)
1230 P(6)=ABS(P(6)-1)
1240 P(8)=ABS(P(8)-1)
1250 RETURN
1260 GOSUB 1280:XX=5:INV=0:GOSUB 1380:XX=30:INV=1:GOSUB 1380:GOTO 1510
1270 '----------------------
1280 '----PAVE NUMERIQUE----
1290 '----------------------
1300 FOR I=1 TO 3
1310 LOCATE 15,(I+1)*2+4
1320 FOR J=1 TO 3
1330 PRINT (I-1)*3+J;
1340 NEXT J
1350 NEXT I
1360 RETURN
1370 '------------------------
1380 '----PAVE DE COULEURS----
1390 '------------------------
1400 FOR I=1 TO 3
1410 LOCATE XX,(I+1)*2+4
1420 FOR J=1 TO 3
1430 IF INV=0 THEN IF P(J+(I-1)*3)=0 THEN PEN 2 ELSE PEN 3
1440 IF INV=1 THEN IF P(J+(I-1)*3)=0 THEN PEN 3 ELSE PEN 2
1450 PRINT CHR$(143);" ";
1460 NEXT J
1470 NEXT I
1480 PEN 1
1490 RETURN
1500 '--------------------
1510 '----REGLE DU JEU----
1520 '--------------------
1530 LOCATE 1,1:PRINT "Vous devez,en inversant les couleurs"
1540 PRINT "de la representation de gauche obtenir  celle a droite de l'ecran"
1550 PRINT "en respectant les regles suivantes :"
1560 LOCATE 1,17:PRINT "Appuyez sur une touche pour explications"
1570 A$=INKEY$:IF A$="" THEN 1570
1580 CLS:PRINT "La case a inverser devra toujours etre"
1590 PRINT "noire, mais ATTENTION selon sa position,";
1600 PRINT "l'inversion de couleur influera sur les cases adjacentes : "
1610 PRINT:PRINT "Si vous modifiez la couleur d'une case :"
1620 PRINT:PRINT "Centrale 5, la couleur des cases 2-4-6-8 sera aussi inversee."
1630 PRINT:PRINT "D'angle 1,3,7,9 , la couleur des cases"
1640 PRINT "contigues sera aussi inversee."
1650 PRINT:PRINT "ex : pour inversion case 1, les cases 2,  4,5 sont aussi inversees."
1660 PRINT:PRINT "De milieu 2,4,6,8 la couleur des cases  de la meme ligne ou colonne est inversee"
1670 PRINT "ex : pour inversion de case 2, les cases  1,3 sont aussi inversees."
1680 PRINT:PRINT:PRINT "Appuyez sur une touche pour commencer."
1690 A$=INKEY$:IF A$="" THEN 1690
1700 CLS:RETURN