10 REM -------------------------------
20 REM *** L'AGE DE PIERRE *** 30 REM *** elabore sur un CPC 464 *** 40 REM ------------------------------- 50 REM *** (C) 1985, par Stephane *** 60 REM *** Vallois.tel:46-04-04-17 *** 70 REM ------------------------------- 80 REM 90 sc=0:BORDER 0 100 DEF FN z$=LEFT$(a$(y),x-1)+CHR$(32)+RIGHT$(a$(y),20-x) 110 DEF FN y$=MID$(a$(y-1),x,1):ENV 1,127,-100,20 120 ENT 2,100,2,2:ecr=0:DIM a$(13) 130 SYMBOL 255,&CF,&CF,&CF,0,&F3,&F3,&F3,0 140 SYMBOL 254,&7F,&FF,&C3,&BF,&BF,&BF,&BF,&FF 150 SYMBOL 253,&FC,&FE,&FE,&FE,&FE,&FE,&FE,&FE 160 SYMBOL 252,&FF,&FF,&FF,&FF,&FF,&FF,&7F,0 170 SYMBOL 251,&FE,&FE,&FE,&FE,&FE,&FE,&FC,0 180 SYMBOL 250,7,&1F,&3F,&7F,&7F,255,255,255 190 SYMBOL 249,&E0,&F8,&FC,&FE,&FE,255,255,255 200 SYMBOL 248,255,255,&CF,&47,&63,&33,&1F,&7 210 SYMBOL 247,255,255,255,254,254,&FC,&F8,&E0 220 SYMBOL 246,7,9,15,15,7,1,15,&17 230 SYMBOL 245,&E0,&90,&F0,&F0,&E0,&80,&F0,&E8 240 SYMBOL 244,&33,&31,&33,&26,&C,&18,&C,&1C 250 SYMBOL 243,&CC,&8C,&CC,&64,&30,&18,&30,&38 260 INK 0,0:INK 1,18:INK 2,6:INK 3,24:GOSUB 1500:MODE 1 270 PAPER 0:PEN 1:BORDER 0 280 GOTO 1380 290 REM ------------------------------- 300 REM *** Donnees du tableau n.1 *** 310 REM ------------------------------- 320 DATA mmmmmmmmmmmmmmmmmmmm 330 DATA m hrhhmmmmrrrmrmmmrm 340 DATA mhhhmpr mhhhhmp hrm 350 DATA mrrhmmp mp h m rm 360 DATA mpphhhh mmm hmmrrhrm 370 DATA mhhhhhh rhmphmphhhrm 380 DATA mhmmmmmmrhmrrrrrrhrm 390 DATA mhmhhhhhmmmmmmmmmhrm 400 DATA mhmhphphprrrrrrrrhrm 410 DATA mhr hhhhphphphphhrm 420 DATA mhrhphphprrrrrrrrrrm 430 DATA mmmmmmmmmmmmmmmmmmmm 440 DATA 18,150,2,2 450 DATA mmmmmmmmmmmmmmmmmmmm 460 DATA mrrmmmmmmmmmrrrrmrrm 470 DATA m hmmmmmmmmmmmmhrprm 480 DATA m hmmp p p pppppprm 490 DATA m hmm p p mmrrrhrprm 500 DATA m hmmp p pmmrmmmrprm 510 DATA mhhmmmmmmmmmrppmrprm 520 DATA m hmmmmmmmmmmhrrmprm 530 DATA mhhrrrhhhr hhhhhprm 540 DATA m hhhhhhhhmmrrrrrrrm 550 DATA mhhrrrrrrrmmmmmmmmmm 560 DATA mmmmmmmmmmmmmmmmmmmm 570 DATA 22,80,2,3 580 DATA mmmmmmmmmmmmmmmmmmmm 590 DATA mm r hr r mrmmr rm 600 DATA mmmpmmhhmh mprhhhhhm 610 DATA m hhhhhrhr hhhmmm m 620 DATA mmmpmmhrhr mmmmrrm m 630 DATA mm r hrhr hhhhhhhpm 640 DATA m hhhhhrhr mmmmmmmmm 650 DATA mm r hrhr rrrrrrrrm 660 DATA mmmpmmhrhr hhhhhhhpm 670 DATA mphhhhhrhr mmmmmmmmm 680 DATA mrrrrrhrhr hhhhhhhpm 690 DATA mmmmmmmmmm mmmmmmmmm 700 DATA 8,150,2,4 710 DATA mmmmmmmmmmmmmmmmmmmm 720 DATA m hhhhhhrrrhhhhhhhhm 730 DATA mhhhhhhhhhprmmmmmmhm 740 DATA mphhhhhhrrhprmmmmmhm 750 DATA mrphhhhhmmrhprmmmhhm 760 DATA mrrphhhhhhmrhprmhphm 770 DATA mrrrphhhpphmrhprmhhm 780 DATA mrrrrphhmmphmrhprmmm 790 DATA mrrrrrphppmphmrhprmm 800 DATA mrrrrrrphhpmphmrhprm 810 DATA mrrrrrrrmmhpmphhr hm 820 DATA mmmmmmmmmmmmmmmmmmmm 830 DATA 26,80,2,2 840 '--------------------------------- 850 '*** ROUTINE D'AFFICHAGE ECRAN *** 860 '--------------------------------- 870 FOR i=1 TO 12:READ a$(i) 880 FOR j=1 TO 20:b$=MID$(a$(i),j,1) 890 IF b$="m" THEN PEN 2:c$=STRING$(4,CHR$(255)) 900 IF b$="h" THEN PEN 1:c$=STRING$(4,CHR$(207)) 910 IF b$=" " THEN c$=STRING$(4," ") 920 IF b$="r" THEN PEN 3:c$=CHR$(254)+CHR$(253)+CHR$(252)+CHR$(251) 930 IF b$="p" THEN PEN 2:c$=CHR$(250)+CHR$(249)+CHR$(248)+CHR$(247) 940 LOCATE j*2-1,i*2-1:PRINT MID$(c$,1,2):LOCATE j*2-1,i*2:PRINT MID$(c$,3,2); 950 NEXT j:NEXT i:READ pom,tps,x,y 960 PEN 3:PRINT "SCORE:";USING "#####";sc;:PRINT " ENERGIE:";USING "###";tps;:PRINT " POMMES:";USING "##";pom; 970 PEN 3:LOCATE x*2-1,y*2-1:PRINT CHR$(246);CHR$(245):LOCATE x*2-1,y*2:PRINT CHR$(244);CHR$(243):RETURN 980 REM ------------------------------ 990 REM *** ANIMATION DU MONSTRE *** 1000 REM ----------------------------- 1010 b$=INKEY$:IF b$="" THEN 1010 1020 IF b$<CHR$(240) OR b$>CHR$(243) THEN 1010 ELSE LOCATE x*2-1,y*2-1:PRINT " ":LOCATE x*2-1,y*2:PRINT " " 1030 GOSUB 1360:ON (ASC(b$)-239) GOSUB 1040,1090,1150,1210:GOTO 1140 1040 c$=MID$(a$(y-1),x,1):tb=0 1050 IF c$=" " THEN y=y-1:RETURN 1060 IF c$="h" THEN y=y-1:a$(y)=FN z$:RETURN 1070 IF c$="p" THEN y=y-1:GOSUB 1270:a$(y)=FN z$:RETURN 1080 RETURN 1090 c$=MID$(a$(y+1),x,1):IF FN y$="r" THEN tb=1:x1=x:y1=y ELSE tb=0 1100 IF c$=" " THEN y=y+1:RETURN 1110 IF c$="h" THEN y=y+1:a$(y)=FN z$:RETURN 1120 IF c$="p" THEN y=y+1:GOSUB 1270:a$(y)=FN z$:RETURN 1130 tb=0:RETURN 1140 PEN 3:LOCATE x*2-1,y*2-1:PRINT CHR$(246);CHR$(245):LOCATE x*2-1,y*2:PRINT CHR$(244);CHR$(243):IF tb=0 THEN 1010 ELSE GOSUB 1280:GOTO 1010 1150 c$=MID$(a$(y),x-1,1):IF FN y$="r" THEN tb=1:x1=x:y1=y: ELSE tb=0 1160 IF c$=" " THEN x=x-1:RETURN 1170 IF c$="h" THEN x=x-1:a$(y)=FN z$:RETURN 1180 IF c$="p" THEN x=x-1:GOSUB 1270:a$(y)=FN z$:RETURN 1190 IF c$="r" THEN GOTO 1350 1200 tb=0:RETURN 1210 c$=MID$(a$(y),x+1,1):IF FN y$="r" THEN tb=1:x1=x:y1=y: ELSE tb=0 1220 IF c$=" " THEN x=x+1:RETURN 1230 IF c$="h" THEN x=x+1:a$(y)=FN z$:RETURN 1240 IF c$="p" THEN x=x+1:GOSUB 1270:a$(y)=FN z$:RETURN 1250 IF c$="r" THEN GOTO 1340 1260 tb=0:RETURN 1270 sc=sc+150:SOUND 129,50,100,7,1:pom=pom-1:PEN 3:LOCATE 7,25:PRINT USING "#####";sc;:LOCATE 39,25:PRINT USING "##";pom;:IF pom=0 THEN 1430 ELSE RETURN 1280 tb=0 1290 IF MID$(a$(y1),x1,1)<>" " THEN SOUND 130,200,100,7,1,2,5:RETURN 1300 PEN 3:LOCATE x1*2-1,y1*2-3:PRINT " ":LOCATE x1*2-1,y1*2-2:PRINT " " 1310 a$(y1-1)=LEFT$(a$(y1-1),x1-1)+CHR$(32)+RIGHT$(a$(y1-1),20-x1):a$(y1)=LEFT$(a$(y1),x1-1)+"r"+RIGHT$(a$(y1),20-x1):LOCATE x1*2-1,y1*2-1:PRINT CHR$(254);CHR$(253):LOCATE x1*2-1,y1*2:PRINT CHR$(252);CHR$(251) 1320 IF x1=x AND y1=y THEN 1570 1330 y1=y1+1:GOTO 1290 1340 IF MID$(a$(y),x+2,1)=" " THEN PEN 3:LOCATE x*2+1,y*2-1:PRINT " ";CHR$(254);CHR$(253):LOCATE x*2+1,y*2:PRINT " ";CHR$(252);CHR$(251):a$(y)=LEFT$(a$(y),x)+CHR$(32)+"r"+RIGHT$(a$(y),18-x):x1=x+2:y1=y+1:GOSUB 1210:GOTO 1280:ELSE RETURN 1350 IF MID$(a$(y),x-2,1)=" " THEN PEN 3:LOCATE x*2-5,y*2-1:PRINT CHR$(254);CHR$(253);" ":LOCATE x*2-5,y*2:PRINT CHR$(252);CHR$(251);" ":a$(y)=LEFT$(a$(y),x-3)+"r"+CHR$(32)+RIGHT$(a$(y),21-x):x1=x-2:y1=y+1:GOSUB 1150:GOTO 1280:ELSE RETURN 1360 tps=tps-1:PEN 3:LOCATE 27,25:PRINT USING "###";tps;:IF tps>0 THEN RETURN 1370 GOTO 1570 1380 ' ------------------------------- 1390 ' *** Gestion du programme ! *** 1400 ' ------------------------------- 1410 ecr=ecr+1:IF ecr=5 THEN GOTO 1440 1420 GOSUB 840:GOTO 980 1430 CLS:GOTO 1410 1440 ' sp gagne 1450 MODE 0:PEN 3 1460 PRINT "* VOUS AVEZ GAGNE *" 1470 ZONE 80:PRINT ,"Vous etes le premier qui ait reussi cet exploit. Nous nous souviendrons de vouscomme etant LE SEULhero de l'histoire !","Une touche...":PRINT "Et ca repart !!!","Votre score:";sc 1480 IF INKEY$<>"" THEN 1480 1490 IF INKEY$<>"" THEN RUN ELSE 1490 1500 MODE 2:PEN 3:LOCATE 32,5:PRINT "L'AGE DE PIERRE" 1510 ZONE 80:PRINT ,"LE BUT DU JEU: Vous devez au travers de 4 salles guider un personnage dont la seule raison d'etre est de ramasser les fruits rouges tapissant le sol.",,"TOUTEFOIS: Sa quete ne sera pas sans danger,car frequents sont les eboulements. 1520 PRINT ,"DEROULEMENT DE LA PARTIE: Vous vous dirigez grace aux fleches du curseur, chaquedeplacement occasionnant la perte d'un point d'energie.Bien evidemment, si votretotal energetique parvient a zero, vous mourrez et la partie se termine. 1530 PRINT "Chaque fois que vous passez sous une pierre celle ci tombe.Vous avez la possibi-lite de pousser un de ces blocs si il y a de la place derriere.","L'herbe ne fait pas obstacle a vos mouvements,elle sert a retenir les pierres. 1540 PRINT ,"Pressez la barre d'espacement pour jouer, ou 'D' pour voir les 4 salles ..." 1550 IF INKEY(61)=0 THEN 1580 1560 IF INKEY(47)=0 THEN RETURN ELSE 1550 1570 SOUND 130,200,100,7,1,2,5:FOR i=1 TO 1000:NEXT i:CLS:PEN 3:PRINT "Vous avez perdu !!!":FOR i=1 TO 10:SOUND 1,i*100,10,INT(i/3):SOUND 2,1000-i*100,10,7:NEXT:FOR i=1 TO 1000:NEXT:RUN 1580 MODE 1:FOR z=1 TO 4:GOSUB 840:NEXT z:RUN |