REM ================== REM PLOMBERIE EN FOLIE REM ================== REM VERSION 1.2, MAI 2024 REM PROGRAMME POUR LES ORDINATEURS ALICE 32/90 REM PAR STEVANR (CONTACT: STEVANR CHEZ MYYAHOO POINT COM) REM ********************* REM INITIALISATION DU JEU 1CLEAR30,20224:FORI=20224TO20300:READJ:POKEI,J:NEXT:FORI=20302TO20314:READJ:POKEI,J:NEXT:DIMP(9,7),X(20),Y(20),D(20) 2A$=CHR$(207):H=0:POKE12314,1:EXEC54316:GOTO150 REM ***************** REM BOUCLE PRINCIPALE REM EFFACEMENT ET AFFICHAGE CURSEUR 3PRINT@W," ";:PRINT@W+2," ";:PRINT@W+80," ";:PRINT@W+82," ";:W=Y*120+X*3+9:D=0 4PRINT@W,CHR$(200);:PRINT@W+2,CHR$(196);:PRINT@W+80,CHR$(194);:PRINT@W+82,CHR$(193); REM TEST APPUI SUR ESPACE 5IFINKEY$=" "THEN13 REM APPEL DE LA ROUTINE DE TEST EN CONTINU DU CLAVIER, POUR TOUCHES Q,S,U,H 6EXEC20224:IFPEEK(20297)=1THENIFX>0THENX=X-1:D=1 7IFPEEK(20298)=1THENIFX<9THENX=X+1:D=1 8IFPEEK(20299)=1THENIFY>0THENY=Y-1:D=1 9IFPEEK(20300)=1THENIFY<7THENY=Y+1:D=1 REM MISE A JOUR ET AFFICHAGE DU TEMPS RESTANT 10T=T-.1:PRINT@200,INT(T);:IFT<1THEN22 REM SI PAS DE DEPLACEMENT, RETOUR EN DEBUT DE BOUCLE 11IFD=0THEN5 12T=T-.1:GOTO3 REM ****************************** REM ACTIONS APRES APPUI SUR ESPACE REM POSE NOUVEAU TUYAU 13IFP(X,Y)>0THEN15 14P(X,Y)=B:Z=W:GOSUB61:I=B:GOSUB59:GOSUB57:S=S+10*L:SOUNDRND(99),1:GOSUB20:T=T-.1:GOTO10 REM ECHANGE DE TUYAUX 15IFP(X,Y)>15THEN17 16C=P(X,Y):P(X,Y)=B:Z=W:GOSUB61:I=B:GOSUB59:B=C:GOSUB58:SOUNDRND(99),1:T=T-.2:GOTO10 REM RANGE TUYAU DANS SAC 17IFP(X,Y)=20THENZ=W:I=B:GOSUB59:GOSUB57:SOUNDRND(99),2:Z=W:GOSUB60:POKE251,7:PRINT@914,"S";:POKE251,112:T=T-.6:GOTO10 REM OUVERTURE ROBINET D'EAU 18IFP(X,Y)=21THEN22 REM SINON RETOUR A LA BOUCLE PRINCIPALE 19T=T-.1:GOTO10 REM *************************** REM AFFICHAGE POINTS ET RECORDS 20PRINT@800,S;:IFS>HTHENH=S:PRINT@920,H; 21RETURN REM *********************** REM OUVERTURE ARRIVEE D'EAU REM EFFACEMENT CURSEUR ET CLIGNOTEMENT ROBINET 22PRINT@W," ";:PRINT@W+2," ";:PRINT@W+80," ";:PRINT@W+82," ";:POKE251,232:PRINT@917,"R";:POKE251,112:M=1:N=10:P=1:V=0:F=0 REM BOUCLE DE REMPLISSAGE DES TUYAUX 23PRINT@Y(1)*40+X(1),CHR$(223);:FORI=PTOM:D=0:X=X(I):Y=Y(I) 24IFX=9ORX=38ORY=0ORY=23THENPOKE251,78:PRINT@Y*40+X,"F";:F=1:GOTO36 25POKE20313,X:POKE20312,Y-1:EXEC20302:C=PEEK(20314):IFC=207THENN=N+1:X(N)=X:Y(N)=Y-1:D(N)=-40:D=D+1:GOSUB41 26IFC=120ORC=223THEN D=D+1 27POKE20313,X+1:POKE20312,Y:EXEC20302:C=PEEK(20314):IFC=207THENN=N+1:X(N)=X+1:Y(N)=Y:D(N)=1:D=D+1:GOSUB41 28IFC=120ORC=223THEND=D+1 29IFC=60ORC=62THEND=D+1:IFXE=XANDYE=YTHENV=1 30POKE20313,X:POKE20312,Y+1:EXEC20302:C=PEEK(20314):IFC=207THENN=N+1:X(N)=X:Y(N)=Y+1:D(N)=40:D=D+1:GOSUB41 31IFC=120ORC=223THEND=D+1 32POKE20313,X-1:POKE20312,Y:EXEC20302:C=PEEK(20314):IFC=207THEN N=N+1:X(N)=X-1:Y(N)=Y:D(N)=-1:D=D+1:GOSUB41 33IFC=120ORC=223THEND=D+1 34IFC=60ORC=62THEND=D+1:IFXE=XANDYE=YTHENV=1 35IFD<2THENPOKE251,108:PRINT@Y*40+X+D(I),"F";:F=1 36NEXT:M=N:IFP=1THEN39 37IFN=0THEN42 38P=1:N=10:GOTO23 39IFN=10THEN42 40P=11:N=0:GOTO23 41PRINT@Y(N)*40+X(N),CHR$(223);:RETURN REM ************************************* REM TEST DE REUSSITE A LA FIN DU CHANTIER 42POKE251,112:IFV=1ANDF=0THEN44 43PRINT@969,"ECHEC DU CHANTIER...";:FORI=1TO2:SOUND148,6:SOUND135,6:NEXT:SOUND127,6:SOUND111,9:FORI=0TO3999:NEXT:GOTO81 44PRINT@969,"CHANTIER TERMINE AVEC SUCCES!";:FORI=1TO2:SOUND102,6:SOUND119,6:NEXT:SOUND135,6:SOUND141,9:FORI=0TO1999:NEXT 45I=2000*L+10*INT(T)*L:PRINT@969,"IL VOUS RAPPORTE";I;"POINTS.";:S=S+I:GOSUB20:FORI=0TO2999:NEXT:L=L+1:IFL=13THEN81 46CLS0:T=320-L*10:GOTO47 REM *********************** REM INITIALISATION CHANTIER REM TABLEAU P MIS A 0 / 20 = S = SAC ; 21 = R = ROBINET 47FORJ=0TO7:FORI=0TO9:P(I,J)=0:NEXT:NEXT:P(8,7)=20:P(9,7)=21 REM AFFICHAGE PANNEAU D'INFORMATIONS 48PRINT@1,"CHANTIER";:PRINT@40,L;:PRINT@121,"TEMPS";:PRINT@161,"RESTANT";:PRINT@200,T;:PRINT@40*8+1,"EN MAINS"; 49PRINT@362,"-----";:PRINT@522,"-----";:PRINT@567,">";:PRINT@607,">";:PRINT@647,">";:PRINT@682,"-----"; 50PRINT@761,"POINTS";:PRINT@800,S;:PRINT@881,"RECORD";:PRINT@920,H; REM AFFICHAGE FOND DU PLAN DE TRAVAIL 51READQ:POKE251,Q:READI:B$=CHR$(I):FORJ=0TO7:FORI=0TO9:Z=J*120+I*3+9:PRINT@Z," ";B$;" ";:Z=Z+40:PRINT@Z,B$;B$;B$;:Z=Z+40 52PRINT@Z," ";B$;" ";:NEXT:NEXT:FORI=8TO9:Z=849+I*3:PRINT@Z," ";:Z=Z+40:PRINT@Z," ";:Z=Z+40:PRINT@Z," ";:NEXT REM AFFICHAGE R ET S EN BAS A DROITE DE L'ECRAN 53POKE251,6:PRINT@917,"R";:POKE251,7:PRINT@914,"S"; REM POSITIONNEMENT ARRIVEE D'EAU 54READC:READA:READB:P(A,B)=16:Z=B*120+A*3+9:ONCGOSUB77,78:X(1)=A*3+9+C:Y(1)=B*3+1 REM POSITIONNEMENT EVACUATION D'EAU 55READC:READA:READB:P(A,B)=17:Z=B*120+A*3+9:ONCGOSUB79,80:XE=A*3+9+C:YE=B*3+1 REM AFFICHAGE DES DEUX PIECES EN STOCK 56POKE251,112:A=RND(15):GOSUB57:W=9:X=0:Y=0:Z=0:SOUND50,8:SOUND72,6:SOUND93,4:SOUND102,4:GOTO3 REM ********************************************************** REM MISE A JOUR DU PANNEAU AFFICHANT LES DEUX PROCHAINS TUYAUX 57B=A:A=RND(15):Z=403:GOSUB60:I=A:GOSUB59 58Z=563:GOSUB60:I=B:GOSUB59:RETURN REM ********************************** REM BRANCHEMENT VERS TUYAU A AFFICHER 59ONIGOTO62,63,64,65,66,67,68,69,70,71,72,73,74,75,76 REM ******************************* REM AFFICHAGE INDIVIDUEL DES TUYAUX REM VIDE 60PRINT@Z+1," ";:PRINT@Z+40," ";:PRINT@Z+81," ";:RETURN REM PAS DE TUYAU 61POKE251,Q:PRINT@Z+1,B$;:PRINT@Z+40,B$;B$;B$;:PRINT@Z+81,B$;:POKE251,112:RETURN REM 1 TUYAU CROIX 62PRINT@Z+1,A$;:PRINT@Z+40,A$;A$;A$;:PRINT@Z+81,A$;:RETURN REM 2 TUYAU VERTICAL 63PRINT@Z+1,A$;:PRINT@Z+41,A$;:PRINT@Z+81,A$;:RETURN REM 3 TUYAU HORIZONTAL 64PRINT@Z+40,A$;A$;A$;:RETURN REM 4 TUYAU FERME =X 65PRINT@Z+40,A$;CHR$(120);:RETURN REM 5 TUYAU FERME X= 66PRINT@Z+41,CHR$(120);A$;:RETURN REM 6 TUYAU FERME X REM = 67PRINT@Z+41,CHR$(120);:PRINT@Z+81,A$;:RETURN REM 7 TUYAU FERME = REM X 68PRINT@Z+1,A$;:PRINT@Z+41,CHR$(120);:RETURN REM 8 TUYAU COUDE = REM == 69PRINT@Z+1,A$;:PRINT@Z+41,A$;A$;:RETURN REM 9 TUYAU COUDE = REM == 70PRINT@Z+1,A$;:PRINT@Z+40,A$;A$;:RETURN REM 10 TUYAU COUDE == REM = 71PRINT@Z+41,A$;A$;:PRINT@Z+81,A$;:RETURN REM 11 TUYAU COUDE == REM = 72PRINT@Z+40,A$;A$;:PRINT@Z+81,A$;:RETURN REM 12 TUYAU EN T = REM === 73PRINT@Z+1,A$;:PRINT@Z+40,A$;A$;A$;:RETURN REM 13 TUYAU EN T === REM = 74PRINT@Z+40,A$;A$;A$;:PRINT@Z+81,A$;:RETURN REM 14 TUYAU EN T = REM == REM = 75PRINT@Z+1,A$;:PRINT@Z+41,A$;A$;:PRINT@Z+81,A$;:RETURN REM 15 TUYAU EN T = REM == REM = 76PRINT@Z+1,A$;:PRINT@Z+40,A$;A$;:PRINT@Z+81,A$;:RETURN REM 16 ARRIVEE D'EAU VERS LA GAUCHE == 78PRINT@Z+41,CHR$(62);A$;:D(1)=1:RETURN REM 17 EVACUATION D'EAU VERS LA DROITE =>X 79PRINT@Z+40,A$;CHR$(62);:C=0:RETURN REM 17 EVACUATION D'EAU VERS LA GAUCHE X<= 80PRINT@Z+41,CHR$(60);A$;:RETURN REM *************************** REM EVALUATION EN FIN DE PARTIE 81CLS0:IFL=13THENPRINT@81,"BRAVO, LES 12 CHANTIERS SONT TERMINES!":GOTO83 82PRINT@89,"LA PARTIE EST TERMINEE" 83PRINT@204,"VOS POINTS:";S:IFS=HTHENPRINT@284,"C'EST LE NOUVEAU RECORD!":GOTO85 84PRINT@284,"LE RECORD EST DE";H 85PRINT@404,"VOTRE EVALUATION FINALE:":FORI=1TO6:ONIGOSUB93,94,95,96,97,98:NEXT:S=S/1000:I=6:IFS>10THENI=5 86IFS>30THENI=4 87IFS>80THENI=3 88IFS>150THENI=2 89IFS>260THENI=1 90POKE251,15:ONIGOSUB93,94,95,96,97,98:POKE251,112:PRINT@811,"PRESSEZ UNE TOUCHE":K$=INKEY$ 91IFINKEY$=""THEN91 92RESTORE:FORI=0TO89:READJ:NEXT:GOTO150 93PRINT@484,"MEILLEUR OUVRIER DE FRANCE";:RETURN 94PRINT@524,"PLOMBIER PROFESSIONNEL";:RETURN 95PRINT@564,"APPRENTI PLOMBIER";:RETURN 96PRINT@604,"BRICOLEUR DU DIMANCHE";:RETURN 97PRINT@644,"DROITIER AVEC DEUX MAINS GAUCHES";:RETURN 98PRINT@684,"BOBO PARISIEN DU TERTIAIRE";:RETURN REM ************************** REM AFFICHAGE DES INSTRUCTIONS 99CLS0:PRINT@10,"INSTRUCTIONS DU JEU" 100PRINT@82,"REALISEZ 12 CHANTIERS DE TUYAUTERIE":PRINT" DE DIFFICULTE CROISSANTE ET DEVENEZ" 105PRINT" LE MEILLEUR PLOMBIER DE FRANCE!":PRINT@242,"SUR CHAQUE CHANTIER, RELIEZ AVEC VOS" 110PRINT" TUYAUX L'ARRIVEE D'EAU AU CONDUIT":PRINT" D'EVACUATION. GARE AUX FUITES D'EAU!" 115PRINT@402,"VOUS POUVEZ POSER UN TUYAU SUR LE":PRINT" CHANTIER PUIS LE REPRENDRE EN MAIN" 120PRINT" PLUS TARD POUR LE POSER AILLEURS,":PRINT" OU BIEN LE REMETTRE DANS LE SAC ";CHR$(115);"." 125PRINT@602,"UNE FOIS LA TUYAUTERIE INSTALLEE,":PRINT" OUVREZ VITE LE ROBINET ";:POKE251,6:PRINT"R";:POKE251,112 130PRINT". MAIS IL":PRINT" S'OUVRIRA AUSSI AUTOMATIQUEMENT UNE":PRINT" FOIS LE TEMPS IMPARTI ECOULE." 135PRINT@804,"TOUCHES UTILISEES: Q,S,U,H,ESPACE":PRINT@929,"APPUYEZ SUR UNE TOUCHE":PRINT@968,"POUR COMMENCER LA PARTIE"; 140IFINKEY$=""THEN140 145GOTO195 REM ***************************** REM AFFICHAGE PRESENTATION DU JEU 150CLS0:POKE251,14:PRINT@251,"PLOMBERIE EN FOLIE";:POKE251,112:PRINT@604,"PRESSEZ I POUR LES INSTRUCTIONS" 155PRINT@523,"APPUYEZ SUR UNE TOUCHE POUR JOUER":PRINT@894,"2024 STEVANR":FORI=0TO39:PRINT@80+I,A$;:PRINT@120+I,A$; 160IFI<5THENPRINT@829+I*40,A$;A$; 165IFI<7THENPRINT@166+I*40,A$;A$; 170IFI<31THENPRINT@720+I,A$;:PRINT@760+I,A$; 175IFI>5THENPRINT@360+I,A$;:PRINT@400+I,A$; 180NEXT 185A=RND(9):K$=INKEY$:IFK$=""THEN185 190IFK$="I"THEN99 195CLS0:S=0:L=1:T=300:GOTO47 REM **************************** REM ROUTINES EN LANGAGE MACHINE: REM - TEST SUR L'APPUI DES TOUCHES Q,S,U,H EN CONTINU (20224TO20300) REM - RECONNAISSANCE D'UN CARACTERE A L'ECRAN (20302TO20314) 500DATA127,79,73,127,79,74,127,79,75,127,79,76,134,253,183,0,2,182,191,255,133,1,38,3,124,79,73,134,247,183 510DATA0,2,182,191,255,133,4,38,3,124,79,74,134,223,183,0,2,182,191,255,133,4,38,3,124,79,75,134,254,183 520DATA0,2,182,191,255,133,2,38,3,124,79,76,57,0,0,0,0,254,79,88,189,212,15,183,79,90,57,0,0,0 REM ******************************* REM INFORMATIONS SUR LES 12 NIVEAUX REM COULEUR, SYMBOLE, SENS ARRIVEE D'EAU, X ARRIVEE D'EAU, Y ARRIVEE D'EAU, SENS EVACUATION D'EAU, X EVACUATION, Y EVACUATION REM - JAUNE, = VERT, % VIOLET, @ ROUGE CLIGNOTANT, O JAUNE, + BLEU CLAIR 600DATA48,45,1,8,3,2,1,4,32,61,2,1,2,1,8,5,80,37,1,6,1,2,3,6,24,64,2,1,1,1,8,6,48,79,1,9,3,1,1,4,96,43,2,0,2,2,8,5 REM * VIOLET, / VERT CLIGNOTANT, # BLEU CLAIR, ! ROUGE, X BLANC, X BLANC CLIGNOTANT 610DATA80,42,1,5,1,1,4,6,40,47,2,0,6,2,8,1,96,35,2,8,4,1,1,3,16,33,1,1,5,2,8,2,112,88,2,5,6,1,4,1,120,88,1,1,6,2,8,1 RUN