1 REM CHASSE A L'HOMME / AMSTRAD CPC 464-664-6128 / OLIVIER RICHE / AVRIL 1987
2 DEFINT A-Z:SYMBOL AFTER 243:SYMBOL 255,0,0,0,0,8,16,0,0:SYMBOL 254,0,0,0,0,0,16,8,4:DIM LAB(25,20):DIM LAB2(25,20):DIM MAZ(11):FOR L=0 TO 20:FOR C=0 TO 25:READ LAB(C,L):LAB2(C,L)=LAB(C,L):NEXT C:NEXT L:SYMBOL 252,15,60,60,15,0,60,15,0
3 SYMBOL 244,0,7,24,32,32,64,64,64:SYMBOL 245,0,224,24,4,4,2,2,2:SYMBOL 246,2,2,2,4,4,24,224,0:SYMBOL 247,64,64,64,32,32,24,7,0 :SYMBOL 253,240,60,0,240,60,60,240,0:MAJ$=CHR$(252)+CHR$(253):B$=CHR$(244)+CHR$(245):C$=CHR$(247)+CHR$(246)
4 MODE 2:INK 1,26:INK 0,0:BORDER 0:PAPER 0:PEN 1:FOR C=2 TO 31:LOCATE C,1:PRINT CHR$(143):LOCATE C,16:PRINT CHR$(143):NEXT:FOR L=1 TO 16:LOCATE 2,L:PRINT CHR$(143):LOCATE 31,L:PRINT CHR$(143):NEXT
5 FOR C=50 TO 79:LOCATE C,1:PRINT CHR$(143):LOCATE C,16:PRINT CHR$(143):NEXT:FOR L=1 TO 16:LOCATE 50,L:PRINT CHR$(143):LOCATE 79,L:PRINT CHR$(143):NEXT
6 WINDOW 36,45,3,9:PAPER 1:PEN 0:CLS
7 LOCATE 3,2:PRINT "CHASSE":LOCATE 6,4:PRINT "a":LOCATE 3,6:PRINT "l'HOMME":WINDOW 1,80,1,25:FOR C=35 TO 46:LOCATE C,2:PRINT CHR$(207):LOCATE C,10:PRINT CHR$(207):NEXT C:FOR L=2 TO 10:LOCATE 35,L:PRINT CHR$(207):LOCATE 46,L:PRINT CHR$(207):NEXT L
8 LOCATE 41,5:PRINT CHR$(254):TIR=0:DIRECTION=0
9 PAPER 0:PEN 1:LOCATE 35,12:PRINT "Olivier RICHE":LOCATE 47,11:PRINT CHR$(255):LOCATE 39,14:PRINT "1987":LOCATE 11,1:PAPER 1:PEN 0:PRINT " PRISONNIER ":LOCATE 60,1:PRINT " CHASSEUR ":PAPER 0:PEN 1
10 FOR F=1 TO INT(RND*10)+1:NEXT F:PROUT=INT(RND*3)+1:ON PROUT GOTO 13,15,11
11 C1=INT(RND*24)+1:L1=INT(RND*19)+1:IF LAB(C1,L1)=1 THEN 11 ELSE LAB2(1,0)=5:C5=1:L5=0:DIREC=1:LAB2(C1,L1)=3:GOTO 12
12 C2=INT(RND*24)+1:L2=INT(RND*19)+1:IF LAB(C2,L2)=1 OR LAB2(C2,L2)=3 OR C2-1+L2<25 THEN 12 ELSE LAB2(C2,L2)=4:GOTO 17
13 C1=INT(RND*24)+1:L1=INT(RND*19)+1:IF LAB(C1,L1)=1 THEN 13 ELSE LAB2(9,13)=5:C5=9:L5=13:DIREC=3:LAB2(C1,L1)=3:GOTO 14
14 C2=INT(RND*24)+1:L2=INT(RND*19)+1:IF LAB(C2,L2)=1 OR LAB2(C2,L2)=3 OR ABS(C2-9)+ABS(L2-13)<25 THEN 14 ELSE LAB2(C2,L2)=4:GOTO 17
15 C1=INT(RND*24)+1:L1=INT(RND*19)+1:IF LAB(C1,L1)=1 THEN 15 ELSE LAB2(14,16)=5:C5=14:L5=16:DIREC=3:LAB2(C1,L1)=3:GOTO 16
16 C2=INT(RND*6)+19:L2=INT(RND*13)+1:IF LAB(C2,L2)=1 OR LAB2(C2,L2)=3 OR ABS(C2-14)+ABS(L2-16)<25 THEN 16 ELSE LAB2(C2,L2)=4:GOTO 17
17 DIR1=INT(RND*4)+1:PERS=1:C=C1:L=L1:DIR=DIR1:GOSUB 31:DIR2=INT(RND*4)+1:PERS=2:C=C2:L=L2:DIR=DIR2:GOSUB 31:LOCATE 1,19:PRINT "1 : PRISONNIER > JOYSTICK  et  CHASSEUR > CLAVIER":LOCATE 1,21:PRINT "2 : PRISONNIER et CHASSEUR > CLAVIER"
18 IF INKEY(13)=0 OR INKEY(64)=0 THEN CLAV=0:H2=72:D2=75:G2=74:H1=0:D1=1:G1=8:T1=6:GOTO 19 ELSE IF INKEY(14)=0 OR INKEY(65)=0 THEN CLAV=1:H2=58:G2=60:D2=53:H1=0:D1=1:G1=8:T1=6:GOTO 19 ELSE 18
19 LOCATE 1,19:PRINT STRING$(60," "):LOCATE 1,21:PRINT STRING$(60," "):LOCATE 3,18:PRINT "DISTANCE DE LA SORTIE:    PAS":LOCATE 50,18:PRINT "DISTANCE DU PRISONNIER:    PAS":GOSUB 359:GOSUB 360:A$="DIRECTION SUIVIE:":LOCATE 5,20:PRINT A$:LOCATE 53,20
20 PRINT A$:ON DIR2 GOTO 21,22,23,24
21 LOCATE 23,20:PRINT "NORD  ":GOTO 25
22 LOCATE 23,20:PRINT "EST   ":GOTO 25
23 LOCATE 23,20:PRINT "SUD   ":GOTO 25
24 LOCATE 23,20:PRINT "OUEST "
25 ON DIR1 GOTO 26,27,28,29
26 LOCATE 71,20:PRINT "NORD  ":GOTO 30
27 LOCATE 71,20:PRINT "EST   ":GOTO 30
28 LOCATE 71,20:PRINT "SUD   ":GOTO 30
29 LOCATE 71,20:PRINT "OUEST "
30 GOTO 139
31 REM 
32 REM        REPRESENTATION  3D
33 REM 
34 ON DIR GOTO 35,38,40,42
35 MAZ(1)=LAB(C-1,L):MAZ(2)=LAB(C+1,L):MAZ(3)=LAB(C-1,L-1):MAZ(4)=LAB(C,L-1):MAZ(5)=LAB(C+1,L-1)
36 IF L=1 THEN 44 ELSE MAZ(6)=LAB(C-1,L-2):MAZ(7)=LAB(C,L-2):MAZ(8)=LAB(C+1,L-2)  
37 IF L=2 THEN 44 ELSE MAZ(9)=LAB(C-1,L-3):MAZ(10)=LAB(C,L-3):MAZ(11)=LAB(C+1,L-3):GOTO 44
38 MAZ(1)=LAB(C,L-1):MAZ(2)=LAB(C,L+1):MAZ(3)=LAB(C+1,L-1):MAZ(4)=LAB(C+1,L):MAZ(5)=LAB(C+1,L+1):IF C=24 THEN 44 ELSE MAZ(6)=LAB(C+2,L-1):MAZ(7)=LAB(C+2,L):MAZ(8)=LAB(C+2,L+1) 
39 IF C=23 THEN 44 ELSE MAZ(9)=LAB(C+3,L-1):MAZ(10)=LAB(C+3,L):MAZ(11)=LAB(C+3,L+1):GOTO 44
40 MAZ(1)=LAB(C+1,L):MAZ(2)=LAB(C-1,L):MAZ(3)=LAB(C+1,L+1):MAZ(4)=LAB(C,L+1):MAZ(5)=LAB(C-1,L+1):IF L=19 THEN 44 ELSE MAZ(6)=LAB(C+1,L+2):MAZ(7)=LAB(C,L+2):MAZ(8)=LAB(C-1,L+2)
41 IF L=18 THEN 44 ELSE MAZ(9)=LAB(C+1,L+3):MAZ(10)=LAB(C,L+3):MAZ(11)=LAB(C-1,L+3):GOTO 44
42 MAZ(1)=LAB(C,L+1):MAZ(2)=LAB(C,L-1):MAZ(3)=LAB(C-1,L+1):MAZ(4)=LAB(C-1,L):MAZ(5)=LAB(C-1,L-1):IF C=1 THEN 44 ELSE MAZ(6)=LAB(C-2,L+1):MAZ(7)=LAB(C-2,L):MAZ(8)=LAB(C-2,L-1)
43 IF C=2 THEN 44 ELSE MAZ(9)=LAB(C-3,L+1):MAZ(10)=LAB(C-3,L):MAZ(11)=LAB(C-3,L-1) 
44 IF PERS=2 THEN ORIGIN 16,160:WINDOW 3,30,2,15:CLS:WINDOW 1,80,1,25 ELSE ORIGIN 400,160:WINDOW 51,78,2,15:CLS:WINDOW 1,80,1,25
45 IF MAZ(1)=1 THEN 46 ELSE GOTO 64
46 GOSUB 70:IF MAZ(4)=1 THEN 47 ELSE GOTO 48
47 GOSUB 113:IF MAZ(2)=1 THEN GOSUB 73:RETURN ELSE GOSUB 119:RETURN
48 IF MAZ(2)=1 THEN GOSUB 73:GOTO 49 ELSE GOSUB 86:GOTO 50
49 IF MAZ(5)=1 THEN GOSUB 83:GOTO 50 ELSE GOTO 51
50 IF MAZ(3)=1 THEN GOSUB 77:GOTO 52 ELSE GOTO 53
51 IF MAZ(3)=1 THEN GOSUB 77:GOTO 55 ELSE GOTO 56
52 IF MAZ(7)=1 THEN GOSUB 125:RETURN ELSE GOTO 54
53 IF MAZ(7)=1 THEN GOSUB 125:GOSUB 122:RETURN ELSE GOSUB 92:GOTO 58
54 IF MAZ(6)=1 THEN GOSUB 89:GOTO 58 ELSE GOTO 57
55 IF MAZ(7)=1 THEN GOSUB 128:GOSUB 125:RETURN ELSE GOSUB 98:GOTO 59
56 IF MAZ(7)=1 THEN GOSUB 122:GOSUB 125:GOSUB 128:RETURN ELSE GOSUB 92:GOSUB 98:GOTO 60
57 IF MAZ(8)=1 THEN GOSUB 95:GOTO 61 ELSE GOTO 62
58 IF MAZ(8)=1 THEN GOSUB 95:GOTO 60 ELSE GOTO 63
59 IF MAZ(6)=1 THEN GOSUB 89:GOTO 60 ELSE GOTO 61
60 IF MAZ(10)=1 THEN GOSUB 134:RETURN ELSE GOSUB 107:GOSUB 101:RETURN
61 IF MAZ(10)=1 THEN GOSUB 134:GOSUB 131:RETURN ELSE GOSUB 104:GOSUB 107:RETURN
62 IF MAZ(10)=1 THEN GOSUB 131:GOSUB 134:GOSUB 137:RETURN ELSE GOSUB 104:GOSUB 110:RETURN
63 IF MAZ(10)=1 THEN GOSUB 134:GOSUB 137:RETURN ELSE GOSUB 110:GOSUB 101:RETURN
64 IF MAZ(2)=1 THEN GOSUB 73:GOTO 65 ELSE GOTO 66
65 IF MAZ(4)=1 THEN GOSUB 116:GOSUB 113:RETURN ELSE GOTO 67
66 IF MAZ(4)=1 THEN GOSUB 113:GOSUB 116:GOSUB 119:RETURN ELSE GOSUB 80:GOSUB 86:GOTO 52
67 IF MAZ(3)=1 THEN GOSUB 80:GOTO 68 ELSE GOTO 55
68 IF MAZ(5)=1 THEN GOSUB 83:GOTO 52 ELSE GOTO 55
69 REM
70 REM DALLE 1
71 PLOT 0,180:DRAW 38,144:DRAW 38,28:DRAW 0,0
72 RETURN
73 REM DALLE 2
74 PLOT 223,180:DRAW 185,144:DRAW 185,28:DRAW 223,0
75 RETURN
76 REM DALLE 3
77 PLOT 38,144:DRAW 68,120:DRAW 68,48:DRAW 38,28
78 RETURN
79 REM DALLE 3'
80 PLOT 38,144:DRAW 68,120:DRAW 68,48:DRAW 38,28:DRAW 38,144:DRAW 0,144:PLOT 38,28:DRAW 0,28
81 RETURN
82 REM DALLE 5
83 PLOT 185,144:DRAW 155,120:DRAW 155,48:DRAW 185,28
84 RETURN
85 REM DALLE 5'
86 PLOT 185,144:DRAW 155,120:DRAW 155,48:DRAW 185,28:DRAW 185,144:DRAW 223,144:PLOT 185,28:DRAW 223,28
87 RETURN
88 REM DALLE 6
89 PLOT 68,120:DRAW 92,100:DRAW 92,66:DRAW 68,48
90 RETURN
91 REM DALLE 6'
92 PLOT 68,120:DRAW 92,100:DRAW 92,66:DRAW 68,48:DRAW 68,120:DRAW 38,120:PLOT 68,48:DRAW 38,48
93 RETURN
94 REM DALLE 8
95 PLOT 155,120:DRAW 131,100:DRAW 131,66:DRAW 155,48
96 RETURN
97 REM DALLE 8'
98 PLOT 155,120:DRAW 131,100:DRAW 131,66:DRAW 155,48:DRAW 155,120:DRAW 185,120:PLOT 155,48:DRAW 185,48
99 RETURN
100 REM DALLE 9
101 PLOT 92,100:DRAW 112,80:DRAW 92,66
102 RETURN
103 REM DALLE 9'
104 PLOT 92,100:DRAW 112,80:DRAW 92,66:DRAW 92,100:DRAW 68,100:PLOT 92,66:DRAW 68,66
105 RETURN
106 REM DALLE 11
107 PLOT 131,100:DRAW 112,80:DRAW 131,66
108 RETURN
109 REM DALLE 11'
110 PLOT 131,100:DRAW 112,80:DRAW 131,66:DRAW 131,100:DRAW 155,100:PLOT 131,66:DRAW 155,66
111 RETURN
112 REM DALLE CARREE 4
113 PLOT 38,144:DRAW 185,144:DRAW 185,28:DRAW 38,28:DRAW 38,144
114 RETURN
115 REM DALLE CARREE 3
116 PLOT 0,28:DRAW 38,28:DRAW 38,144:DRAW 0,144
117 RETURN
118 REM DALLE CARRE 5
119 PLOT 223,28:DRAW 185,28:DRAW 185,144:DRAW 223,144
120 RETURN
121 REM DALLE CARREE 6
122 PLOT 38,48:DRAW 68,48:DRAW 68,120:DRAW 38,120
123 RETURN
124 REM DALLE CARREE 7
125 PLOT 68,120:DRAW 155,120:DRAW 155,48:DRAW 68,48:DRAW 68,120
126 RETURN
127 REM DALLE CARREE 8
128 PLOT 185,48:DRAW 155,48:DRAW 155,120:DRAW 185,120
129 RETURN
130 REM DALLE CARREE 9
131 PLOT 68,66:DRAW 92,66:DRAW 92,100:DRAW 68,100
132 RETURN
133 REM DALLE CARREE 10
134 PLOT 92,66:DRAW 131,66:DRAW 131,100:DRAW 92,100:DRAW 92,66
135 RETURN
136 REM DALLE CARREE 11
137 PLOT 155,66:DRAW 131,66:DRAW 131,100:DRAW 155,100
138 RETURN
139 IF INKEY(H1)=0 THEN 145
140 IF INKEY(G1)=0 THEN 150
141 IF INKEY(D1)=0 THEN 151
142 IF INKEY(T1)=0 THEN 156
143 GOSUB 162:IF TIR=1 THEN GOSUB 304:GOTO 205 ELSE GOTO 205
144 C=C1:L=L1:DIR=DIR1:PERS=1:GOSUB 31:GOSUB 162:IF TIR=1 THEN GOSUB 304:GOTO 205 ELSE GOTO 205
145 ON DIR1 GOTO 146,147,148,149
146 IF LAB(C1,L1-1)=1 OR LAB2(C1,L1-1)>1 THEN 205 ELSE LAB2(C1,L1)=0:L1=L1-1:LAB2(C1,L1)=3:GOSUB 360:GOTO 144
147 IF LAB(C1+1,L1)=1 OR LAB2(C1+1,L1)>1 THEN 205 ELSE LAB2(C1,L1)=0:C1=C1+1:LAB2(C1,L1)=3:GOSUB 360:GOTO 144
148 IF LAB(C1,L1+1)=1 OR LAB2(C1,L1+1)>1 THEN 205 ELSE LAB2(C1,L1)=0:L1=L1+1:LAB2(C1,L1)=3:GOSUB 360:GOTO 144
149 IF LAB(C1-1,L1)=1 OR LAB2(C1-1,L1)>1 THEN 205 ELSE LAB2(C1,L1)=0:C1=C1-1:LAB2(C1,L1)=3:GOSUB 360:GOTO 144
150 ON DIR1 GOTO 154,155,152,153
151 ON DIR1 GOTO 152,153,154,155
152 DIR1=2:LOCATE 71,20:PRINT "EST  ":GOTO 144
153 DIR1=3:LOCATE 71,20:PRINT "SUD  ":GOTO 144
154 DIR1=4:LOCATE 71,20:PRINT "OUEST ":GOTO 144
155 DIR1=1:LOCATE 71,20:PRINT "NORD  ":GOTO 144
156 IF TIR=1 THEN 143
157 ON DIR1 GOTO 158,159,160,161
158 IF LAB(C1,L1-1)=1 THEN 143 ELSE DIRECTION=1:SOUND 1,1000,20,7,0,0,30:TIR=1:C3=C1:L3=L1:GOTO 143
159 IF LAB(C1+1,L1)=1 THEN 143 ELSE DIRECTION=2:SOUND 1,1000,20,7,0,0,30:TIR=1:C3=C1:L3=L1:GOTO 143
160 IF LAB(C1,L1+1)=1 THEN 143 ELSE DIRECTION=3:SOUND 1,1000,20,7,0,0,30:TIR=1:C3=C1:L3=L1:GOTO 143
161 IF LAB(C1-1,L1)=1 THEN 143 ELSE DIRECTION=4:SOUND 1,1000,20,7,0,0,30:TIR=1:C3=C1:L3=L1:GOTO 143
162 ORIGIN 400,160:ON DIR1 GOTO 163,175,184,196
163 IF LAB2(C1,L1-1)>1 THEN 165 ELSE 164
164 IF LAB2(C1,L1-1)=1 THEN RETURN ELSE LOCATE 64,13:PRINT " ":GOTO 167
165 IF LAB2(C1,L1-1)=4 THEN LOCATE 64,13:PRINT CHR$(249):GOTO 167
166 IF LAB2(C1,L1-1)=5 AND DIREC=1 THEN PAPER 1:PEN 0:LOCATE 62,10:PRINT "SORTIE":PAPER 0:PEN 1:RETURN ELSE RETURN
167 IF LAB2(C1,L1-2)>1 THEN 169 ELSE 168
168 IF LAB2(C1,L1-2)=1 THEN RETURN ELSE LOCATE 65,12:PRINT " ":GOTO 171
169 IF LAB2(C1,L1-2)=4 THEN LOCATE 65,12:PRINT CHR$(249):GOTO 171
170 IF LAB2(C1,L1-2)=5 AND DIREC=1 THEN PAPER 1:PEN 0:LOCATE 62,10:PRINT "SORTIE":PAPER 0:PEN 1:RETURN ELSE RETURN
171 IF LAB2(C1,L1-3)>1 THEN 173 ELSE 172
172 IF LAB2(C1,L1-3)=1 THEN RETURN ELSE LOCATE 65,11:PRINT " ":PLOT 131,66:DRAW 112,80:RETURN
173 IF LAB2(C1,L1-3)=4 THEN LOCATE 65,11:PRINT CHR$(249):RETURN
174 IF LAB2(C1,L1-3)=5 AND DIREC=1 THEN PAPER 1:PEN 0:LOCATE 64,10:PRINT MAJ$:PAPER 0:PEN 1:RETURN ELSE RETURN
175 IF LAB2(C1+1,L1)>1 THEN 177 ELSE 176
176 IF LAB2(C1+1,L1)=1 THEN RETURN ELSE LOCATE 64,13:PRINT " ":GOTO 178
177 IF LAB2(C1+1,L1)=4 THEN LOCATE 64,13:PRINT CHR$(249):GOTO 178
178 IF LAB2(C1+2,L1)>1 THEN 180 ELSE 179
179 IF LAB2(C1+2,L1)=1 THEN RETURN ELSE LOCATE 65,12:PRINT " ":GOTO 181
180 IF LAB2(C1+2,L1)=4 THEN LOCATE 65,12:PRINT CHR$(249):GOTO 181
181 IF LAB2(C1+3,L1)>1 THEN 183 ELSE 182
182 IF LAB2(C1+3,L1)=1 THEN RETURN ELSE LOCATE 65,11:PRINT " ":PLOT 131,66:DRAW 112,80:RETURN
183 IF LAB2(C1+3,L1)=4 THEN LOCATE 65,11:PRINT CHR$(249):RETURN
184 IF LAB2(C1,L1+1)>1 THEN 186 ELSE 185
185 IF LAB2(C1,L1+1)=1 THEN RETURN ELSE LOCATE 64,13:PRINT " ":GOTO 188
186 IF LAB2(C1,L1+1)=4 THEN LOCATE 64,13:PRINT CHR$(249):GOTO 188
187 IF LAB2(C1,L1+1)=5 AND DIREC=3 THEN PAPER 1:PEN 0:LOCATE 62,10:PRINT "SORTIE":PAPER 0:PEN 1:RETURN
188 IF LAB2(C1,L1+2)>1 THEN 190 ELSE 189
189 IF LAB2(C1,L1+2)=1 THEN RETURN ELSE LOCATE 65,12:PRINT " ":GOTO 192
190 IF LAB2(C1,L1+2)=4 THEN LOCATE 65,12:PRINT CHR$(249):GOTO 192
191 IF LAB2(C1,L1+2)=5 AND DIREC=3 THEN PAPER 1:PEN 0:LOCATE 62,10:PRINT "SORTIE":PAPER 0:PEN 1:RETURN
192 IF LAB2(C1,L1+3)>1 THEN 194 ELSE 193
193 IF LAB2(C1,L1+3)=1 THEN RETURN ELSE LOCATE 65,11:PRINT " ":PLOT 131,66:DRAW 112,80:RETURN
194 IF LAB2(C1,L1+3)=4 THEN LOCATE 65,11:PRINT CHR$(249):RETURN
195 IF LAB2(C1,L1+3)=5 AND DIREC=3 THEN PAPER 1:PEN 0:LOCATE 64,10:PRINT MAJ$:PAPER 0:PEN 1:RETURN
196 IF LAB2(C1-1,L1)>1 THEN 198 ELSE 197
197 IF LAB2(C1-1,L1)=1 THEN RETURN ELSE LOCATE 64,13:PRINT " ":GOTO 199
198 IF LAB2(C1-1,L1)=4 THEN LOCATE 64,13:PRINT CHR$(249):GOTO 199
199 IF LAB2(C1-2,L1)>1 THEN 201 ELSE 200
200 IF LAB2(C1-2,L1)=1 THEN RETURN ELSE LOCATE 65,12:PRINT " ":GOTO 202
201 IF LAB2(C1-2,L1)=4 THEN LOCATE 65,12:PRINT CHR$(249):GOTO 202
202 IF LAB2(C1-3,L1)>1 THEN 204 ELSE 203
203 IF LAB2(C1-3,L1)=1 THEN RETURN ELSE LOCATE 65,11:PRINT " ":PLOT 131,66:DRAW 112,80:RETURN
204 IF LAB2(C1-3,L1)=4 THEN LOCATE 65,11:PRINT CHR$(249):RETURN
205 IF INKEY(H2)=0 THEN 210
206 IF INKEY(G2)=0 THEN 220
207 IF INKEY(D2)=0 THEN 221
208 GOSUB 226:IF TIR=1 THEN GOSUB 287:GOSUB 304:GOTO 269 ELSE GOTO 269
209 C=C2:L=L2:DIR=DIR2:PERS=2:GOSUB 31:GOSUB 226:IF TIR=1 THEN GOSUB 287:GOTO 269 ELSE GOTO 269
210 ON DIR2 GOTO 211,215,216,219
211 IF LAB(C2,L2-1)=1 AND LAB2(C2,L2-1)<>5 OR LAB2(C2,L2-1)=3 THEN 139
212 IF LAB(C2,L2-1)=0 AND LAB2(C2,L2-1)<>6 THEN LAB2(C2,L2)=0:L2=L2-1:LAB2(C2,L2)=4:GOSUB 360:GOSUB 359:GOTO 209
213 IF LAB2(C2,L2-1)=5 AND DIREC=1 THEN 352 ELSE GOTO 361
214 IF LAB(C2,L2-1)=5 THEN 352
215 IF LAB(C2+1,L2)=1 OR LAB2(C2+1,L2)=3 THEN 139 ELSE LAB2(C2,L2)=0:C2=C2+1:LAB2(C2,L2)=4:GOSUB 359:GOSUB 360:GOTO 209
216 IF LAB(C2,L2+1)=1 AND LAB2(C2,L2+1)<>5 OR LAB2(C2,L2+1)=3 THEN 139
217 IF LAB(C2,L2+1)=0 AND LAB2(C2,L2+1)<>6 THEN LAB2(C2,L2)=0:L2=L2+1:LAB2(C2,L2)=4:GOSUB 360:GOSUB 359:GOTO 209
218 IF LAB2(C2,L2+1)=5 AND DIREC=3 THEN 352 ELSE GOTO 361
219 IF LAB(C2-1,L2)=1 OR LAB2(C2-1,L2)=3 THEN 139 ELSE LAB2(C2,L2)=0:C2=C2-1:LAB2(C2,L2)=4:GOSUB 359:GOSUB 360:GOTO 209
220 ON DIR2 GOTO 224,225,222,223
221 ON DIR2 GOTO 222,223,224,225
222 DIR2=2:LOCATE 23,20:PRINT "EST  ":GOTO 209
223 DIR2=3:LOCATE 23,20:PRINT "SUD  ":GOTO 209
224 DIR2=4:LOCATE 23,20:PRINT "OUEST ":GOTO 209
225 DIR2=1:LOCATE 23,20:PRINT "NORD  ":GOTO 209
226 ORIGIN 16,160:ON DIR2 GOTO 227,239,248,260
227 IF LAB2(C2,L2-1)>1 THEN 229 ELSE 228
228 IF LAB2(C2,L2-1)=1 THEN RETURN ELSE LOCATE 16,13:PRINT " ":GOTO 231
229 IF LAB2(C2,L2-1)=3 THEN LOCATE 16,13:PRINT CHR$(249):GOTO 231
230 IF LAB2(C2,L2-1)=5 AND DIREC=1 THEN PAPER 1:PEN 0:LOCATE 14,10:PRINT "SORTIE":PAPER 0:PEN 1:RETURN ELSE RETURN
231 IF LAB2(C2,L2-2)>1 THEN 233 ELSE 232
232 IF LAB2(C2,L2-2)=1 THEN RETURN ELSE LOCATE 17,12:PRINT " ":GOTO 235
233 IF LAB2(C2,L2-2)=3 THEN LOCATE 17,12:PRINT CHR$(249):GOTO 235
234 IF LAB2(C2,L2-2)=5 AND DIREC=1 THEN PAPER 1:PEN 0:LOCATE 14,10:PRINT "SORTIE":PAPER 0:PEN 1:RETURN ELSE RETURN
235 IF LAB2(C2,L2-3)>1 THEN 237 ELSE 236
236 IF LAB2(C2,L2-3)=1 THEN RETURN ELSE LOCATE 17,11:PRINT " ":PLOT 131,66:DRAW 112,80:RETURN
237 IF LAB2(C2,L2-3)=3 THEN LOCATE 17,11:PRINT CHR$(249):RETURN
238 IF LAB2(C2,L2-3)=5 AND DIREC=1 THEN PAPER 1:PEN 0:LOCATE 16,10:PRINT MAJ$:PAPER 0:PEN 1:RETURN ELSE RETURN
239 IF LAB2(C2+1,L2)>1 THEN 241 ELSE 240
240 IF LAB2(C2+1,L2)=1 THEN RETURN ELSE LOCATE 16,13:PRINT " ":GOTO 242
241 IF LAB2(C2+1,L2)=3 THEN LOCATE 16,13:PRINT CHR$(249):GOTO 242
242 IF LAB2(C2+2,L2)>1 THEN 244 ELSE 243
243 IF LAB2(C2+2,L2)=1 THEN RETURN ELSE LOCATE 17,12:PRINT " ":GOTO 245
244 IF LAB2(C2+2,L2)=3 THEN LOCATE 17,12:PRINT CHR$(249):GOTO 245
245 IF LAB2(C2+3,L2)>1 THEN 247 ELSE 246
246 IF LAB2(C2+3,L2)=1 THEN RETURN ELSE LOCATE 17,11:PRINT " ":PLOT 131,66:DRAW 112,80:RETURN
247 IF LAB2(C2+3,L2)=3 THEN LOCATE 17,11:PRINT CHR$(249):RETURN
248 IF LAB2(C2,L2+1)>1 THEN 250 ELSE 249
249 IF LAB2(C2,L2+1)=1 THEN RETURN ELSE LOCATE 16,13:PRINT " ":GOTO 252
250 IF LAB2(C2,L2+1)=3 THEN LOCATE 16,13:PRINT CHR$(249):GOTO 252
251 IF LAB2(C2,L2+1)=5 AND DIREC=3 THEN PAPER 1:PEN 0:LOCATE 14,10:PRINT "SORTIE":PAPER 0:PEN 1:RETURN
252 IF LAB2(C2,L2+2)>1 THEN 254 ELSE 253
253 IF LAB2(C2,L2+2)=1 THEN RETURN ELSE LOCATE 17,12:PRINT " ":GOTO 256
254 IF LAB2(C2,L2+2)=3 THEN LOCATE 17,12:PRINT CHR$(249):GOTO 256
255 IF LAB2(C2,L2+2)=5 AND DIREC=3 THEN PAPER 1:PEN 0:LOCATE 14,10:PRINT "SORTIE":PAPER 0:PEN 1:RETURN
256 IF LAB2(C2,L2+3)>1 THEN 258 ELSE 257
257 IF LAB2(C2,L2+3)=1 THEN RETURN ELSE LOCATE 17,11:PRINT " ":PLOT 131,66:DRAW 112,80:RETURN
258 IF LAB2(C2,L2+3)=3 THEN LOCATE 17,11:PRINT CHR$(249):RETURN
259 IF LAB2(C2,L2+3)=5 AND DIREC=3 THEN PAPER 1:PEN 0:LOCATE 16,10:PRINT MAJ$:PAPER 0:PEN 1:RETURN
260 IF LAB2(C2-1,L2)>1 THEN 262 ELSE GOTO 261
261 IF LAB2(C2-1,L2)=1 THEN RETURN ELSE LOCATE 16,13:PRINT " ":GOTO 263
262 IF LAB2(C2-1,L2)=3 THEN LOCATE 16,13:PRINT CHR$(249):GOTO 263
263 IF LAB2(C2-2,L2)>1 THEN 265 ELSE 264
264 IF LAB2(C2-2,L2)=1 THEN RETURN ELSE LOCATE 17,12:PRINT " ":GOTO 266
265 IF LAB2(C2-2,L2)=3 THEN LOCATE 17,12:PRINT CHR$(249):GOTO 266
266 IF LAB2(C2-3,L2)>1 THEN 268 ELSE 267
267 IF LAB2(C2-3,L2)=1 THEN RETURN ELSE LOCATE 17,11:PRINT " ":PLOT 131,66:DRAW 112,80:RETURN
268 IF LAB2(C2-3,L2)=3 THEN LOCATE 17,11:PRINT CHR$(249):RETURN
269 IF TIR=0 THEN GOTO 139
270 ON DIRECTION GOTO 271,275,279,283
271 L3=L3-1:IF LAB(C3,L3)=1 THEN TIR=0:LAB2(C3,L3+1)=0:GOSUB 287:GOSUB 304:GOTO 139
272 IF LAB2(C3,L3+1)<>3 THEN LAB2(C3,L3+1)=0
273 IF LAB2(C3,L3)=4 THEN 361
274 LAB2(C3,L3)=6:GOSUB 287:GOSUB 304:GOTO 139
275 C3=C3+1:IF LAB(C3,L3)=1 THEN TIR=0:LAB2(C3-1,L3)=0:GOSUB 287:GOSUB 304:GOTO 139
276 IF LAB2(C3-1,L3)<>3 THEN LAB2(C3-1,L3)=0
277 IF LAB2(C3,L3)=4 THEN 361
278 LAB2(C3,L3)=6:GOSUB 304:GOSUB 287:GOTO 139
279 L3=L3+1:IF LAB(C3,L3)=1 THEN TIR=0:LAB2(C3,L3-1)=0:GOSUB 287:GOSUB 304:GOTO 139
280 IF LAB2(C3,L3-1)<>3 THEN LAB2(C3,L3-1)=0
281 IF LAB2(C3,L3)=4 THEN 361
282 LAB2(C3,L3)=6:GOSUB 304:GOSUB 287:GOTO 139
283 C3=C3-1:IF LAB(C3,L3)=1 THEN TIR=0:LAB2(C3+1,L3)=0:GOSUB 287:GOSUB 304:GOTO 139
284 IF LAB2(C3+1,L3)<>3 THEN LAB2(C3+1,L3)=0
285 IF LAB2(C3,L3)=4 THEN 361
286 LAB2(C3,L3)=6:GOSUB 304:GOSUB 287:GOTO 139
287 ON DIR2 GOTO 288,292,296,300
288 IF LAB2(C2,L2-1)=6 THEN LOCATE 16,13:PRINT B$:LOCATE 16,14:PRINT C$:RETURN ELSE IF LAB(C2,L2-1)=0 THEN LOCATE 16,13:PRINT "  ":LOCATE 16,14:PRINT "  "
289 IF LAB(C2,L2-1)=1 THEN RETURN ELSE IF LAB2(C2,L2-2)=6 THEN LOCATE 16,12:PRINT "O":RETURN ELSE IF LAB(C2,L2-2)=0 THEN LOCATE 16,12:PRINT " "
290 IF LAB(C2,L2-2)=1 THEN RETURN ELSE IF LAB2(C2,L2-3)=6 THEN LOCATE 17,11:PRINT "O":RETURN
291 RETURN
292 IF LAB2(C2+1,L2)=6 THEN LOCATE 16,13:PRINT B$:LOCATE 16,14:PRINT C$:RETURN ELSE IF LAB(C2+1,L2)=0 THEN LOCATE 16,13:PRINT "  ":LOCATE 16,14:PRINT "  "
293 IF LAB(C2+1,L2)=1 THEN RETURN ELSE IF LAB2(C2+2,L2)=6 THEN LOCATE 16,12:PRINT "O":RETURN ELSE IF LAB(C2+2,L2)=0 THEN LOCATE 16,12:PRINT " "
294 IF LAB(C2+2,L2)=1 THEN RETURN ELSE IF LAB2(C2+3,L2)=6 THEN LOCATE 17,11:PRINT "O":RETURN
295 RETURN
296 IF LAB2(C2,L2+1)=6 THEN LOCATE 16,13:PRINT B$:LOCATE 16,14:PRINT C$:RETURN ELSE IF LAB(C2,L2+1)=0 THEN LOCATE 16,13:PRINT "  ":LOCATE 16,14:PRINT "  "
297 IF LAB(C2,L2+1)=1 THEN RETURN ELSE IF LAB2(C2,L2+2)=6 THEN LOCATE 16,12:PRINT "O":RETURN ELSE IF LAB(C2,L2+2)=0 THEN LOCATE 16,12:PRINT " "
298 IF LAB(C2,L2+2)=1 THEN RETURN ELSE IF LAB2(C2,L2+3)=6 THEN LOCATE 17,11:PRINT "O":RETURN
299 RETURN
300 IF LAB2(C2-1,L2)=6 THEN LOCATE 16,13:PRINT B$:LOCATE 16,14:PRINT C$:RETURN ELSE IF LAB(C2-1,L2)=0 THEN LOCATE 16,13:PRINT "  ":LOCATE 16,14:PRINT "  "
301 IF LAB(C2-1,L2)=1 THEN RETURN ELSE IF LAB2(C2-2,L2)=6 THEN LOCATE 16,12:PRINT "O":RETURN ELSE IF LAB(C2-2,L2)=0 THEN LOCATE 16,12:PRINT " "
302 IF LAB(C2-2,L2)=1 THEN RETURN ELSE IF LAB2(C2-3,L2)=6 THEN LOCATE 17,11:PRINT "O":RETURN
303 RETURN
304 ON DIR1 GOTO 305,309,313,317
305 IF LAB2(C1,L1-1)=6 THEN LOCATE 64,13:PRINT B$:LOCATE 64,14:PRINT C$:RETURN ELSE IF LAB(C1,L1-1)=0 THEN LOCATE 64,13:PRINT "  ":LOCATE 64,14:PRINT "  "
306 IF LAB(C1,L1-1)=1 THEN RETURN ELSE IF LAB2(C1,L1-2)=6 THEN LOCATE 64,12:PRINT "O":RETURN ELSE IF LAB(C1,L1-2)=0 THEN LOCATE 64,12:PRINT " "
307 IF LAB(C1,L1-2)=1 THEN RETURN ELSE IF LAB2(C1,L1-3)=6 THEN LOCATE 65,11:PRINT "O":RETURN
308 RETURN
309 IF LAB2(C1+1,L1)=6 THEN LOCATE 64,13:PRINT B$:LOCATE 64,14:PRINT C$:RETURN ELSE IF LAB(C1+1,L1)=0 THEN LOCATE 64,13:PRINT "  ":LOCATE 64,14:PRINT "  "
310 IF LAB(C1+1,L1)=1 THEN RETURN ELSE IF LAB2(C1+2,L1)=6 THEN LOCATE 64,12:PRINT "O":RETURN ELSE IF LAB(C1+2,L1)=0 THEN LOCATE 64,12:PRINT " "
311 IF LAB(C1+2,L1)=1 THEN RETURN ELSE IF LAB2(C1+3,L1)=6 THEN LOCATE 65,11:PRINT "O":RETURN
312 RETURN
313 IF LAB2(C1,L1+1)=6 THEN LOCATE 64,13:PRINT B$:LOCATE 64,14:PRINT C$:RETURN ELSE IF LAB(C1,L1+1)=0 THEN LOCATE 64,13:PRINT "  ":LOCATE 64,14:PRINT "  "
314 IF LAB(C1,L1+1)=1 THEN RETURN ELSE IF LAB2(C1,L1+2)=6 THEN LOCATE 64,12:PRINT "O":RETURN ELSE IF LAB(C1,L1+2)=0 THEN LOCATE 64,12:PRINT " "
315 IF LAB(C1,L1+2)=1 THEN RETURN ELSE IF LAB2(C1,L1+3)=6 THEN LOCATE 65,11:PRINT "O":RETURN
316 RETURN
317 IF LAB2(C1-1,L1)=6 THEN LOCATE 64,13:PRINT B$:LOCATE 64,14:PRINT C$:RETURN ELSE IF LAB(C1-1,L1)=0 THEN LOCATE 64,13:PRINT "  ":LOCATE 64,14:PRINT "  "
318 IF LAB(C1-1,L1)=1 THEN RETURN ELSE IF LAB2(C1-2,L1)=6 THEN LOCATE 64,12:PRINT "O":RETURN ELSE IF LAB(C1-2,L1)=0 THEN LOCATE 64,12:PRINT " "
319 IF LAB(C1-2,L1)=1 THEN RETURN ELSE IF LAB2(C1-3,L1)=6 THEN LOCATE 65,11:PRINT "O":RETURN
320 RETURN
321 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
322 DATA 1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1
323 DATA 1,0,0,0,1,0,1,0,1,1,1,0,1,0,1,0,1,0,1,0,1,1,1,1,0,1
324 DATA 1,0,1,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1
325 DATA 1,0,0,0,1,0,1,0,1,0,1,1,1,0,1,1,1,1,1,0,1,0,1,1,0,1
326 DATA 1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1
327 DATA 1,0,1,1,0,1,0,1,1,1,1,0,0,0,1,1,1,1,1,0,1,1,1,1,0,1
328 DATA 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1
329 DATA 1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,1,1
330 DATA 1,0,1,0,0,0,1,0,0,0,1,0,1,0,1,0,1,1,1,0,0,0,0,0,0,1
331 DATA 1,0,0,0,1,0,0,0,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,0,1
332 DATA 1,1,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1
333 DATA 1,0,0,0,0,0,0,0,1,0,1,0,1,0,1,1,1,1,1,1,0,1,0,1,0,1
334 DATA 1,0,1,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1
335 DATA 1,0,1,0,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1
336 DATA 1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,1
337 DATA 1,0,1,0,1,0,0,0,1,1,0,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1
338 DATA 1,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1
339 DATA 1,0,1,1,1,1,0,0,0,1,0,1,0,1,1,1,0,1,1,1,0,1,1,0,1,1
340 DATA 1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1
341 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
342 REM ******************************
343 REM ***** POUR LES TRICHEURS *****
344 REM ******************************
345 MODE 1:DIM LAB(25,21)
346 FOR L=0 TO 20
347 FOR C=0 TO 25
348 READ LAB(C,L)
349 LOCATE C+2,L+2:IF LAB(C,L)=1 THEN PRINT CHR$(143)
350 NEXT C
351 NEXT L
352 FOR F=1 TO 900:NEXT
353 WINDOW 3,30,2,15:CLS:WINDOW 1,80,1,25
354 LOCATE 5,6:PRINT "BRAVO!! VOUS AVEZ REUSSI":LOCATE 5,8:PRINT "A SORTIR DU LABYRINTHE."
355 LOCATE 6,12:PRINT "Une autre partie ? (O/N)":FOR F=1 TO 100:NEXT
356 IF INKEY(34)=0 THEN RUN
357 IF INKEY(46)=0 THEN MODE 2:END
358 GOTO 356
359 LOCATE 25,18:PRINT ABS(C2-C5)+ABS(L2-L5):RETURN
360 LOCATE 73,18:PRINT ABS(C2-C1)+ABS(L2-L1):RETURN
361 WINDOW 3,30,2,15:CLS:WINDOW 1,80,1,25
362 ORIGIN 0,0
363 LOCATE 9,3:PRINT "VOUS ETES MORT"
364 PLOT 152,224:DRAW 152,272:DRAW 168,288:DRAW 168,320:DRAW 152,336:DRAW 96,336:DRAW 80,320:DRAW 80,288:DRAW 96,272:DRAW 96,224:DRAW 152,224
365 PLOT 152,240:DRAW 96,240:PLOT 152,256:DRAW 96,256
366 PLOT 16*8,18*16:DRAW 15*8,18*16:DRAW 15*8,17*16:DRAW 16*8,17*16:DRAW 16*8,18*16
367 PLOT 14*8,20*16:DRAW 12*8,20*16:DRAW 12*8,19*16:DRAW 13*8,18*16:DRAW 14*8,18*16:DRAW 14*8,20*16
368 PLOT 17*8,20*16:DRAW 17*8,18*16:DRAW 18*8,18*16:DRAW 19*8,19*16:DRAW 19*8,20*16:DRAW 17*8,20*16
369 LOCATE 5,14:PRINT "Une autre partie? (O/N)"
370 GOTO 356