' ------------------------------------------------------------------------------ ' ' Philippe Carrez decembre 1988-janvier 1989 ' ' ------------------------------------------------------------------------------ ' SETCOLOR 0,0 CLS HIDEM DEFTEXT 1,0,0,6 TEXT 215,110,"Enzo : - Roberto !" TEXT 215,120,"Roberto: - Yes ?" TEXT 215,130,"Enzo : - Mio palmo !" DIM a%(2000),b%(5000) codei%=VARPTR(a%(0)) samplei%=VARPTR(b%(0)) BLOAD "BASCODE.EXE",codei% starti%=codei%+28 BLOAD "ROBERTO.SPL",samplei% lengthi%=115221 speedi%=4 LPOKE starti%+2,samplei% LPOKE starti%+6,lengthi% LPOKE starti%+10,speedi% DEFTEXT 1,0,0,26 DEFTEXT 1,0,0,26 TEXT 80,70,"Plong‚e Assist‚e par Ordinateur" CALL starti% ALERT 1,"Voulez-vous le mode d'emploi ?",1,"OUI|NON",v IF v=1 ALERT 1,"Inserer la disquette| mode d'emploi",1,"O.K.|Perdue",f IF f<>2 codei%=VARPTR(a%(0)) samplei%=VARPTR(b%(0)) BLOAD "BASCODE.EXE",codei% starti%=codei%+28 BLOAD "INTRO.SPL",samplei% lengthi%=683054 speedi%=2 LPOKE starti%+2,samplei% LPOKE starti%+6,lengthi% LPOKE starti%+10,speedi% DEFTEXT 1,0,0,26 HIDEM PRINT AT(5,10)," Le programme que vous allez utiliser va vous permettre" PRINT "de r‚aliser les calculs de base n‚cessaires au minimum de s‚curit‚ du plongeur." PRINT " Vous allez donc diriger un personnage (… l'aide de la souris) dans une zone" PRINT "situ‚e entre 0 et 70 m sous la surface de l'eau..." PRINT " De chaque cot‚ de l'‚cran, se trouvera une barre verticale, celle de gauche" PRINT "vous permet de consulter les tables de plong‚e, qui vous donneront les paliers" PRINT "… effectuer correspondant … vos actions... Gr…ce … la colonne de droite, vous" PRINT "pourrez indiquer, en y dirigeant votre plongeur, le temps d'arrŠt d‚sir‚ … la" PRINT "profondeur o— vous vous trouverez (les calculs se font en temps r‚el, mais il" PRINT "serait fastidieux d'attendre 40 mn pour faire un palier, c'est pourquoi cette" PRINT "derniŠre option vous sera utile...)." PRINT " Vous aurez ensuite le choix entre laisser l'ordinateur effectuer les calculs" PRINT "seul ou les r‚aliser vous mŠme, avec une 'assistance' et un controle des r‚sul- tats par informatique." PRINT " Divers instruments de mesures que vous d‚couvrirez vous mŠme vous aideront et" PRINT "vous guideront comme lors d'une plong‚e v‚ritable, et ce, en temps r‚el !!!" PRINT " Bonne chance et surtout pas d'imprudence........................" CALL starti% SHOWM ALERT 1,"Remettre la disquette| programme",1,"Merci",f ENDIF ENDIF CLEAR DIM e$(4),aa$(2),bb$(2),tpal(99),ppal(99),paltimer(99),pal(13),palref(4,70,120),obj$(10) obj$(0)="une ancre,|la" obj$(1)="une amphore,|la" obj$(2)="un compresseur,|le" obj$(3)="un bloc,|le" obj$(4)="une h‚lice,|la" @tables RESTORE calcul FOR i%=0 TO 15 READ d% ms$=ms$+MKI$(d%) msc$=msc$+MKI$(32766) NEXT i% calcul$=MKI$(1)+MKI$(1)+MKI$(1)+MKI$(0)+MKI$(1)+msc$+ms$ ms$="" RESTORE souris FOR i%=0 TO 15 READ d% ms$=ms$+MKI$(d%) rien$=rien$+MKI$(0) NEXT i% souri$=MKI$(1)+MKI$(1)+MKI$(1)+MKI$(0)+MKI$(1)+ms$+ms$ nsour$=MKI$(1)+MKI$(1)+MKI$(1)+MKI$(0)+MKI$(1)+rien$+rien$ DEFMOUSE souri$ FOR i=1 TO 2 bb$(i)=MKI$(1)+MKI$(16)+MKI$(1)+MKI$(0)+MKI$(1) NEXT i RESTORE bulle FOR j=1 TO 2 FOR i=1 TO 16 READ a,b bb$(j)=bb$(j)+MKI$(b)+MKI$(a) NEXT i NEXT j FOR i=1 TO 2 aa$(i)=MKI$(1)+MKI$(16)+MKI$(1)+MKI$(0)+MKI$(1) NEXT i RESTORE plongeur FOR j=1 TO 2 FOR i=1 TO 16 READ a,b aa$(j)=aa$(j)+MKI$(b)+MKI$(a) NEXT i NEXT j RESTORE denigros dg$=MKI$(1)+MKI$(16)+MKI$(1)+MKI$(0)+MKI$(1) FOR i=1 TO 16 READ a dg$=dg$+MKI$(a)+MKI$(a) NEXT i DIM ae%(2000),be%(5000) coded%=VARPTR(ae%(0)) sampled%=VARPTR(be%(0)) BLOAD "BASCODE.EXE",coded% startd%=coded%+28 BLOAD "PLOGEON.SPL",sampled% lengthd%=20050 speedd%=2 DIM a%(2000),b%(5000) codep%=VARPTR(a%(0)) samplep%=VARPTR(b%(0)) BLOAD "BASCODE.EXE",codep% startp%=codep%+28 BLOAD "GLASS.SPL",samplep% lengthp%=11689 speedp%=3 DIM as%(2000),bs%(5000) codes%=VARPTR(as%(0)) samples%=VARPTR(bs%(0)) BLOAD "BASCODE.EXE",codes% starts%=codes%+28 BLOAD "SIRENE.SPL",samples% lengths%=2991 speeds%=1 ' ' ******************************boucle principale***************************** ' depart: p=1 v=0 totar=0 stop=0 tmax=0 prmax=0 ecran=0 CLS SHOWM SETCOLOR 0,1 @intro bout=4510 DEFMOUSE nsour$ SETMOUSE 285,39 debu=TIMER heure_depart$=TIME$ tour=debu pallier$="Bravo" testpal=0 FOR i=0 TO 99 ppal(i)=0 tpal(i)=0 paltimer(i)=0 NEXT i FOR i=1 TO 4 pal(i*3)=0 NEXT i GRAPHMODE 1 SPRITE aa$(1) SPRITE aa$(2) IF intr=1 ' DIM a%(2000),b%(5000) ' codei%=VARPTR(a%(0)) ' samplei%=VARPTR(b%(0)) ' BLOAD "BASCODE.EXE",codei% ' starti%=codei%+28 ' BLOAD "SONNE.SPL",samplei% ' lengthi%=1152 ' speedi%=4 ' LPOKE starti%+2,samplei% ' LPOKE starti%+6,lengthi% ' LPOKE starti%+10,speedi% DEFTEXT 1,0,0,26 a$=SPACE$(32066) BLOAD "E4.PI3",VARPTR(a$) BMOVE VARPTR(a$)+34,XBIOS(2),32000 VOID XBIOS(6,L:VARPTR(a$)+2) SGET e$(3) TEXT 175,200,"Zone des 65 metres" a$=SPACE$(32066) BLOAD "E3.PI3",VARPTR(a$) BMOVE VARPTR(a$)+34,XBIOS(2),32000 VOID XBIOS(6,L:VARPTR(a$)+2) SGET e$(2) TEXT 175,200,"Zone des 45 metres" a$=SPACE$(32066) BLOAD "E2.PI3",VARPTR(a$) BMOVE VARPTR(a$)+34,XBIOS(2),32000 VOID XBIOS(6,L:VARPTR(a$)+2) SGET e$(1) TEXT 175,200,"Zone des 25 metres" a$=SPACE$(32066) BLOAD "E1.PI3",VARPTR(a$) BMOVE VARPTR(a$)+34,XBIOS(2),32000 VOID XBIOS(6,L:VARPTR(a$)+2) SGET e$(0) TEXT 175,200,"Zone des 15 metres" PAUSE 70 DEFFILL 1,2,2 ENDIF SPUT e$(0) LPOKE startd%+2,sampled% LPOKE startd%+6,lengthd% LPOKE startd%+10,speedd% CALL startd% ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' WHILE v=0 IF RANDOM(520)=1 @exercices ENDIF DEFTEXT 1,16,0,6 TEXT 42,90,TIME$ consmn=(1+pr/10)*20 bout=bout-consmn*(TIMER+arret-tour)/12000 arret=0 tour=TIMER x=MOUSEX y=MOUSEY pr=INT((y-24)*1.8/32)+ecran*19 IF pr>=prmax prmax=pr prdetail=pr tmax=TIMER ADD totar,stop stop=0 ENDIF IF pr>=13 tmax=TIMER ADD totar,stop stop=0 ENDIF IF x<9 @palier DEFMOUSE nsour$ ELSE IF x>629 @arret DEFMOUSE nsour$ ENDIF ENDIF IF y<=30 DEC ecran IF ecran=0 SPRITE aa$(1) SPRITE aa$(2) SPUT e$(0) SETMOUSE x,350 DEFMOUSE nsour$ ELSE IF ecran=-1 ecran=0 y=31 ALERT 3,"Fin de plong‚e ?",1,"Oui|Non",v IF v=2 v=0 SETMOUSE x,31 DEFMOUSE nsour$ ELSE v=3 fin=TIMER ENDIF ELSE SPRITE aa$(1) SPRITE aa$(2) SPUT e$(ecran) SETMOUSE x,350 ENDIF ENDIF ELSE IF y>=380 y=379 INC ecran IF ecran<>0 SPRITE aa$(1) SPRITE aa$(2) SPUT e$(ecran) SETMOUSE x,55 DEFMOUSE nsour$ ENDIF ENDIF ENDIF SPRITE aa$(2) SPRITE aa$(1),x-25,y+17 SPRITE aa$(2),x-18,y+2 DEFTEXT 1,17,0,6 TEXT 83-9*LEN(STR$(pr)),194," "+STR$(pr) TEXT 87-9*LEN(STR$(INT(bout/25))),344," "+STR$(INT(bout/25)) IF INT(bout/25)<31 DEFTEXT 1,0,0,8 TEXT 46,298,"RESERVE" IF INT(bout/25)<=0 LPOKE starts%+2,samples% LPOKE starts%+6,lengths% LPOKE starts%+10,speeds% FOR sir=1 TO 10 CALL starts% NEXT sir ALERT 1,"Plus une|gorg‚e d'air",1,"Encore|Bye",v ENDIF ENDIF IF pr>70 DEFTEXT 1,0,0,13 TEXT 67,194,"Crac" @casprof LPOKE starts%+2,samples% LPOKE starts%+6,lengths% LPOKE starts%+10,speeds% FOR sir=1 TO 10 CALL starts% NEXT sir ALERT 1,"Un peu trop| profond",1,"Encore|Bye!",v ENDIF WEND ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' IF v=2 EDIT ELSE IF v=1 GOTO depart ENDIF ENDIF ' ***************************************************************************** durplo=totar+tmax-debu durplo=INT(durplo/200/60) @ajpro IF p<>0 FOR i=1 TO p IF paltimer(i)>tmax IF ppal(i)<13 pal(ppal(i))=pal(ppal(i))+tpal(i) ENDIF ENDIF NEXT i vir=durplo/10 IF FRAC(vir)<0.5 durplo=INT(vir)*10+5 ELSE durplo=INT(vir)*10+10 ENDIF IF palref(1,prmax,durplo)>pal(3) pallier$="rate" ENDIF FOR i=2 TO 4 IF palref(i,prmax,durplo)<>pal(i*3) pallier$="rate" ENDIF NEXT i ENDIF IF palref(1,prmax,durplo)=0 IF testpal=1 pallier$="rate" ELSE IF prmax>10 AND prmax<=14 AND durplo>120 pallier$="rate" ELSE IF prmax>15 AND prmax<=20 AND durplo>60 pallier$="rate" ELSE IF prmax>20 AND prmax<=25 AND durplo>40 pallier$="rate" ELSE IF prmax>25 AND prmax<=30 AND durplo>30 pallier$="rate" ELSE IF prmax>30 AND prmax<=35 AND durplo>25 pallier$="rate" ELSE IF prmax>35 AND prmax<=40 AND durplo>10 pallier$="rate" ELSE IF prmax>40 AND durplo>10 pallier$="rate" ENDIF ENDIF IF pallier$="Bravo" ALERT 1,"Vous avez bien effectu‚| vos paliers| Vous etes sauf",1,"Bravo",r ELSE LPOKE starts%+2,samples% LPOKE starts%+6,lengths% LPOKE starts%+10,speeds% FOR sir=1 TO 10 CALL starts% NEXT sir ALERT 1,"Accident de d‚compression !!!",1,"Bye!!",r ENDIF ALERT 2,"Une autre",1,"Oui|Non",v IF v=1 GOTO depart ENDIF END PROCEDURE intro CLS INC intr DEFFILL 1,2,16 PBOX 0,0,640,400 DEFFILL 1,0,1 PBOX 80,80,570,319 GRAPHMODE 2 DEFTEXT 1,16,0,26 TEXT 158,120,"A good day to dive" DEFTEXT 1,17,0,26 TEXT 158,120,"A good day to dive" DEFTEXT 1,16,0,6 TEXT 260,300,"Version 3.0" RBOX 170,135,470,250 RBOX 168,132,472,252 PRINT AT(24,11);""; PRINT " Entrer l'heure S.V.P. " PRINT AT(35,13);"Heure :" PRINT AT(35,14);"minutes :" PRINT AT(35,15);"secondes:" PRINT AT(45,13);""; SETMOUSE 303,219 INPUT hh$ PRINT AT(45,14);""; INPUT mm$ PRINT AT(45,15);""; INPUT ss$ hh$=hh$+":"+mm$+":"+ss$ SETTIME hh$,"" GRAPHMODE 1 RETURN PROCEDURE casprof LPOKE startp%+2,samplep% LPOKE startp%+6,lengthp% LPOKE startp%+10,speedp% CALL startp% COLOR 0 DRAW 23,175 TO 67,162 TO 75,184 TO 114,168 TO 129,198 TO 131,211 TO 129,210 DRAW 23,175 TO 68,164 TO 77,187 TO 114,168 TO 129,200 TO 131,210 TO 129,210 DRAW 23,175 TO 68,163 TO 76,185 TO 114,168 COLOR 1 FOR j=1 TO 20 DEFTEXT 1,16,0,6 TEXT 42,90,TIME$ FOR i=175 TO 16 STEP -1 SPRITE bb$(1),23,i SPRITE bb$(2),129,i+35 SPRITE bb$(2),67,i-13 SPRITE bb$(1),75,i+9 NEXT i SPRITE bb$(1) SPRITE bb$(2) PAUSE RND*10 NEXT j RETURN PROCEDURE arret var=1 DEFMOUSE souri$ SPRITE aa$(1) SPRITE aa$(2) af$="1 minute <=======================> 75 minutes" r$=" " @curseur("Temps d'arret:",af$,r$,1,20,*arr%) tcal=TIMER @calcul IF var=1 INC p IF p=100 p=99 ENDIF arret=arr%*200*60 avan=arr% stop=arret+stop paltimer(p)=TIMER tpal(p)=avan ppal(p)=pr DEFMOUSE nsour$ rg=VAL(MID$(TIME$,4,2))+avan IF rg>=60 rg=rg-60 hr=VAL(LEFT$(TIME$,2))+1 ELSE hr=VAL(LEFT$(TIME$,2)) ENDIF IF hr<10 hr$="0"+STR$(hr) ELSE hr$=STR$(hr) ENDIF IF rg<10 rg$="0"+STR$(rg) ELSE rg$=STR$(rg) ENDIF heure$=hr$+":"+rg$+":00" SETTIME heure$,"" SETMOUSE 600,y ELSE SETTIME tcc$,"" ENDIF RETURN PROCEDURE curseur(m1$,m2$,m3$,tps_inf%,tps_sup%,v%) LOCAL bg$,sl%,x,y,x1,y1,k GRAPHMODE 1 DEFFILL 1,0,0 DEFMOUSE souri$ DEFLINE 1,2,0,0 DEFTEXT 1,1,0,13 GET 50,140,590,234,bg$ FOR i=1 TO 5 PRINT AT(20,9+i);m3$ NEXT i TEXT 300-INT(LEN(m1$)/2)*10,157,m1$ TEXT 160,214,m2$ DEFFILL 1,2,4 DEFFILL ,0,0 PBOX 157,171,522,189 BOX 156,173,521,187 GRAPHMODE 3 REPEAT BOX 310,175,316,185 REPEAT UNTIL MOUSEK BOX 310,175,316,185 UNTIL MOUSEK REPEAT MOUSE x,y,k y=185 IF x>518 x=518 ENDIF IF x<165 x=165 ENDIF PBOX x-6,y-10,x,y sl%=INT(x-160)/(95/tps_sup%)+tps_inf GRAPHMODE 1 PRINT AT(46,10);sl%;" mn "; GRAPHMODE 3 REPEAT MOUSE x1,y1,k1 UNTIL x<>x1 OR k=0 PBOX x-6,y-10,x,y UNTIL k=0 *v%=sl% PUT 50,140,bg$ GRAPHMODE 1 DEFFILL 1,2,2 RETURN PROCEDURE tables SETCOLOR 0,0 CLS HIDEM DEFFILL 1,2,16 PBOX 0,0,640,400 SETCOLOR 0,1,1,1 DEFFILL 0,1 BOX 40,130,600,245 PBOX 55,145,585,230 SETCOLOR 0,0 DEFTEXT 1,0,0,26 PAUSE 60 TEXT 75,200," Ph. K-REZ P R E S E N T E " OPEN "i",#1,"tables16" FOR t=95 TO 120 STEP 5 INPUT #1,a palref(1,16,t)=a NEXT t CLOSE #1 OPEN "i",#1,"tables18" FOR t=80 TO 120 STEP 5 INPUT #1,a palref(1,18,t)=a NEXT t CLOSE #1 OPEN "i",#1,"tables20" FOR t=65 TO 90 STEP 5 INPUT #1,a palref(1,20,t)=a NEXT t CLOSE #1 OPEN "i",#1,"tables22" FOR t=55 TO 90 STEP 5 INPUT #1,a palref(1,22,t)=a NEXT t CLOSE #1 OPEN "i",#1,"tables24" FOR t=50 TO 90 STEP 5 INPUT #1,a palref(1,24,t)=a NEXT t CLOSE #1 OPEN "i",#1,"tables25" FOR t=45 TO 90 STEP 5 INPUT #1,a palref(1,25,t)=a NEXT t CLOSE #1 OPEN "i",#1,"tables26" FOR t=45 TO 90 STEP 5 INPUT #1,a palref(1,26,t)=a NEXT t CLOSE #1 OPEN "i",#1,"tables28" FOR t=40 TO 90 STEP 5 FOR p=1 TO 2 INPUT #1,a palref(p,28,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables30" FOR t=35 TO 70 STEP 5 FOR p=1 TO 2 INPUT #1,a palref(p,30,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables32" FOR t=35 TO 70 STEP 5 FOR p=1 TO 2 INPUT #1,a palref(p,32,t)=a NEXT p NEXT t CLOSE #1 CLS DEFTEXT 1,0,0,26 TEXT 14,183," It's a good day to di e ..." DEFTEXT 1,0,0,19 TEXT 38,210,"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" PAUSE 50 FOR te=13 TO 26 DEFTEXT 1,0,0,te TEXT 476,183,"v" PAUSE 6 NEXT te OPEN "i",#1,"tables34" FOR t=30 TO 60 STEP 5 FOR p=1 TO 2 INPUT #1,a palref(p,34,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables35" FOR t=30 TO 60 STEP 5 FOR p=1 TO 2 INPUT #1,a palref(p,35,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables36" FOR t=30 TO 60 STEP 5 FOR p=1 TO 2 INPUT #1,a palref(p,36,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables38" FOR t=25 TO 60 STEP 5 FOR p=1 TO 2 INPUT #1,a palref(p,38,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables40" FOR t=15 TO 60 STEP 5 FOR p=1 TO 3 INPUT #1,a palref(p,40,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables42" FOR t=15 TO 40 STEP 5 FOR p=1 TO 2 INPUT #1,a palref(p,42,t)=a NEXT p NEXT t CLOSE #1 ' les tables 45 et 48 sont inversees aux fichiers (error is human) ' c'est pas grave, suffit de lire 45=48 et vice versa OPEN "i",#1,"tables48" FOR t=10 TO 40 STEP 5 FOR p=1 TO 3 INPUT #1,a palref(p,45,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables45" FOR t=10 TO 40 STEP 5 FOR p=1 TO 3 INPUT #1,a palref(p,48,t)=a NEXT p NEXT t CLOSE #1 CLS DEFFILL 1,5 PBOX 170,70,470,290 PRINT AT(32,8);"Version 3.0 (1989) " PRINT AT(32,10);" Attention ! " PRINT AT(32,12);" Cette version ne " PRINT AT(32,13);" tient pas compte " PRINT AT(32,14);" de la vitesse de " PRINT AT(32,15);" remont‚e maximum " PRINT AT(32,16);" de s‚curit‚ !... " OPEN "i",#1,"tables50" FOR t=10 TO 40 STEP 5 FOR p=1 TO 3 INPUT #1,a palref(p,50,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables52" FOR t=10 TO 40 STEP 5 FOR p=1 TO 3 INPUT #1,a palref(p,52,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables55" FOR t=10 TO 40 STEP 5 FOR p=1 TO 3 INPUT #1,a palref(p,55,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables58" FOR t=10 TO 40 STEP 5 FOR p=1 TO 4 INPUT #1,a palref(p,58,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables60" FOR t=5 TO 40 STEP 5 FOR p=1 TO 4 INPUT #1,a palref(p,60,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables62" FOR t=5 TO 30 STEP 5 FOR p=1 TO 4 INPUT #1,a palref(p,62,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables65" FOR t=5 TO 30 STEP 5 FOR p=1 TO 4 INPUT #1,a palref(p,65,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables68" FOR t=5 TO 30 STEP 5 FOR p=1 TO 4 INPUT #1,a palref(p,68,t)=a NEXT p NEXT t CLOSE #1 OPEN "i",#1,"tables70" FOR t=5 TO 30 STEP 5 FOR p=1 TO 4 INPUT #1,a palref(p,70,t)=a NEXT p NEXT t CLOSE #1 RETURN PROCEDURE calcul ALERT 1," Voulez-vous faire|vous meme les calculs ?",3,"Oui|Non",vir IF vir=1 tcc$=TIME$ ALERT 0,"NB: Tous les calculs | seront arrondis … |l'unit‚ infŠrieure !",1,"Suite ",ri CLS DEFMOUSE calcul$ SHOWM DEFTEXT 1,17,0,24 TEXT 130,30,"CALCULS" DEFTEXT 1,2,0,24 TEXT 485,30,"Notes" DRAW 397,0 TO 397,399 PRINT PRINT PRINT PRINT PRINT "Vous venez de d‚cider de faire un arret" PRINT "de ";STR$(arr%);" minutes … ";STR$(pr);" metres de profondeur." PRINT PRINT "Sachant que vous avez sur le dos un bi-bloc" PRINT "de 25 litres de contenance … 1 bar de pression." PRINT "Que d'autre part, la pression actuelle donn‚e" PRINT "par le manometre est ";STR$(INT(bout/25));" bars." PRINT PRINT "Combien d'aprŠs vous restera-t-il de pression" PRINT "dans la bouteille … la fin de cette pause ?" PRINT CHR$(27);"p";"R‚ponse :";CHR$(27);"q"; INPUT pf$ IF pf$=STR$(INT((INT(bout/25)*25-20*(pr/10+1)*arr%)/25)) PRINT PRINT "O.K. pas de problŠme..." WHILE INKEY$="" WEND PAUSE 10 ELSE PRINT PRINT CHR$(27);"p";"Faux, r‚capitulons ensemble...";CHR$(27);"q" WHILE INKEY$="" WEND PAUSE 12 PRINT AT(51,4);CHR$(27);"p";"Arret de : ";STR$(arr%);" mn " PRINT AT(51,6);"Profondeur : ";STR$(pr);" m ";CHR$(27);"q" FOR i=1 TO 6 PRINT AT(1,i+11);" " NEXT i PRINT AT(1,12);"" PRINT "Calculons d'abord ce qui reste dans" PRINT "la bouteille en volume d'air comprim‚." PRINT PRINT "Ce qui veut dire: 25 litres … ";STR$(INT(bout/25));" bars" PRINT "donnerait quel volume … 1 bar de pression ?" PRINT CHR$(27);"p";"Volume =";CHR$(27);"q"; INPUT vpr$ IF vpr$=STR$(INT(bout/25)*25) PRINT "O.K. Continuons..." WHILE INKEY$="" WEND PAUSE 10 ELSE PRINT "Non ..." PRINT "Vous devez utiliser la loi P.V=P'.V'" PRINT "c'est … dire ici: ";STR$(INT(bout/25));" x 25 = 1 x V'" PRINT PRINT CHR$(27);"p";"Ce qui donne V'= ";CHR$(27);"q"; INPUT vpr$ IF vpr$=STR$(INT(bout/25)*25) PRINT PRINT "O.K. Continuons"; WHILE INKEY$="" WEND PAUSE 12 ELSE PRINT "Non ,il fallait trouver: (";STR$(INT(bout/25));" x 25)/1 =";INT(bout/25)*25 WHILE INKEY$="" WEND PAUSE 12 ENDIF ENDIF PRINT AT(51,8);CHR$(27);"p";"Volume avant arret : ";STR$(INT(bout/25)*25);" l";CHR$(27);"q" FOR i=1 TO 18 PRINT AT(1,i+6);" " NEXT i PRINT AT(1,7);"" PRINT "Nous allons maintenant calculer le" PRINT "volume qui va etre respir‚ pendant l'arret." PRINT PRINT "En rappelant que votre consommation en" PRINT "surface est de 20 litres d'air … la minute," PRINT "quelle est votre consommation actuelle ?" PRINT CHR$(27);"p";"D'aprŠs vous: ";CHR$(27);"q"; INPUT cm$ IF cm$=STR$((pr/10+1)*20) PRINT "O.K. On continue..." WHILE INKEY$="" WEND PAUSE 10 ELSE PRINT PRINT CHR$(27);"p";"Faux, r‚capitulons ensemble...";CHR$(27);"q" WHILE INKEY$="" WEND PAUSE 10 FOR i=1 TO 11 PRINT AT(1,i+11);" "; NEXT i PRINT AT(1,10);"" PRINT "Il faut d'abord calculer la pression absolue" PRINT "… ";STR$(pr);" metres de profondeur..." PRINT CHR$(27);"p";"Donnez cette pression S.V.P. :";CHR$(27);"q"; INPUT pp$ IF pp$=STR$(pr/10+1) PRINT PRINT "Pas de problŠme ..." WHILE INKEY$="" WEND PAUSE 10 ELSE PRINT PRINT "Non ... Il faut chercher en premier lieu" PRINT "la pression relative, qui est de 1 bar" PRINT "suppl‚mentaire par tranche de 10 metres." PRINT CHR$(27);"p";"A ";STR$(pr);" metres nous avons (en bars): ";CHR$(27);"q"; INPUT pp$ IF pp$=STR$(pr/10) PRINT PRINT "O.K. la suite maintenant..." WHILE INKEY$="" WEND PAUSE 10 ELSE PRINT PRINT "Non, il faut diviser la profondeur par 10," PRINT "c'est … dire ici : ";STR$(pr);"/10 = ";pr/10;" bars." WHILE INKEY$="" WEND PAUSE 10 ENDIF PRINT AT(51,10);CHR$(27);"p";"Pression relative : ";STR$(pr/10);" bars";CHR$(27);"q" FOR i=1 TO 11 PRINT AT(1,i+10);" "; NEXT i PRINT AT(1,10);"" PRINT "Connaissant la pression relative, il est" PRINT "maintenant facile de d‚rterminer la" PRINT "pression absolue qui regne … ";STR$(pr);" metres" PRINT "de fond." PRINT CHR$(27);"p";"Pression absolue= ";CHR$(27);"q"; INPUT pp$ IF pp$=STR$(pr/10+1) PRINT PRINT "O.K. On continue..." WHILE INKEY$="" WEND PAUSE 10 ELSE PRINT PRINT "Faux, il suffit simplement d'ajouter" PRINT "la pression atmosphŠrique (… la surface)," PRINT "… la pression relative d‚j… trouv‚e." PRINT CHR$(27);"p";"Pression absolue =";CHR$(27);"q"; INPUT pp$ IF pp$=STR$(pr/10+1) PRINT PRINT "O.K. pas de problŠme..." WHILE INKEY$="" WEND PAUSE 10 ELSE PRINT PRINT "Non, l'op‚ration ‚tait: ";STR$(pr/10);" bars+1 bar =";pr/10+1;" bars" WHILE INKEY$="" WEND PAUSE 10 ENDIF ENDIF ENDIF PRINT AT(51,12);CHR$(27);"p";"Pression absolue : ";pr/10+1;" bars";CHR$(27);"q" FOR i=1 TO 12 PRINT AT(1,i+10);" "; NEXT i PRINT AT(1,10);"" PRINT "Vous consommez 20 litres d'air … la" PRINT "minute en surface, quelle est donc" PRINT "votre consommation … ";STR$(pr);" metres ?" PRINT CHR$(27);"p";"R‚ponse :";CHR$(27);"q"; INPUT cm$ IF cm$=STR$((pr/10+1)*20) PRINT "All right that's good !!" WHILE INKEY$="" WEND PAUSE 10 ELSE PRINT "NAN ! il faut calculer combien" PRINT "repr‚senteraient les 20 litres" PRINT "d'air comprim‚ que vous respirez" PRINT "actuellement, si vous ‚tiez en" PRINT "surface (air non comprim‚)." PRINT "C'est … dire en utilisant la loi" PRINT "P.V = P'.V', soit ici ";STR$(pr/10+1);" x 20 = 1 x V'" PRINT "(20 l … ";STR$(pr/10+1);" bars = combien de litres … 1 bar)." PRINT CHR$(27);"p";"R‚ponse :";CHR$(27);"q"; INPUT cm$ IF cm$=STR$((pr/10+1)*20) PRINT "Tout va bien ..." WHILE INKEY$="" WEND PAUSE 10 ELSE PRINT "Non, il fallait trouver: (";STR$((pr/10)+1);" x 20)/1 =";STR$((pr/10+1)*20); WHILE INKEY$="" WEND PAUSE 10 ENDIF ENDIF ENDIF PRINT AT(51,14);CHR$(27);"p";"Consommation / mn : ";(pr/10+1)*20;" l/mn";CHR$(27);"q" FOR i=1 TO 15 PRINT AT(1,i+10);" "; NEXT i PRINT AT(1,10);"" PRINT "Il est ais‚ de calculer combien" PRINT "d'air il restera en fin d'arret" PRINT "dans le bloc..." PRINT CHR$(27);"p";"D'aprŠs vous :";CHR$(27);"q"; INPUT ra$ IF ra$=STR$(INT(bout/25)*25-20*(pr/10+1)*arr%) PRINT "Yeah c'est ‡a ..." WHILE INKEY$="" WEND PAUSE 10 ELSE PRINT "OH ! Il suffisait de retirer la" PRINT "quantit‚ d'air respir‚ … celle" PRINT "contenue par la bouteille ..." PRINT "D'abord, combien respire-t-on d'air en" PRINT STR$(arr%);" minutes si l'on respire ";20*(pr/10+1);" l en 1 minute ?" PRINT CHR$(27);"p";"De tete, ‡a donne:";CHR$(27);"q"; INPUT ra$ IF ra$=STR$(20*(pr/10+1)*arr%) PRINT "O.K. c'est bon !" WHILE INKEY$="" WEND PAUSE 10 ELSE PRINT "Mais non, simplement ";STR$(20*(pr/10+1));" x ";STR$(arr%);" = ";20*(pr/10+1)*arr%;" l " WHILE INKEY$="" WEND PAUSE 10 ENDIF PRINT AT(51,16);CHR$(27);"p";"Consommation totale : ";STR$((20*(pr/10+1))*arr%);" l ";CHR$(27);"q" FOR i=1 TO 15 PRINT AT(1,i+10);" "; NEXT i PRINT AT(1,10);"" PRINT "Reste maintenant … retirer cette quantit‚" PRINT "… celle que contient le bloc avant l'arret" PRINT "Soit :";STR$(INT(bout/25)*25);" - ";STR$((pr/10+1)*20*arr%);" = ";INT(bout/25)*25-(pr/10+1)*20*arr%;" litres" WHILE INKEY$="" WEND PAUSE 10 ENDIF PRINT AT(51,18);CHR$(27);"p";"Volume aprŠs arret : ";STR$(INT(bout/25)*25-20*arr%*(pr/10+1));" l ";CHR$(27);"q" FOR i=1 TO 15 PRINT AT(1,i+10);" "; NEXT i PRINT AT(1,10);"" PRINT "Sachant maintenant qu'il reste ";STR$(INT(bout/25)*25-(pr/10+1)*20*arr%);" litres " PRINT "d'air dans la bouteille, vous pouvez me donner" PRINT "la pression qu'indiquera le manometre en fin" PRINT "d'arret ..." PRINT CHR$(27);"p";"R‚ponse :";CHR$(27);"q"; INPUT pfi$ IF pfi$=STR$(INT((INT(bout/25)*25-20*arr%*(pr/10+1))/25)) PRINT "Et oui...." WHILE INKEY$="" WEND PAUSE 10 ELSE PRINT "Et non ... Il fallait encore utiliser la" PRINT "relation P.V = P'.V', pour trouver quelle" PRINT "pression est necessaire, pour comprimer" PRINT "le volume calcul‚, aux 25 litres que peut" PRINT "contenir le bi-bloc..." PRINT "1 x ";STR$(INT(bout/25)*25-20*arr%*(pr/10+1));" = P' x 25 , ou encore:" PRINT STR$(INT(bout/25)*25-20*arr%*(pr/10+1));" litres … 1 bar donne 25 litres … P' bars." PRINT CHR$(27);"p";"Soit P'=";CHR$(27);"q"; INPUT pfi$ IF pfi$=STR$(INT((INT(bout/25)*25-20*arr%*(pr/10+1))/25)) PRINT "Et oui...." WHILE INKEY$="" WEND PAUSE 10 ELSE PRINT "Non :"; PRINT "P'= (";STR$(INT(bout/25)*25-20*arr%*(pr/10+1));" x 1)/25 =";INT((INT(bout/25)*25-20*arr%*(pr/10+1))/25) ENDIF ENDIF ENDIF PRINT AT(51,20);CHR$(27);"p";"Pression aprŠs arret:";STR$(INT((INT(bout/25)*25-20*arr%*(pr/10+1))/25));" bars";CHR$(27);"q" WHILE INKEY$="" WEND PAUSE 10 DEFMOUSE nsour$ tca$="Vous avez mis "+STR$(INT((TIMER-tcal)/200))+" secondes|pour faire vos calculs|ce temps va etre rajout‚|… celui de votre arret." ALERT 1,tca$,1,"O.K.",d ALERT 3,"Validez-vous cet arret ?",2,"Oui|Non",var SPRITE aa$(1) SPRITE aa$(2) SPUT e$(ecran) SETMOUSE x,55 DEFMOUSE nsour$ x=150 SETMOUSE x,y ELSE var=1 ENDIF DEFMOUSE nsour$ RETURN PROCEDURE palier ALERT 3,"Voulez-vous consulter|les tables de plong‚e ?",1,"Oui|Non",var IF var=1 durplo=totar+tmax-debu durplo=INT(durplo/200/60) vir=durplo/10 IF FRAC(vir)<0.5 durplo=INT(vir)*10+5 ELSE durplo=INT(vir)*10+10 ENDIF @ajpro ri$="" ar$="Profondeur maxi: "+STR$(prdetail)+" m|Heure de d‚part: "+heure_depart$+"|" drap=0 FOR i=1 TO 4 IF palref(i,prmax,durplo)<>0 drap=1 testpal=1 ri$=ri$+"Palier de "+STR$(palref(i,prmax,durplo))+" minutes … "+STR$(i*3)+" m|" ENDIF NEXT i IF drap<>1 ri$="Aucun palier pr‚vu pour| ce temps de plong‚e |… cette profondeur..." ENDIF ALERT 0,ri$,1,"O.K!|Details",va IF va=2 ALERT 0,ar$,1,"O.K!",var ENDIF ENDIF DEFMOUSE nsour$ x=80 SETMOUSE x,y RETURN PROCEDURE ajpro IF prmax>16 AND prmax<=18 prmax=18 ENDIF IF prmax>18 AND prmax<=20 prmax=20 ENDIF IF prmax>20 AND prmax<=22 prmax=22 ENDIF IF prmax>22 AND prmax<=24 prmax=24 ENDIF IF prmax>26 AND prmax<=28 prmax=28 ENDIF IF prmax>28 AND prmax<=30 prmax=30 ENDIF IF prmax>30 AND prmax<=32 prmax=32 ENDIF IF prmax>32 AND prmax<=34 prmax=34 ENDIF IF prmax>36 AND prmax<=38 prmax=38 ENDIF IF prmax>38 AND prmax<=40 prmax=40 ENDIF IF prmax>40 AND prmax<=42 prmax=42 ENDIF IF prmax>42 AND prmax<=45 prmax=45 ENDIF IF prmax>45 AND prmax<=48 prmax=48 ENDIF IF prmax>48 AND prmax<=50 prmax=50 ENDIF IF prmax>50 AND prmax<=52 prmax=52 ENDIF IF prmax>52 AND prmax<=55 prmax=55 ENDIF IF prmax>55 AND prmax<=58 prmax=58 ENDIF IF prmax>58 AND prmax<=60 prmax=60 ENDIF IF prmax>60 AND prmax<=62 prmax=62 ENDIF IF prmax>62 AND prmax<=65 prmax=65 ENDIF IF prmax>65 AND prmax<=68 prmax=68 ENDIF IF prmax>68 AND prmax<=70 prmax=70 ENDIF IF prmax>70 AND prmax<=72 prmax=72 ENDIF IF prmax>72 AND prmax<=75 prmax=75 ENDIF IF prmax>75 AND prmax<=78 prmax=78 ENDIF IF prmax>78 AND prmax<=80 prmax=80 ENDIF IF prmax>80 AND prmax<=85 prmax=85 ENDIF RETURN PROCEDURE exercices x%=MOUSEX y%=MOUSEY trou$=obj$(RANDOM(5)) trou$="Vous trouvez "+trou$+" remontez-vous ?" ALERT 1,trou$,2,"Oui|Non",vap IF vap=1 CLS SPUT e$(ecran) ENDIF DEFMOUSE nsour$ SETMOUSE x%,y% RETURN plongeur: DATA 94,255,63,255,63,127,63,127,126,2047,1020,16383,8184,32766,15808,32764,13184,32736,8960,32704,1536,32640,3584,7936,7168,35512,15360,32256,14336,32256,6144,31744 DATA 1024,3192,20792,62334,124,2047,34658,53247,2260,8191,1122,4095,764,2047,340,1022,636,2046,632,4092,1272,4093,1265,8187,2547,8191,2558,16383,4668,16382,5056,16380 bulle: DATA 4,3854,3840,8068,4224,16320,8256,28896,8256,28896,8256,28896,8256,28896,4224,16320,3840,8088,24,3900,36,6270,6180,15486,9240,32316,9216,32280,6144,15362,2,6151 DATA 3844,4224,8256,16416,16416,16416,16416,16416,16416,8256,4224,3854,17,17,17,14 DATA 3844,4224,8256,16416,16416,16416,16416,16416,16416,8256,4224,3854,17,17,17,14 denigros: DATA 992,1040,2600,2184,2184,3048,1584,1040,14350,8322,18569,20645,20613,20613,20613,20613 calcul: DATA 32766,32766,24582,24582,32766,27326,32758,32766,30070,32766,30070,32766,30070,32766,30198,32766 souris: DATA 26112,59648,61568,14464,24448,36800,36832,20464,16376,2040,1020,508,254,62,15,3