====== LABYRINTHE INFERNAL ====== {{:otros:Labyrinthe_p1.jpg?690|}} ===== Info ===== ^ Author | Christian Nessen | ^ Computer | Amstrad PCW 8256 / 8512 / 9512 | ^ Year | 1988 | ^ Gender | Arcade | ^ Controls | Keyboard | ^ Languages | French | ^ Status | [[preserved|Preserved]] | ===== Screenshots ===== {{:otros:Labyrinthe_screenshot01.png?220}} {{:otros:Labyrinthe_screenshot02.png?220}} {{:otros:Labyrinthe_screenshot03.png?220}} {{:otros:Labyrinthe_screenshot04.png?220}} ===== 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 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 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 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 {{:otros:Labyrinthe_01.jpg?170}} {{:otros:Labyrinthe_02.jpg?170}} {{:otros:Labyrinthe_03.jpg?170}} {{:otros:Labyrinthe_04.jpg?170}} {{:otros:Labyrinthe_05.jpg?170}} ===== Download ===== * {{:otros:Labyrinthe_Infernal_french.zip|Infernal Labyrinth in French }}(game in dsk format, compressed with zip) * {{:otros:Labyrinthe_Inferna_spanishl.zip|Infernal Labyrinth in Spanish }}(game in dsk format, compressed with zip)