User Tools

Site Tools


en:labyrinthe_infernal

LABYRINTHE INFERNAL

Info

Author Christian Nessen
Computer Amstrad PCW 8256 / 8512 / 9512
Year 1988
Gender Arcade
Controls Keyboard
Languages French
Status Preserved

Screenshots

Description

What can be more natural than wanting to get out of a maze at all costs? It is this very legitimate aspiration to freedom that will propel you forward as soon as you press a key on your PCW. But what's the point of banging your head against the wall? Instead of rushing, turn with the <W> keys to the left and <$> to the right.

But what good is freedom if you don't have a dime? It's not about leaving the labyrinth empty-handed if you want, as I wish, you can leave your name for posterity (more exactly in the “record1.lab” file). In fact, here and there, around the corner of a corridor or at the end of a dungeon, you will discover boxes containing crowns and the hero of the game will be the one who manages to get out of the labyrinth with a maximum of these precious coins in his pocket.

Alas, everything would be very simple if there were not also in this labyrinth a good number of greedy dragons who, if you rub shoulders with them, will take 50,000 crowns from you or, if you are not solvent, you will not take a single crown. Also watch out for the dungeons,… from which only the luckiest will be able to get out!

How to get out? How to avoid the dragon? Simply by taking a hidden ladder! A few seconds of patience, and you will be on another floor, with new dragons, new dungeons, but also new crown treasures and above all another labyrinth of walls and corridors. If you don't like the floor, you will have to pay 50,000 crowns to go up or down to a new floor.

Last but not least, running like crazy through those corridors and crashing into walls burns energy, and your energy reserves decrease as the seconds tick by. It is absolutely necessary to reach the exit before total exhaustion if you do not want to accumulate coins at all… Fortunately, luck may want that on this or that floor of the labyrinth, you will find a reserve of magic potion that will allow you to resume your journey.

If unfortunately fate decides that you find yourself locked between four walls, with no possibility of getting out, you can bang your head against these walls until death overtakes you, but for the good of humanity, the ability to end your suffering by pressing <f> key.

In the program “LABYRINT.BAS” line 540 of the program has a loop “FOR I = 1 TO 50: NEXT”, which adjusts the character's movement speed, getting the fastest version simply by removing this loop.

Installing the programs

MATRIX2

Run this program and type the character set to get the graphic effects. Save them under the name “FICHIER1.DEF”.

CHARFIC1

Run this program when you have finished burning the entire graphical character set and it will load the main game program “LABYRINT.BAS”.

To save time, all programs and graphic characters are included on the discs for download and play directly.

Listing

  • Listing 1 - MATRIX2.BAS
10 '*****************************************************
20 '*    programme N[ 1 - red{finition des caract}res   *
30 '*  MATRIX2 (Adaptation de MATRIX - voir Echo N[ 4)  *
40 '*****************************************************
50 MEMORY &HBFFE:FOR n=&HC070 TO &HC098:READ d8:POKE n,d8:NEXT:DATA 243,62,129,211,241,62,130,211,242,175,95,103,22,184,58,153,192,111,41,41,41,25,17,154
60 DATA 192,235,1,8,0,237,176,62,133,211,241,62,134,211,242,251,201
70 DEF FNcu$(x,y)=CHR$(27)+"Y"+CHR$(32+x)+CHR$(32+y):inv$=CHR$(27)+"p":nor$=CHR$(27)+"q":cls$=CHR$(27)+"H"+CHR$(27)+"E"
80 PRINT nor$cls$;CHR$(27);"q":n=32:x=0
90 FOR i=1 TO 21:x=x+1:FOR j=70 TO 82:PRINT FNcu$(x,j)CHR$(n);:n=n+1:IF n=256 THEN I=99:J=99
100 NEXT J,I:PRINT FNcu$(24,0)CHR$(7)"Appuyez sur RETURN avant de taper les valeurs de chaque nouveau caract}re"
110 PRINT FNcu$(27,0)CHR$(7)"Touche -S- pour sauvegarder le fichier de caract}res red{finis"
120 PRINT FNcu$(29,0)CHR$(7)"Touche -C- pour recharger un fichier":PRINT FNcu$(0,0)
130 i$=INKEY$:IF i$="" THEN 130 ELSE i$=UPPER$(i$):PRINT FNcu$(0,0)CHR$(7):IF i$="C" THEN 270
140 IF i$="S" THEN 290
150 FOR ap=1 TO 8:points(ap)=0:PRINT CHR$(7):INPUT datbin(ap):points(ap)=points(ap)+datbin(ap):NEXT
160 INPUT"num{ro du caract}re red{fini et pressez RETURN ",n:IF N<32 OR n>255 THEN GOTO 160
170 POKE &HC099,n:FOR output=1 TO 8:POKE &HC099+output,(points(output)):NEXT:c=&HC070:CALL c:RUN
180 PRINT "entrez: drive A ou B:nom.extension  ";:RETURN
190 INPUT nom$:PRINT"patientez...":OPEN "R",1,nom$,1:FIELD #1,1 AS z$:c=&HC070:FOR n=32 TO 255:POKE &HC099,n
200 IF n3=2 THEN POKE &HC089,0:CALL c:POKE &HC089,&HEB
210 FOR n2=1 TO 8
220 IF n3=1 THEN GET #1:POKE &HC099+n2,ASC(z$)
230 IF n3=2 THEN LSET z$=CHR$(PEEK(&HC099+n2)):PUT #1
240 NEXT
250 IF n3=1 THEN CALL c
260 NEXT:CLOSE:RETURN
270 PRINT nor$:GOSUB 180:PRINT inv$"charge ";
280 n3=1:GOSUB 190:RUN
290 PRINT nor$:GOSUB 180:PRINT inv$"sauve ";
300 n3=2:GOSUB 190:RUN
  • Character set to obtain the graphic effects (Characters 216 to 239)
Magic potion

 216         0   0  63  15  15  15  15   7
 217         0   0 255 255 255 255 255 255
 218         0   0 184 230 198 134 134 216
 219        15  31  31  15   7   3   1   0
 220       255 255 255 255 255 255 255   0
 221       224 240 240 240 224 192 128   0

Dragon

 222         2   3   7  13  24  48  48  48
 223        32 224 160 240 192   0   0   0
 224         0   0   0   0   0   0   0   0
 225        48  48  48  24  12   7   3   0
 226         0  28  62  51  97 192 128   0
 227         0   0   4  12   8 248 112   0

Treasure

 228         0   0  31 112 224 192 255 192
 229         0   0 255   0   1   3 255   1
 230         0   0 224 192 128   0   0 128
 231       224 240 255 122  63  26  15   0
 232         0   0 255 170 255 170 255   0
 233       192  96 224 160 224 160 224   0

Ladder

 234         0   0   0   0   1   1  15  15
 235         7   7  63  63 255 255 255 255
 236         0   0   3   3  31  31 25 5255
 237       127 127 255 255 255 255 255 255
 238       255 255 255 255 255 255 255 255

Person

 239        60  60  24 126 219  60 102 195
  • Listing 2 - CHARFIC1.BAS
10 '**********************************************
20 '*             programme N[ 2                 *
30 '*     @ sauver sous le nom  "CHARFIC1.BAS"   *
40 '**********************************************
50 esc$=CHR$(27):cls$=esc$+"E"+esc$+"H":DEF FNcu$(x,y)=esc$+"Y"+CHR$(32+x)+CHR$(32+y):PRINT cls$esc$+"f"+esc$+"0"
60 MEMORY &HBFFE:FOR n=&HC070 TO &HC098:READ d8:POKE n,d8:NEXT:DATA 243,62,129,211,241,62,130,211,242,175,95,103
70 DATA 22,184,58,153,192,111,41,41,41,25,17,154,192,235,1,8,0,237,176,62,133,211,241,62,134,211,242,251,201
80 nom$="m:fichier1.def":OPEN "R",1,nom$,1:FIELD #1,1 AS z$:c=&HC070:i=0:x=39:y=16:PRINT FNcu$(14,30)"chargement fichier 1 en cours"
90 FOR n=32 TO 255
100 IF i=1 THEN PRINT FNcu$(y,x)ESC$"p patientez  ! "
110 IF i=2 THEN PRINT FNcu$(y,x)ESC$"q patientez  ! "
120 i=i+1:IF i>2 THEN i=1
130 POKE &HC099,n:FOR n2=1 TO 8:GET #1:POKE &HC099+n2,ASC(z$):NEXT:CALL c:NEXT:CLOSE:RUN "m:labyrint.bas"
  • Listado 3 - LABYRINT.BAS
10 '*******************************************************
20 '* LE LABYRINTHE INFERNAL   <c> Christian NESEN - 1988 *
30 '*******************************************************
40 '
50 '
60 '
70 MEMORY &HF605
80 IF FIND$("record1.lab")="" THEN 120
90 OPEN"I",#1,"record1,lab"
100 INPUT #1,record,rec$
110 CLOSE #1
120 ' **** initialisation des variables ****
130 '
140 esc$=CHR$(27):cls$=esc$+"E"+esc$+"H"
150 DEF FNlocate$(x,y)=esc$+"Y"+CHR$(32+x)+CHR$(32+y)
160 DEF FNwi$(l,c,h,w)=esc$+"X"+CHR$(32+l)+CHR$(32+c)+CHR$(31+h)+CHR$(31+w)
170 DEF FNinver$=esc$+"p":DEF FNnorm$=esc$+"q"
180 DEF FNfond$(f,p)=esc$+"c"+CHR$(c)+esc$+"b"+CHR$(p)
190 hor$=CHR$(151)+STRING$(7,CHR$(154))+CHR$(157):char$=CHR$(239)
200 GOSUB 1680   '(vers -la- formation du labyrinthe pour la page titre)
208 PRINT FNlocate$(30,33);"LE LABYRINTHE INFERNAL":FOR i=1 TO 1000:NEXT
210 PRINT FNlocate$(31,0);"Appuyez sur une touche";
220 r=r+1:b$=INKEY$:IF b$="" THEN 220 ELSE RANDOMIZE r:PRINT FNlocate$(30,0);esc$;"M";
230 PRINT FNfond$(63,0);FNlocate$(10,25);FNinver$;" Voulez-vous des explications ? O/N ";FNnorm$
240 FOR i=1 TO 500:NEXT
250 b$=LOWER$(INKEY$):IF b$<>"o" AND b$<>"n" THEN PRINT FNlocate$(10,25);"                                     ":FOR i=1 TO 500:NEXT:GOTO 230
260 IF b$="o" THEN GOSUB 3230       'vers les explications
270 cal=10000:butin=0:d=3:depx=25:depy=2
280 GOSUB 1680
290 '***** JEU *****
300 '
310 PRINT FNnorm$;FNlocate$(depx,depy);char$:FOR i=1 TO 500:NEXT
320 a$=INKEY$:IF a$="" THEN PRINT FNlocate$(depx,depy);CHR$(32):FOR i=1 TO 500:NEXT:GOTO 310
330 att=1
340 x$=CHR$(depx):y$=CHR$(depy)
350 x=ASC(x$):y=ASC(y$)
360 IF a$="f" THEN PRINT FNlocate$(30,1);"Vous avez tout perdu ! Voulez-vous une autre chance ?";esc$;"K":GOTO 2410
370 IF att<>1 THEN PRINT FNlocate$(29,30);esc$;"K":a$=INKEY$
380 att=0
390 d=d+(a$="w")-(a$="$")
400 IF d>3 THEN LET d=0
410 IF d<0 THEN LET d=3
420 y=y+2*((d=2)-(d=0))
430 x=x+((d=3)-(d=1))
440 ON ca(x,y) GOSUB 590,630,700,940,1140,1360,1600
450 IF pb=1 THEN LET pb=0:GOTO 540 ELSE IF pb=2 THEN LET pb=0:GOTO 310
460 PRINT FNlocate$(x,y);char$
470 x$=CHR$(x)+x$
480 y$=CHR$(y)+y$
490 x=ASC(RIGHT$(x$,1))
500 y=ASC(RIGHT$(y$,1))
510 x$=LEFT$(x$,LEN(x$)-1)
520 y$=LEFT$(y$,LEN(y$)-1)
530 PRINT FNlocate$(x,y);CHR$(32)
540 cal=cal-1:PRINT FNlocate$(30,13);cal:FOR i=1 TO 50:NEXT
550 GOTO 350
560 '
570 '***** rencontre d'obstacles *****
580 '
590 '**** touche un mur **** 
600 cal=cal-100:PRINT FNlocate$(30,2);CHR$(7);"Calories :";cal
610 IF cal<=0 THEN PRINT FNlocate$(29,1)"Vous etes a bout de forces ! Voulez vous une autre chance ?";esc$;"K":GOTO 2410
620 d=d+1:pb=1:RETURN
630 '*** trouve trésor ***
640 '
650 butin=butin+1
660 PRINT FNlocate$(29,2);"Butin :";10*butin;"000 écus";STRING$(2,CHR$(7))
670 PRINT FNlocate$(x,y-1);STRING$(3,CHR$(32)):ca(x,y)=0:IF ca(x+1,y)=2 THEN LET ca(x+1,y)=0:PRINT FNlocate$(x+1,y-1);STRING$(3,CHR$(32)) ELSE LET ca(x-1,y)=0:PRINT FNlocate$(x-1,y-1);STRING$(3,CHR$(32))
680 RETURN
690 '
700 '*** oubliettes ***
710 '
720 PRINT STRING$(3,CHR$(7))
730 PRINT FNlocate$(x,y);char$
740 x1=x:y1=y
750 x$=CHR$(x)+x$
760 y$=CHR$(y)+y$
770 x=ASC(RIGHT$(x$,1))
780 y=ASC(RIGHT$(y$,1))
790 x$=LEFT$(x$,LEN(x$)-1)
800 y$=LEFT$(y$,LEN(y$)-1)
810 PRINT FNlocate$(x,y);CHR$(32) 
820 sortie=1+INT(RND*10):IF sortie>4 THEN 820
830 PRINT FNlocate$(29,30);"Quel couloir choisissez vous ? Nord,Sud,Est ou Ouest ?"
840 rep$=LOWER$(INKEY$):IF rep$="" THEN 840
850 IF rep$="n" THEN LET rep=1 ELSE IF rep$="s" THEN LET rep=2 ELSE IF rep$="e" THEN LET rep=3 ELSE IF rep$="o" THEN LET rep=4 ELSE 840
860 IF rep<>sortie THEN 920
870 PRINT FNlocate$(29,30);"Bravo ! Reprenez votre route et faites attention!";esc$;"K"
880 nb=1:GOSUB 2040
890 PRINT FNlocate$(x1,y1-1);CHR$(32);char$;CHR$(32):ca(x1,y1)=0:IF ca(x1+1,y1)=3 THEN LET ca(x1+1,y1)=0:PRINT FNlocate$(x1+1,y1-1);STRING$(3,CHR$(32)) ELSE LET ca(x1-1,y1)=0:PRINT FNlocate$(x1-1,y1-1);STRING$(3,CHR$(32))
900 depx=x1:depy=y1:d=3:att=1:pb=2:a$=""
910 RETURN
920 PRINT FNlocate$(30,1);"Vous avez tout perdu ! Voulez-vous une autre chance ?";esc$;"K":GOTO 2410
930 '
940 '*** dragons ***
950 '
960 PRINT STRING$(3,CHR$(7))
970 x1=x:y1=y
980 x$=CHR$(x)+x$
990 y$=CHR$(y)+y$
1000 x=ASC(RIGHT$(x$,1))
1010 y=ASC(RIGHT$(y$,1))
1020 x$=LEFT$(x$,LEN(x$)-1)
1030 y$=LEFT$(y$,LEN(y$)-1)
1040 PRINT FNlocate$(x,y);CHR$(32)
1050 IF butin<5 THEN 1130
1060 PRINT FNlocate$(29,30);"Votre vie contre 50 000 écus ?  D'accord ?"
1070 rep$=LOWER$(INKEY$):IF rep$="" THEN 1070
1080 IF rep$="n" THEN 1130 ELSE IF rep$<>"o" THEN 1070 ELSE LET butin=butin-5:PRINT FNlocate$(29,2);"Butin : ";10*butin;"000 écus."
1090 nb=1:GOSUB 2120
1100 PRINT FNlocate$(x1,y1-1);STRING$(3,CHR$(32)):ca(x1,y1)=0:IF ca(x1+1,y1)=4 THEN LET ca(x1+1,y1)=0:PRINT FNlocate$(x1+1,y1-1);STRING$(3,CHR$(32)) ELSE LET ca(x1-1,y1)=0:PRINT FN locate$(x1-1,y1-1);STRING$(3,CHR$(32))
1110 depx=x1:depy=y1:d=3:a$="":att=1:pb=2:RETURN
1120 IF rep$<>"n" THEN 1070
1130 PRINT FNlocate$(30,1) ;"Vous avez tout perdu !  Voulez-vous une autre chance ?" ;esc$"K":GOTO 2410
1140 ' **** arrivée ****
1150 '
1160 PRINT STRING$(6,CHR$(7))
1170 x$=CHR$(x)+x$
1180 y$=CHR$(y)+y$
1190 x=ASC(RIGHT$(x$,1))
1200 y=ASC(RIGHT$(y$,1))
1210 x$=LEFT$(x$,LEN(x$)-1)
1220 y$=LEFT$(y$,LEN(y$)-1)
1230 PRINT FNlocate$(x,y);CHR$(32)
1240 PRINT FNlocate$(29,30);"Voulez-vous sortir ?";esc$;"K"
1250 rep$=INKEY$:IF rep$="" THEN 1250
1260 IF rep$="n" THEN depx=x:depy=y:d=3:att=1:pb=2:a$="":RETURN
1270 IF rep$<>"o" THEN 1250
1280 IF 10*butin<10*record THEN 1340
1290 PRINT FNlocate$(30,2)"Bravo, vous avez battu le record! ";esc$;"K";:INPUT "Quel est votre nom ";rec$
1300 record=butin
1310 OPEN "O",#1,"record1.lab
1320 PRINT #1,record,rec$
1330 CLOSE #1
1340 PRINT FNlocate$(29,30);"Votre score :";10*butin;"000 écus. On recommence ?";esc$;"K"
1350 GOTO 2410
1360 '*** escaliers ***
1370 '
1380 PRINT STRING$(3,CHR$(7))
1390 PRINT FNlocate$(x,y);char$
1400 x1=x:y1=y
1410 x$=CHR$(x)+x$
1420 y$=CHR$(y)+y$
1430 x=ASC(RIGHT$(x$,1))
1440 y=ASC(RIGHT$(y$,1))
1450 x$=LEFT$(x$,LEN(x$)-1)
1460 y$=LEFT$(y$,LEN(y$)-1)
1470 PRINT FNlocate$(x,y);CHR$(32)
1480 PRINT FNlocate$(29,30);"On monte ou on descend ? (M/D)";esc$;"K"
1490 rep1$=LOWER$(INKEY$):IF rep1$<>"m" AND rep1$<>"d" THEN 1490
1500 ERASE ca,posi
1510 GOSUB 1680
1520 IF butin<5 THEN 1570
1530 IF rep1$="m" THEN PRINT FNlocate$(29,30);"50 000 écus pour monter d'un autre étage. (O/N)" ELSE PRINT FNlocate$(29,30);"50 000 écus pour descendre d'un autre étage. (O/N)"
1540 PRINT FNnorm$;FNlocate$(x,y);char$:FOR i=1 TO 500:NEXT
1550 rep$=LOWER$(INKEY$):IF rep$="" THEN PRINT FNlocate$(x,y);CHR$(32):FOR i=1 TO 500:NEXT:GOTO 1540
1560 IF rep$<>"o"AND rep$<>"n" THEN 1540 ELSE IF rep$="o" THEN LET butin=butin-5:GOTO 1500
1570 depx=x:depy=y:d=3:att=1:pb=2:a$=""
1580 ca(x,y)=0:PRINT FNlocate$(x,y-1);CHR$(32);FNlocate$(x,y+1);CHR$(32):IF ca(x+1,y)=6 THEN LET ca(x+1,y)=0:PRINT FNlocate$(x+1,y-1);STRING$(3,CHR$(32)) ELSE LET ca(x-1,y)=0:PRINT FNlocate$(x-1,y-1);STRING$(3,CHR$(32))
1590 RETURN
1600 '*** trouve potion ***
1610 '
1620 PRINT STRING$(2,CHR$(7))
1630 cal=cal+1000
1640 PRINT FNlocate$(30,2);"Calories :";cal
1650 PRINT FNlocate$(x,y-1);STRING$(3,CHR$(32)):ca(x,y)=0:IF ca(x+1,y)=7 THEN LET ca(x+1,y)=0:PRINT FNlocate$(x+1,y-1);STRING$(3,CHR$(32)) ELSE LET ca(x-1,y)=0:PRINT FNlocate$(x-1,y-1);STRING$(3,CHR$(32))
1660 RETURN
1670 '
1680 '**** Formation du labyrinthe ****
1690 '
1700 nb=5
1710 DIM posi(7)
1720 DIM ca(28,90)
1730 PRINT FNfond$(0,63);cls$;esc$+"f"
1735 IF page=0 THEN PRINT FNlocate$(0,2);" Christian NESEN presente ":FOR i=1 TO 1000:NEXT:GOTO 1750
1740 PRINT FNlocate$(0,2);"LE LABYRINTHE INFERNAL                                                S C. NESEN 1988"
1750 PRINT FNinver$;FNlocate$(0,1);STRING$(90,CHR$(154))
1760 FOR i=0 TO 90:LET ca(1,i)=1:NEXT
1770 FOR i=2 TO 27:PRINT FNlocate$(i,0);CHR$(149);FNlocate$(i,90);CHR$(149):LET ca(i,0)=1:ca(i,90)=5:NEXT
1780 FOR h=0 TO 8
1790 FOR i=1 TO 5
1800 posi(i)=INT(RND*100):IF posi(i)>10 THEN 1800
1810 FOR j=1 TO i-1:IF posi(j)=posi(i) THEN LET j=i-1:GOTO 1800:ELSE NEXT j
1820 FOR k=1 TO 2
1830 PRINT FNlocate$(3*h+k+1,4+8*posi(i));CHR$(149)
1840 LET ca(3*h+k+1,4+8*posi(i))=1
1850 NEXT k
1860 NEXT i
1870 FOR i=1 TO 5
1880 posi(i)=INT(RND*10)
1890 FOR j=1 TO i-1:IF posi(j)=posi(i) THEN LET j=i-1:GOTO 1880:ELSE NEXT j
1900 IF h=8 THEN PRINT FNlocate$(27,0);STRING$(90,CHR$(154)):FOR k=0 TO 90:LET ca(28,k)=1:NEXT k:GOTO 1930
1910 PRINT FNlocate$(3*h+4,4+8*posi(i));hor$
1920 FOR k=0 TO 8:LET ca(3*h+4,k+4+8*posi(i))=1:NEXT k
1930 NEXT i,h
1940 '
1950 '*** placement des trésors ***
1960 '
1970 FOR h=1 TO 2*nb
1980 y=6+8*INT(RND*10):IF y>80 THEN 1980
1990 x=2+3*INT(RND*10):IF x>27 THEN 1990
2000 IF ca(x,y)<>0 THEN 1980
2010 PRINT FNnorm$;FNlocate$(x,y-1);CHR$(228);CHR$(229);CHR$(230);FNlocate$(x+1,y-1);CHR$(231);CHR$(232);CHR$(233):LET ca(x,y)=2:ca(x+1,y)=2
2020 NEXT
2030 '
2040 '*** placement des oubliettes **** 
2050 FOR h=1 TO nb
2060 y=6+8*INT(RND*10):IF y>80 THEN 2060
2070 x=2+3*INT(RND*10):IF x>27 THEN 2070
2080 IF ca(x,y)<>0 THEN 2060
2090 PRINT FNinver$;FNlocate$(x,y-1);"   ";FNlocate$(x+1,y-1);"   ";FNnorm$:LET ca(x,y)=3:ca(x+1,y)=3
2100 NEXT:IF nb=1 THEN RETURN
2110 '
2120 '*** placement des dragons ****
2130 FOR h=1 TO nb
2140 y=6+8*INT(RND*10):IF y>80 THEN 2140
2150 x=2+3*INT(RND*10):IF x>27 THEN 2150
2160 IF ca(x,y)<>0 THEN 2140
2170 PRINT FNnorm$;FNlocate$(x,y-1);CHR$(222);CHR$(223);CHR$(224);FNlocate$(x+1,y-1);CHR$(225);CHR$(226);CHR$(227):LET ca(x,y)=4:ca(x+1,y)=4
2180 NEXT:IF nb=1 THEN RETURN
2190 '
2200 '*** placement de la potion ****
2210 IF INT(RND*10) MOD 2=0 THEN 2270
2220 y=6+8*INT(RND*10):IF y>80 THEN 2220
2230 x=2+3*INT(RND*10):IF x>27 THEN 2230
2240 IF ca(x,y)<>0 THEN 2220
2250 PRINT FNnorm$;FNlocate$(x,y-1);CHR$(216);CHR$(217);CHR$(218);FNlocate$(x+1,y-1);CHR$(219);CHR$(220);CHR$(221):LET ca(x,y)=7:ca(x+1,y)=7
2260 '
2270 '*** placement des escaliers **** 
2280 FOR h=1 TO nb
2290 y=6+8*INT(RND*10):IF y>80 THEN 2290
2300 x=2+3*INT(RND*10):IF x>27 THEN 2300
2310 IF ca(x,y)<>0 THEN 2290
2320 PRINT FNnorm$;FNlocate$(x,y-1);CHR$(32);CHR$(234);CHR$(235);FNlocate$(x+1,y-1);CHR$(236);CHR$(237);CHR$(238):LET ca(x,y)=6:ca(x+1,y)=6
2330 NEXT
2340 '
2345 IF page=0 THEN LET page=1:ERASE ca,posi:GOTO 2380   '(titre)
2350 PRINT FNlocate$(29,2);"Butin :";10*butin;"000 écus."
2360 PRINT FNlocate$(30,2);"Calories :";cal
2370 PRINT FNlocate$(30,30);"Record :";10*record;"000 écus. ";"(";rec$;")";esc$;"K"
2380 RETURN
2390 '
2400 '*** FIN DE PARTIE ***
2410 PRINT STRING$(20,CHR$(7));
2420 rep$=LOWER$(INKEY$):IF rep$="" THEN 2420 ELSE IF rep$="o" THEN 2430 ELSE IF rep$="n" THEN 2440 ELSE 2420
2430 ERASE ca:ERASE posi:GOTO 270
2440 PRINT cls$;esc$;"e";FNfond$(63,0)
2450 END
2460 '
2470 '
2480 '
2490 '
3220 '
3230 '****** EXPLICATIONS *******
3240 PRINT FNwi$(4,4,23,81);cls$
3250 PRINT:PRINT"Vous etes perdu dans un labyrinthe dont la sortie se trouve a droite de l'écran.":PRINT:PRINT "Au départ, vous vous trouvez dans la partie gauche,  et votre but est  de  sortir":PRINT "en amassant un maximum d'argent.":PRINT
3260 PRINT "Cet argent, vous le trouverez dans des coffres comme celui-ci :"
3270 PRINT TAB(35);CHR$(228);CHR$(229);CHR$(230):PRINT TAB(35);CHR$(231);CHR$(232);CHR$(233)
3280 PRINT "Chaque coffre contient 10 000 écus.":PRINT:PRINT"Cependant,":PRINT TAB(5);"ce labyrinthe est peu accueillant. Il est peuplé de draqons :"
3290 PRINT TAB(35);CHR$(222);CHR$(223);CHR$(224):PRINT TAB(35);CHR$(225);CHR$(226);CHR$(227)
3300 PRINT "Si vous en rencont rez un, il ne vous laissera la vie sauve que si vous lui":PRINT"donnez la sonne de 50 000 écus.":PRINT "Si vous refusez ou si vous n'etes pas solvable, vous a vez perdu."
3310 PRINT:PRINT:PRINT TAB(40);"Appuyez suroune touche pour continuer";
3320 b$=INKEY$:IF b$="" THEN 3320 ELSE PRINT cls$
3330 PRINT "Dans ce labyrinthe, il y a aussi des oubliettes comme celle-ci :":PRINT:PRINT TAB(35);FNinver$;STRING$(3,CHR$(32));FNnorm$:PRINT TAB(35);FNinver$;STRING$(3,CHR$(32));FN norm$
3335 PRINT:PRINT "Si vous y tombez, tout n'est peut-etre pas perdu ..."
3340 PRINT"Au fond de cette oubliette, il y a quatre couloi rs : un au nord, un au sud,":PRINT "un a l'est et le dernier á l'ouest. Un seul de ces couloirs nene á la liberté.":PRINT TAB(5);"Si vous le trouvez, vous pouvez poursuivre votre route. "
3350 PRINT:PRINT "A nesure que vous vous déplacez, vous vous  fatiquez et perdez des calories.":PRINT "De plus chaque fois que vous heurtez un mur, vous perdez 100 calories."
3360 PRINT TAB(5);"Si vous etes a bout de forces avant de ga qner La sortie, vous avez perdu.":PRINT "Heureusement, il se peut que dans le labyrinthe il y ait de la potion magique."
3370 PRINT TAB(35);CHR$(216);CHR$(217);CHR$(218):PRINT TAB(35);CHR$(219);CHR$(220);CHR$(221)
3380 PRINT "Si vous réussi ssez a l'atteindre, vous pourrez refaire des réserves d'énergie et":PRINT "poursuivre votre route."
3390 PRINT:PRINT:PRINT TAB(40);"Appuyez sur une touche pour continuer";
3400 b$=INKEY$:IF b$="" THEN 3400 ELSE PRINT cls$
3410 PRINT "En fin, ce labyrinthe comporte également des esca liers dérobés ":PRINT:PRINT TAB(35);CHR$(32);CHR$(234);CHR$(235):PRINT TAB(35);CHR$(236);CHR$(237);CHR$(238):PRINT
3420 PRINT "Vous pouvez emprunter ces escaliers pour vous rendre á un autre étage ou":PRINT"vous découvrirez de nouveaux dragons et oubliettes, mais aussi des coffres"
3430 PRINT "d' écus, et peut et re de la pot i on naqi que ...":PRINT
3440 PRINT "Lorsque vous ar ri vez a un autre étage, vous pouv ez y rester, ou, moyennant la":PRINT"sonne de 50 000 écus, continuer a monter ou a descendre vers un étage plus":PRINT"accueillant."
3450 PRINT:PRINT "Lorsque vous atteignez La limi te droite du labyrinthe, vous pouvez soit sortir":PRINT"si vous etes satisfait de votre score, soit rester et continuer."
3460 PRINT:PRINT
3470 PRINT:PRINT:PRINT TAB(40);"Appuyez sur une touche pour continuer";
3480 b$=INKEY$:IF b$="" THEN 3480 ELSE PRINT cls$
3490 PRINT "Pour vous déplacer, vous devez utiliser les touches 'w' et '$' "
3500 PRINT:PRINT TAB(5);"Si vous appuyez sur 'w', vous tour nez á gauche."
3510 PRINT TAB(5);"Si vous appuyez sur '$', vous tournez a droite. "
3520 PRINT:PRINT"ATTENTION droite et qauche  s' entendent par rapport á la trajectoire suivie,":PRINT "et non par rapport  a l'écran ! "
3530 PRINT:PRINT TAB(5);"Pourocommencer, ains i qu'apres t ou t incident, (dragon, oubliette, etc.), si":PRINT"vous appuye z sur toute touche autre que 'w' ou '$' ,vous vous déplacerez"
3540 PRINT "vers le haut de l'écran. "
3550 PRINT:PRINT"Si vous heurt ez un mur, vous constaterez qu'étant un peu groggy, vous avez":PRINT "tendance á tituber, aíors raites attention !"
3555 PRINT:PRINT "En cas de désespoir total, vous pouvez net tre fin a vos souffrances.":PRINT "il vous suffit d'appuyer sur La touche 'f'."
3560 PRINT:PRINT TAB(40); "Bonne chance pour Ie record !"
3570 PRINT:PRINT TAB(40); "Appuyez sur une touche pour continuer";
3580 b$=INKEY$:IF b$="" THEN 3580
3590 PRINT FNwi$(0,0,32,90)
3600 RETURN

Controls

       $ = RIGHT
       W = LEFT
       F = EXIT GAME

Loading the program

 1.- Insert the CP/M disc on side 2
 2.- Write BASIC and wait for it to load
 3.- Remove the CP/M disk and insert the disk containing the game Labyrinthe Infernal
 4.- Type run "CHARFIC1" and press the "ENTER" key

Extras

  • Listing of the program in a large-circulation magazine of the time

labyrinthe_01.jpg labyrinthe_02.jpg labyrinthe_03.jpg labyrinthe_04.jpg labyrinthe_05.jpg

Download

en/labyrinthe_infernal.txt · Last modified: 2022/07/12 09:36 by jevicac