3 'PROG :       PUISSANCE   4
5 'Pour AMSTRAD CPC 464
7 'AUTEUR :Walschaerts William FEVRIER 1985
13 '
15 'INITIALISATION
17 CLEAR:ON BREAK GOSUB 279
19 SYMBOL AFTER 91:DEFINT A-D,F-Z
21 SYMBOL 93,24,24,24,24,24,24,24,24:SYMBOL 95,0,0,0,255,255,0,0,0:SYMBOL 252,24,24,36,36,66,90,161,161:SYMBOL 253,161,153,66,66,36,36,24,24:SYMBOL 254,126,126,129,129,129,157,137,137:SYMBOL 255,137,137,169,145,129,129,126,126
23 SYMBOL 91,24,24,24,255,255,24,24,24:DIM A(200)
24 INK 0,1
25 DATA 119,106,95,89,80,71
31 ' BOUCLE PRINCIPALE
35 '
37 ' PRESENTATION
39 SCP=0:SJO=0:BORDER 0:MODE 1:PAPER 0:PEN 3:PRINT"        **  PUISSANCE  **":PRINT:INK 3,6,24:FOR I=100 TO 120 STEP 1.5:ORIGIN I+55,200:DRAW I,110:NEXT:FOR I=200 TO 205:ORIGIN 170,I:DRAW 130,0:NEXT I
41 FOR I=250 TO 255:ORIGIN I,220:DRAW -15,-30:NEXT
43 PEN 1:LOCATE 4,23:PRINT"----------------------------------------";:LOCATE 4,25:PRINT"Copyright ";CHR$(164);" Walschaerts. W. FEV 85";
45 LOCATE 2,14:PRINT STRING$(40,210);:PRINT"  Appuyez sur ";:PEN 3:PRINT"<ENTER>";:PEN 1:PRINT" Pour commencer.":PRINT STRING$(40,208)
47 GOSUB 299
49 ENV 1,100,3,1:ENT 1,100,2,2:A=0
51 IF A=0 THEN A=120:SOUND 1,200,110,1,1,1 ELSE A=A-1
53 R$=INKEY$:IF R$="" OR R$>=" " THEN 51
55 ' ENTREE PARAMETRES JEUX
57 INK 3,1:CLS:B$="":LOCATE 1,10:PRINT"QUEL EST VOTRE PRENOM ??":LOCATE 13,12:PRINT CHR$(143):LOCATE 1,12:GR=140
59 R$=INKEY$:GR=GR XOR 15:PRINT CHR$(GR);CHR$(8);:IF R$="" THEN 59
61 R$=UPPER$(R$):IF (R$<" " AND ASC(R$)<>13) THEN 59 ELSE IF ASC(R$)=13 THEN 65 ELSE IF (R$>"Z" AND ASC(R$)<>127) THEN 59 ELSE IF ASC(R$)=127 AND LEN(B$)>0 THEN B$=LEFT$(B$,LEN(B$)-1):PRINT CHR$(8);"  ";CHR$(8);CHR$(8);:GOTO 59
63 IF LEN(B$)>10 THEN PRINT CHR$(7);:GOTO 59 ELSE B$=B$+R$:PRINT RIGHT$(B$,1);:GOTO 59
65 CLS:BORDER 0:INK 3,1:PAPER 3:CLS:LOCATE 1,5:PRINT"> VOICI MES PIONS :  ";CHR$(252):PRINT TAB(22);CHR$(253):PRINT:PRINT"> VOICI LES VOTRES : ";CHR$(254):PRINT TAB(22);CHR$(255)
67 PRINT:PRINT STRING$(40,210):E=0:PRINT"** NIVEAU (1 a 3)":PEN 1:PRINT:PRINT"   1   Jeu modere":PRINT"   2   Jeu defensif":PRINT"   3   Jeu d'attaque":PRINT:PRINT STRING$(40,210)
69 PRINT"SCORE :         CPC    ù  ";B$:PRINT TAB(18);SCP;TAB(24);"ù";TAB(30);SJO
71 A$=INKEY$:IF A$="" OR A$<"1" OR A$>"3" THEN 71 ELSE E=VAL(A$):IF E=3 THEN E=0.5
73 INK 3,6
75 MODE 0:INK 15,9:PAPER 15 :WINDOW #1,1,20,22,25:PAPER #1,5:BORDER 15
77 '
79 '               CADRE
81 '
83 CLS:CLS #1:PEN 0:FOR N=1 TO 18 STEP 3:LOCATE 2,N:PRINT" [-[-[-[-[-[-[-[ ";:FOR I=1 TO 2:PRINT"  ] ] ] ] ] ] ] ] ";:NEXT I,N
85 FOR I=1 TO 2:PRINT"-----------------":NEXT I:PRINT TAB(4);"1 2 3 4 5 6 7"
87 Q=42:G=0
89 FOR J=1 TO 7:A(J+90)=6:NEXT J:FOR I=1 TO 6:A(I+100)=7:NEXT I
91 FOR I=1 TO 6:FOR J=1 TO 7:A(I*9+J)=-1:NEXT J,I
93 FOR I=0 TO 7:A(I*9)=-2:A(I*9+8)=-2:NEXT I:FOR J=0 TO 8:A(J)=-2:A(63+J)=-2:NEXT J
95 IF FLG=0 THEN ZJ2=INT(RND*2):IF ZJ2>1 THEN 95
97 IF FLG=0 THEN FLG=1 ELSE ZJ2=(ZJ2=1)+1
99 IF ZJ2=1 THEN Z=1:GOTO 103 ELSE IF Z=0 THEN Z=2:GOTO 101
101 J=4:GOTO 119
103 CLS #1:PRINT#1,"En quelle colonne   jouez vous ? ";:GOSUB 299
105 R$=INKEY$:IF R$="" OR R$<"1" OR R$>"7" THEN 105 ELSE J=VAL(R$)
107 IF A(J+90)=0 THEN 103
109 CLS #1
111 A=J
113 Z=1:GOSUB 147
115 IF G=1 THEN PRINT#1,"       BRAVO    !    VOUS AVEZ GAGNE !!":GOSUB 285:SJO=SJO+1:GOTO 127
117 GOSUB 165
119 Z=0:GOSUB 147
121 IF G=1 THEN PRINT#1,"    AH AH AH    !!  J'AI GAGNE LA PARTIE":GOSUB 285:FOR J=1 TO 200:NEXT J:SCP=SCP+1:PRINT#1,"Je vous donne votre revanche, OK ...?":GOTO 129
123 IF Q<>0 THEN 103
125 PRINT#1,"    BIEN JOUE  !!        NOUS SOMMES A    EGALITE...":ENT 1,20,3,5:FOR J=1 TO 4:SOUND 1,5,0,50,10,0,1:NEXT J:FOR J=1 TO 2000:NEXT J
127 PRINT#1,"UNE AUTRE PARTIE ???"
129 R$=INKEY$:IF R$="" OR (UPPER$(R$)<>"O" AND UPPER$(R$)<>"N") THEN 129
131 MODE 1:IF UPPER$(R$)="O" THEN GOTO 65
133 GOTO 39
135 RESTORE:FOR NUL=1 TO I:K=(2*J)+2:L=(NUL*2)+(NUL-1)
137 LOCATE K,L:IF Z=0 THEN INK 14,3:PEN 14:PRINT CHR$(252);:LOCATE K,L+1:PRINT CHR$(253);:GOTO 141
139 INK 8,5:PEN 8:PRINT CHR$(254);:LOCATE K,L+1:PRINT CHR$(255);:GOTO 141
141 '
143 READ MUS:SOUND 1,MUS,10:FOR XY=1 TO 150:NEXT XY:IF NUL<I THEN LOCATE K,L:PRINT" ";:LOCATE K,L+1:PRINT" ";
145 NEXT NUL:RETURN
147 '             DEBUT CALCULS
149 I=A(J+90):GOSUB 135:A(A(J+90)*9+J)=Z:'  AFFICHAGE DU PION
151 R=A(J+90):S=J
153 A(A(J+90)+100)=A(A(J+90)+100)-1:A(J+90)=A(J+90)-1
155 Q=Q-1
157 IF Z=0 THEN RETURN
159 '
161 M=0:O=0:N=4:GOSUB 237:IF D=0 THEN G=0:RETURN
163 G=1:RETURN
165 N=4:S=1:O=2:M=45
167 R=A(S+90):IF R=0 THEN 175
169 A(R*9+S)=0:GOSUB 237
171 IF D=0 THEN A(R*9+S)=-1:GOTO 175
173 J=S:G=1:RETURN
175 S=S+1:IF S<8 THEN 167
177 n=4:s=1
179 R=A(S+90):IF R=0 THEN 187
181 A(R*9+S)=1:GOSUB 237
183 IF D=0 THEN A(R*9+S)=-1:GOTO 187
185 J=S:G=0:RETURN
187 S=S+1:IF S<8 THEN 179
189 FOR J=111 TO 117:A(J)=0:NEXT J
191 N=3:S=1
193 R=A(S+90):IF R=0 THEN 199
195 A(R*9+S)=0:GOSUB 237
197 A(S+110)=D/E:A(R*9+S)=-1
199 S=S+1:IF S<8 THEN 193
201 N=3:S=1
203 R=A(S+90):IF R=0 THEN 209
205 A(R*9+S)=1:GOSUB 237
207 A(S+110)=A(S+110)+D*E:A(R*9+S)=-1
209 S=S+1:IF S<8 THEN 203
211 N=3:S=1
213 R=A(S+90):IF R<2 THEN 223
215 A(R*9+S)=0:R=R-1:A(R*9+S)=1:GOSUB 237
217 IF D=0 THEN 221
219 A(S+110)=-D
221 A(R*9+S)=-1:R=R+1:A(R*9+S)=-1
223 S=S+1:IF S<8 THEN 213
225 K=-50:L=0:FOR J=111 TO 117:IF A(J)>K THEN K=A(J):L=J-110
227 NEXT J
229 IF A(L+90)=0 THEN A(L+110)=-60:GOTO 225
231 J=INT(RND*7)+1:IF A(J+90)=0 THEN 231
233 IF A(J+110)=K THEN RETURN
235 J=L:RETURN
237 Z=A(R*9+S)
239 IF A(S+90)>=5 THEN D=0:GOTO 249
241 I=R+1:J=S:P=1
243 IF A(I*9+J)=Z THEN P=P+1:I=I+1:GOTO 243
245 IF P<N THEN D=0:GOTO 249
247 D=1
249 IF A(R+100)>=6 THEN 263
251 I=R:V=1
253 J=V+S:P=1
255 IF A(I*9+J)=Z THEN P=P+1:J=J+V:GOTO 255
257 IF V<>-1 THEN V=-1:U=P:GOTO 253
259 P=P+U-1:IF P<N THEN 263
261 D=D+1
263 V=1:W=1
265 I=R+W:J=S+V:P=1
267 IF A(I*9+J)=Z THEN P=P+1:J=J+V:I=I+W:GOTO 267
269 IF V<>-1 THEN V=-1:W=-W:U=P:GOTO 265
271 P=P+U-1:IF P<N THEN 275
273 D=D+1
275 IF W<>1 THEN V=1:GOTO 265
277 RETURN
279 'RESTORE MODE 2.
281 '
283 MODE 2:PAPER 0:PEN 1:BORDER 0:GOTO 307
285 '
287 ' MUSIQUE  FIN
289 '
291 RESTORE 291:DATA 478,426,379,358,319,284,0,284,0,284,0,284,358,0,358,239,239,239,0,239,284,-1
293 READ MU:IF MU=-1 THEN 297 ELSE SOUND 1,MU,10,12:FOR I=1 TO 70:NEXT I
295 GOTO 293
297 RESTORE 291:RETURN
299 FOR I=1 TO 20:R$=INKEY$:NEXT I:RETURN
301 '
303 'SORTIE PROG
305 '
307 ON BREAK STOP:END