10 REM 20 REM ALEC ET ROY 30 REM PAR ALAIN GOUBERT 40 REM 50 REM Affichage en 40 colonnes 60 WIDTH 40 70 REM 80 REM PRESENTATION DU JEU 90 REM 100 CLS:RANDOMIZE 110 PRINT "JEU: LE FOU ET LA TRONCONNEUSE" 120 PRINT:PRINT 130 PRINT "UN FOU NOMME ROY S'EST ECHAPPE DE SON A SILE ET VOUS, ALEC, DEVEZ LE RETROUVER." 140 PRINT "LA TACHE NE SERA PAS AISEE, PUISQUE ROY , PAS SI FOU, S'EST REFUGIE DANS UNE FORET DE 99 A RBRES !!!" 150 PRINT "AVEC VOTRE RESERVE D'HUILE ET D'ESSENCE CONTENUE DANS LE RESERVOIR DE VOTRE TRONCONNEUSE, VOUS NE POUVEZ EN SCIER QUE 25 !!!" 160 PRINT "MAIS POUR VOUS AIDER, ON VOUS INDIQUE A U DEPART SI ROY SE TROUVE A LEST OU A L'OUEST DE LA LIGNE TRACEE EN //." 170 PRINT:PRINT "BONNE CHASSE !!!!" 180 REM LOCATE X,Y : positionne le curseur ligne X , colonne Y 190 LOCATE 24,1:PRINT "APPUYEZ SUR UNE TOUCHE POUR COMMENCER"; 200 R$=INKEY$:IF R$="" THEN 200 210 REM 220 REM AFFICHAGE DU PLAN A L'ECAAN 230 REM 240 CLS 250 FOR U= 9 TO 0 STEP -1 260 J=U 270 PRINT">";:IF J<10 THEN PRINT"0"; 280 PRINT;MIDS(STR$(J),2);"<"; 290 IF J>=U+90 THEN 320 300 J=J+10 310 GOTO 270 320 NEXT U 330 FOR U=1 TO 3 340 PRINT TAB(20)"//" 350 NEXT lj 360 LOCATE 12,8:PRINT"OUEST".:LOCATE 12,30:PRINT"EST" 370 LOCATE 14,1 380 REM 390 REM INITIALISATION DES VARIABLES 400 REM 410 A=25:REM NOMBRE MAXIMUM D'ARBRES QU'ALEC PEUT SCIER 420 REM PO POSITION DE ROY 430 A$=" ":REM POUR EFFACER LES ARBRES SCIES DE L 'ECRAN 440 REM N$ ARBRE QUE ALEC VEUT SCIER 450 DIM M(110):REM PERMET DE SAVOIR SI L'ARBRE NUMERO I EST SCIE OU NON (IL EST SCIE POUR M(I)=-1) 460 REM 470 REM POSITION INITIALE D'ALEC 480 REM 490 PO=INT(RND(1).99) 500 REM 510 REM AFFICHAGE DE SA POSITION (A L'EST OU A L'OUEST) 520 REM 530 IF PO<=49 THEN PRINT"ALEC EST A L'OUEST" 540 IF PO>49 THEN PRINT"ALEC EST A LEST" 550 LOCATE 24,1:PRINT"PRESSER UNE TOUCHE POUR CONTINUER..."; 560 IF INKEY$="" THEN 560 570 REM • 580 REM DEBUT DU JEU ; ROUTINE ; QUESTION A L'UTILISATEUR 590 REM 600 REM STR1NG$(X,A$) : genere X fois la chatne AS 610 LOCATE 14,1:PRINT STR1NG$(255," ");STRING$(158," "); 620 LOCATE 15,1:PRINT"ALEC SCIE L'ARBRE NUMERO " ;:INPUT"";N$ 630 IF LEN(N$)>2 THEN 620 640 IF LEN(N$)=1 THEN N$="0"+N$ 650 H=VAL(N$):IF M(H)=-1 THEN 620 660 M(H)=-1 670 REM 680 REM ALEC EST SUR L'ARBRE SCIE 690 REM 700 IF PO=H THEN 860 710 REM 720 REM ALEC EST AUX ALENTOURS 730 REM 740 IF PO=H-1 OR PO=H+1 OR PO=H+9 OR PO=H-9 OR PO=H+10 OR PO=H-10 OR PO=H-11 OR PO=H+11 THEN GOSUB 9 50 750 REM 760 REM ROY NEST NI SUR L'ARBRE SCIE NI AUX ALEN TOURS 770 REM 780 A=A-1 790 GOSUB 1420:REM EFFACE L'ARBRE SCIE DE L'ECRAN 800 IF A=0 THEN 1360:REM FIN DU JEU 810 GOSUB 1260:REM AFFICHE LE NOMBRE D'ARBRES QUE ALEC PEUT ENCORE SCIER 820 GOTO 610 830 REM 840 REM ALEC DECOUVRE ROY 850 REM 860 LOCATE 20,1 870 PRINT "HAPPY END !!!" 880 PRINT:PRINT"ENFIN ALEC EUT ROY I (ECUR EVIL!)" 890 PRINT:PRINT"PRESSER UNE TOUCHE POUR CONTINUER." 900 IF INKEY$="" THEN 900 910 GOTO 1520 920 REM 930 REM ROY NEST PAS SUR L'ARBRE MAIS AUX ALENTOURS 940 REM 950 LOCATE 16,1 960 PRINT"ALEC, J'ETAIS SUR L'ARBRE NUMERO ";PO 970 REM 980 REM CALCUL DE LA NOUVELLE POSITION DE ROY 990 REM 1000 POS=STR$(PO) 1010 GOSUB 1610 1020 IF ER=1 THEN 1220 1030 X=INT(RND(1).4+1) 1040 IF X=2 THEN X=9 1050 IF X=3 THEN X=10 1060 IF X=4 THEN X=11 1070 Y=RND(1) 1080 IF Y<=.5 THEN SG=-1 1090 IF Y>.5 THEN SG=1 1100 AJ=X*SG 1110 P=PO+AJ:IF P<0 OR P>99 THEN 1030 1120 IF M(P)=-1 THEN 1030 1130 IF A1=1 AND (AJ=1 OR AJ=-10 OR AJ=11 OR AJ=-11 OR AJ=-9) THEN 1030 1140 IF A2=1 AND (AJ=1 OR AJ=10 OR AJ=11 OR AJ=9 OR AJ=-9) THEN 1030 1150 IF A3=1 AND (AJ=-1 OR AJ=10 OR AJ=11 OR AJ=-11 OR AJ=9) THEN 1030 1160 IF A4=1 AND (AJ=-1 OR AJ=-10 OR AJ=-11 OR AJ=-9 OR AJ=9) THEN 1030 1170 IF C1=1 AND (AJ=1 OR AJ=11 OR AJ=-9) THEN 1030 1180 IF C2=1 AND (AJ=-10 OR AJ=-11 OR AJ=-9) THEN 1030 1190 IF C3=1 AND (AJ=-1 OR AJ=-11 OR AJ=9) THEN 1030 1200 IF C4=1 AND (AJ=10 OR AJ=11 OR AJ=9) THEN 1030 1210 PO=PO+AJ 1220 RETURN 1230 REM 1240 REM AFFICHE LE NOMBRE D'ARBRES DUE ALEC PEUT ENCORE SCIER 1250 REM 1260 LOCATE 18,1 1270 PRINT"VOUS, ALEC, VOUS POUVEZ ENCORE SCIER "; A;"ARBRE"; 1280 IF A<>1 THEN PRINT "S" 1290 IF A=1 THEN PRINT:PRINT"MAIS CE SERA LE DERNIER '!!" 1300 LOCATE 24,1:PRINT"PRESSER UNE TOUCHE POUR CONTINUER..."; 1310 IF INKEY$="" THEN 1310 1320 RETURN 1330 REM 1340 REM FIN DU JEU 1350 REM 1360 LOCATE 20,1 1370 PRINT"EH BIEN MALHEUREUSEMENT, VOICI ENCORE UN FOU QUI NE SERA PAS ENFERME !!!" 1380 GOTO 1520 1390 REM 1400 REM EFFACE LES ARBRES SCIES DE L'ECRAN 1410 REM 1420 FOR U=0 TO 9 1430 IF VAL(LEFT$(N$,1))=U THEN C=2+U*4 1440 IF VAL(RIGHT$(N$,1))=U THEN B=10-U 1450 NEXT U 1460 LOCATE B,C 1470 PRINT A$ 1480 RETURN 1490 REM 1500 REM AUTRE PARTIE 7 1510 REM 1520 CLS: LOCATE 20,1 1530 PRINT"VOULEZ-VOUS FAIRE UNE AUTRE PARTIE? O / N"; 1540 F4=INKEY$:IF R$="" THEN 1540 1550 IF R$<>"O" AND R$<>"N" THEN 1530 1560 IF R$="O" THEN RUN 1570 IF R$="N" THEN WIDTH 80:END:REM Retour A l'affichage 80 colonises 1580 REM 1590 REM ANALYSE 1600 REM 1610 IF RIGHT$(PO$,1)="9" THEN IF M(PO-1)=-1 AND M(PO+10)=-1 AND M(PO-10)=-1 AND M(PO-11)=-1 AND M(PO+9)=-1 THEN 1720 1620 IF LEFTS(POS,1)="0" THEN IF M(PO-1)=-1 AND M(PO+1)=-1 AND M(PO+10)=-1 AND M(PO+11)=-1 AND M(PO+9)=-1 THEN 1720 1630 IF RIGHTS(POS,1)="0" THEN IF M(PO+1)=-1 AND M(PO+10)=-1 AND M(PO-10)=-1 AND M(PO+11)=-1 AND M(PO-9)=-1 THEN 1720 1640 IF LEFT$(PO$,1)="9" THEN IF M(PO+1)=-1 AND MI PO-1)=-1 AND M(PO-10)=-1 AND M(PO-11)=-1 AND M(PO-9)=-1 THEN 1720 1650 IF POS="00" THEN IF M(PO+1)=-1 AND M(PO+10)=- 1 AND M(PO+11)=-1 THEN 1720 1660 IF PO$="09" THEN IF M(PO-1)=-1 AND M(PO+10)=- 1 AND M(PO+9)=-1 THEN 1720 1670 IF PO$="99" THEN IF M(PO-1)=-1 AND M(PO-10)=- 1 AND M(PO-11)=-1 THEN 1720 1680 IF PO8="90" THEN IF M(PO+1)=-1 AND M(PO-10)=- 1 AND M(PO-9)=-1 THEN 1720 1690 IF PO<10 THEN 1710 1700 IF M(PO+1)=-1 AND M(PO-1)=-1 AND M(PO+10)=-1 AND M(PO-10)=-1 AND M(PO+11)=-1 AND M(PO-9)=-1 AND M(PO+9)=-1 THEN 1720 1710 RETURN 1720 LOCATE 20,1: PRINT"ALEC, JE NE PEUX'PLUS BOUG ER !!!":LOCATE 24,1:PRINT"PRESSER UNE TOUCHE POUR CONTINUER..."; 1730 IF INKEY$<>"" THEN 1730 1740 LOCATE 14,1:PRINT STRING$(255," ");STRING$(15 8," "); 1750 RETURN