10 ' ----------------------------------
20 ' ------     PUISSANCE 4      ------
30 ' ----------------------------------
40 ' --  COPYRIGHT   L.G & AMSTRAD  ---
50 ' ----------------------------------
60 MODE 0:INK 1,9:INK 2,27
70 DIM ta%(7,6)
80 BORDER 0:INK 0,0:PAPER 0:PEN 1:LOCATE 5,7:PRINT "PUISSANCE 4"
90 PEN 2:LOCATE 1,14:PRINT"REGLES DU JEU?(O/N)"
100 CALL &BB06
105 IF INKEY$="4" THEN 100
110 IF INKEY(34)<>0 THEN 120 ELSE MODE 1:INK 3,11:PEN 3:GOSUB 660
120 MODE 1:INK 0,0:PAPER 0:INK 2,9:INK 1,6:INK 3,11
130 FOR I=184 TO 632 STEP 64
140 MOVE I,8:DRAW I,395,3
150 NEXT
160 FOR I=8 TO 328 STEP 64
170 MOVE 184,I:DRAW 632,I,3
180 NEXT
190 J=1:PEN 3:LOCATE 1,3:PRINT"JOUEUR"
200 PAPER J:LOCATE 8,3:PRINT" "
210 P=26:PAPER 0
220 LOCATE P,1:PRINTCHR$(241)
230 IF INKEY$<>"" THEN 230
240 IF INKEY$="" THEN 240
250 IF INKEY(1)=0 AND P<38 THEN P=P+4:LOCATE P-4,1:PRINT" ":GOTO 220
260 IF INKEY(8)=0 AND P>14 THEN P=P-4:LOCATE P+4,1:PRINT" ":GOTO 220
270 IF INKEY(9)=0 THEN X=(P-10)/4:IF TA%(X,6)<>1 AND TA%(X,6)<>2 THEN LOCATE P,1:PRINT" ":GOTO 290
280 GOTO 230
290 FOR Y=1 TO 6
300 IF TA%(X,Y)=0 THEN TA%(X,Y)=J:GOTO 320
310 NEXT
320 FOR I=-1 TO 1
330 PAPER J:LOCATE P+I,25-(Y*4)+1:PRINT" "
340 LOCATE P+I,25-(Y*4)+2:PRINT" "
350 LOCATE P+I,25-(Y*4)+3:PRINT" "
360 NEXT
370 '-------- RECHERCHE DES ALIGNEMENTS
380 FOR X=1 TO 7
390 FOR Y=4 TO 6
400 IF TA%(X,Y)=J AND TA%(X,Y-1)=J AND TA%(X,Y-2)=J AND TA%(X,Y-3)=J THEN GOSUB 560
410 NEXT:NEXT
420 FOR Y=1 TO 6
430 FOR X=4 TO 7
440 IF TA%(X,Y)=J AND TA%(X-1,Y)=J AND TA%(X-2,Y)=J AND TA%(X-3,Y)=J THEN GOSUB 560
450 NEXT:NEXT
460 FOR X=1 TO 4
470 FOR Y=1 TO 3
480 IF TA%(X,Y)=J AND TA%(X+1,Y+1)=J AND TA%(X+2,Y+2)=J AND TA%(X+3,Y+3)=J THEN GOSUB 560
490 NEXT:NEXT
500 FOR X=4 TO 7
510 FOR Y=1 TO 3
520 IF TA%(X,Y)=J AND TA%(X-1,Y+1)=J AND TA%(X-2,Y+2)=J AND TA%(X-3,Y+3)=J THEN GOSUB 560
530 NEXT:NEXT
540 IF J=1 THEN J=2 ELSE J=1
550 GOTO 200
560 '-------------FIN DE PARTIE
570 PAPER 0:LOCATE 1,3:PRINT"LE JOUEUR ";:PAPER J:PRINT" ":PAPER 0:PRINT"A GAGNE!!"
580 LOCATE 1,8:PRINT"UNE AUTRE ?"
590 LOCATE 2,9:PRINT"(O ou N)"
600 IF INKEY$<>"" THEN 600
610 GOSUB 900
620 IF INKEY$="" THEN 620
630 IF INKEY(46)<>0 AND INKEY(34)<>0 THEN 600
640 IF INKEY(46)=0 THEN MODE 1:INK 1,24:INK 0,1:PAPER 0:PEN 1:BORDER 1:END ELSE WHILE INKEY$<>"":WEND:RUN
650 '--------------------------------
660 ' REGLES DU JEU (il n'est pas obligatoire de taper les regles du jeu,vous pouvez simplement les lire.Cependant,supprimez alors les lignes 90 et 110)
670 '--------------------------------
680 GOTO 750
690 '--ECRITURE
700 PEN 1:LOCATE 13,1:PRINT"REGLES DU JEU"
710 FOR E=1 TO LEN(M$)
720 LOCATE E,A:PEN 3:PRINT MID$(M$,E,1)
730 NEXT
740 RETURN
750 A=2
760 M$=" ":A=A+1:GOSUB 690
770  M$="   Tel le jeu PUISSANCE 4,le but  du":A=A+1:GOSUB 690 
780  M$="jeu est de parvenir a aligner HORIZ-":A=A+1:GOSUB 690  
790  M$="ONTALENT , VERTICALEMENT ou DIAGONA-":A=A+1:GOSUB 690
800  M$="LEMENT  4  carres":A=A+1:GOSUB 690
810  M$="Pour cela chacun des 2 adversaires a":A=A+1:GOSUB 690
820  M$="son tour place un carre dans une co-":A=A+1:GOSUB 690
830  M$="lonne .Pour ceci il doit s'aider des":A=A+1:GOSUB 690
840  M$="touches  de  deplacement du  curseur":A=A+1:GOSUB 690 
850  M$="puis de la touche copy lorsqu'il est":A=A+1:GOSUB 690
860  M$="face a la colonne choisie":A=A+1:GOSUB 690
870 A=A+2
880  M$="MAIS LE PLUS SIMPLE EST D'ESSAYER !":A=A+1:GOSUB 690
890 CALL &BB06:RETURN
900 '   ------------------------------
910 '   -- 9' SYMPHONIE (Beethoven) --
920 '   ------------------------------
930 DUREE=30:RESTORE 940
940 DATA 127,1,127,1,119,1,106,1,106,1,119,1,127,1,142,1,159,1,159,1,142,1,127,1
950 DATA 127,1.5,142,0.5,142,2
960 DATA 127,1,127,1,119,1,106,1,106,1,119,1,127,1,142,1,159,1,159,1,142,1,127,1
970 DATA 142,1.5,159,0.5,159,2
980 DATA 142,1,142,1,127,1,159,1,142,1,127,0.5,119,0.5,127,1,159,1,142,1,127,0.5,119,0.5,127,1,142,1,159,1,142,1,213,1,127,1,127,1,127,1,119,1,106,1,106,1,119,1,127,1,142,1,159,1,159,1,142,1,127,1,142,1.5,159,0.5,159,2
990 FOR I=1 TO 63
1000 READ A,B:SOUND 1,A,B*DUREE,15:SOUND 1,1,1,0
1010 IF INKEY(46)=0 OR INKEY(34)=0 THEN RETURN
1020 NEXT
1030 RETURN