10 ' =-=-=-=-=-=-=-=-=-=-=-=-=
20 ' = A pi D = 30 ' =-----------------------= 40 ' = auteur: Andre DAUMAIL = 50 ' ------------------------- 60 ' 70 ' (C) 1985 AMSTRAD Magazine et l'auteur 80 ' 90 KEY DEF 0,1,43:KEY DEF 2,1,45:KEY 139,"C"+CHR$(13):KEY 138,"S"+CHR$(13) 100 ' 110 '====> le son <==== 120 ' 130 ENV 1,1,15,1,1,0,1,1,0,1,12,-1,8,2,-1,20 140 ENT -1,1,1,3,1,-1,3,1,0,1,1,1,3,1,-1,3 150 DATA 478,30,0,5,358,30,0,5,358,35,319,10,358,10,379,10,358,10,319,30,0,5,426,30,319,60 160 DATA 358,15,0,5,379,30,0,5,379,15,0,5,213,15,0,5,239,60 170 DATA 379,15,0,5,358,30,0,5,358,15,0,5,213,15,0,5,239,60 180 DATA 478,30,0,5,358,30,0,5,358,35,319,10,358,10,379,10,358,10,319,30,0,5,426,30,319,60 190 DATA 358,15,0,5,379,30,0,5,379,15,0,5,213,15,0,5,239,60,379,15,0,5,358,30,0,5,284,30,0,5,358,100,-1,-1 200 ' 210 '====> presentation <==== 220 ' 230 GOSUB 2590 240 MODE 0 250 PEN 1:LOCATE 8,3:PRINT "avec" 260 PEN 3:LOCATE 1,6:PRINT"A":LOCATE 4,12:PRINT"t":LOCATE 7,18:PRINT"D":PEN 2:LOCATE 2,8:PRINT"m":LOCATE 5,14:PRINT"r":PEN 4:LOCATE 3,10:PRINT"s":LOCATE 6,16:PRINT"a" 270 FOR I=1 TO 13:READ VOL,PER:SOUND 1,VOL,PER,0,1,1:SOUND 2,VOL/2,PER,0,1,1:SOUND 4,VOL/4,PER,0,1,1:NEXT 280 LOCATE 8,3:PRINT SPACE$(4):FOR I=8 TO 16 STEP 2:LOCATE 1,I:PRINT SPACE$(7) 290 READ VOL,PER:SOUND 2,VOL*2,PER,0,1,1:SOUND 1,0,PER,0,1,1:SOUND 4,0,PER,0,1,1 300 NEXT 310 FOR I=5 TO 158 STEP 5:TAG:MOVE I,318:PRINT" A";:MOVE 190,I+116:PRINT"D";:MOVE 190,I+100:PRINT" "; 320 IF I>138 THEN GOTO 340 330 IF I<50 AND I/10=INT(I/10) THEN READ VOL,PER:SOUND 2,VOL*2,PER,0,1,1:SOUND 1,0,PER,0,1,1:SOUND 4,0,PER,0,1,1 ELSE IF I/10=INT(I/10) THEN READ VOL,PER:SOUND 2,0,PER,0,1,1:SOUND 1,VOL/2,PER,0,1,1:SOUND 4,0,PER,0,1,1 340 NEXT:TAGOFF 350 PEN 2:LOCATE 8,6:PRINT"ndre":LOCATE 8,9:PRINT"aumail" 360 LOCATE 8,19:PRINT"propose" 370 FOR I=1 TO 6:READ VOL,PER:SOUND 1,VOL,PER,0,1,1:SOUND 2,VOL/2,PER,0,1,1:SOUND 4,VOL/4,PER,0,1,1:NEXT 380 GOTO 430 390 ' 400 ' ====> le menu <==== 410 ' 420 RESTORE 180 430 CLS:INK 2,9:PEN 2:LOCATE 3,9:PRINT"CALCULETTRE" 440 LOCATE 7,12:PRINT"et":LOCATE 12,15:PRINT"PYRAMIDE" 450 FOR I=1 TO 7:READ VOL,PER:SOUND 1,VOL,PER,0,1,1:SOUND 2,VOL/2,PER,0,1,1:SOUND 4,VOL/4,PER,0,1,1:NEXT 460 INK 3,3:PEN 3:LOCATE 3,9:PRINT"C":LOCATE 7,12:PRINT"et":LOCATE 12,15:PRINT"P" 470 FOR I=1 TO 5:READ VOL,PER:SOUND 1,VOL,PER,0,1,1:SOUND 2,VOL/2,PER,0,1,1:SOUND 4,VOL/4,PER,0,1,1:NEXT 480 PEN 2:LOCATE 3,9:PRINT"C":LOCATE 7,12:PRINT" ":LOCATE 12,15:PRINT"P" 490 TAG:PEN 3 500 FOR I=242 TO 48 STEP -6:MOVE 64,I:PRINT" ";:MOVE 64,I-6:PRINT"C"; 510 IF I/10=INT(I/10) THEN READ VOL,PER:SOUND 1,VOL,PER,0,1,1:SOUND 2,VOL/2,PER,0,1,1:SOUND 4,VOL/4,PER,0,1,1 520 IF I<162 THEN MOVE 352,I:PRINT" ";:MOVE 352,I-6:PRINT"P"; 530 NEXT 540 TAGOFF 550 LOCATE 3,23:PRINT"C ou P" 560 READ VOL,PER 570 IF VOL<>-1 THEN SOUND 1,VOL,PER,0,1,1:SOUND 2,VOL/2,PER,0,1,1:SOUND 4,VOL/4,PER,0,1,1:GOTO 560 580 PEN 2:LOCATE 2,25:PRINT"VOTRE CHOIX" 590 A$=" ":WHILE A$<>"C" AND A$<>"P":A$=UPPER$(INKEY$):WEND 600 IF A$="C" THEN GOTO 640 ELSE 1510 610 ' 620 ' --------------------------> C A L C U L E T T R E 630 ' 640 CLEAR:MODE 0 650 INK 0,4:INK 1,26:BORDER 8:PAPER 0:PEN 1 660 LOCATE 4,3:PRINT"* CALCULETTRE *" 670 LOCATE 2,12:PRINT"NOMBRE DE CHIFFRES" 680 PRINT:PRINT TAB(2)" de 2 a 5" 690 LOCATE 2,24:PRINT"6 = retour au menu" 700 R$=" ":WHILE R$<"2" OR R$>"6":R$=INKEY$:WEND:RCH=VAL(R$) 710 IF RCH=6 THEN GOSUB 2590:GOTO 420 720 FOR G=0 TO 9 730 K(G)=INT(RND(1)*26)+1 740 FOR I=0 TO G-1 750 IF K(I)=K(G) THEN I=G-1:G=G-1 760 NEXT I 770 C(G)=INT(K(G)/2)+2 780 INK C(G),G+16 790 NEXT G 800 X=1 810 O(RCH)=INT(RND(1)*10):IF O(RCH)=0 THEN 810 820 FOR I=1 TO RCH-1 830 O(I)=INT(RND(1)*10) 840 Q=(O(I)*X):O=O+Q:X=X*10 850 NEXT 860 O=O+O(RCH)*10^(RCH-1) 870 P(RCH)=INT(RND(1)*10):IF P(RCH)=0 THEN 870 880 X=1 890 FOR I=1 TO RCH-1 900 P(I)=INT(RND(1)*10) 910 Q=(P(I)*X):P=P+Q:X=X*10 920 NEXT 930 P=P+P(RCH)*10^(RCH-1) 940 S=INT(RND(1)*2)+1 950 IF S=2 AND O<P THEN N=O:O=P:P=N:PE=2 ELSE PE=0 960 IF S=1 THEN R=P+O ELSE R=O-P 970 IF S=1 THEN S$="+ " ELSE S$="- " 980 CLS 990 LOCATE 2,2:PEN 1:PRINT"OPERATION" 1000 LOCATE 8-RCH,5+PE:FOR I=RCH TO 1 STEP -1:PEN C(O(I)):PRINT CHR$(64+K(O(I)));:NEXT 1010 LOCATE 6-RCH,7:PEN 1:PRINT S$:LOCATE 8-RCH,7-PE:FOR I=RCH TO 1 STEP -1:PEN C(P(I)):PRINT CHR$(64+K(P(I)));:NEXT 1020 LOCATE 3,9:PEN 1:PRINT "------" 1030 R$=STR$(R):LOCATE 9-LEN(R$),11:FOR I=2 TO LEN(R$):R1(I)=VAL(MID$(R$,I,1)):PEN C(R1(I)):PRINT CHR$(64+K(R1(I)));:NEXT 1040 GOSUB 1190 1050 LOCATE 1,2:PEN 1:PRINT TAB(12)"SOLUTION" 1060 LOCATE 14,5:PEN 2:PRINT USING "#####";O 1070 LOCATE 12,7:PEN 1:PRINT S$;:PEN 3:PRINT USING "#####";P 1080 LOCATE 14,9:PEN 1:PRINT "------" 1090 LOCATE 13,11:PEN 6:PRINT USING "######";R 1100 RO$=STR$(RO):RO=VAL(RO$):RP$=STR$(RP):RP=VAL(RP$) 1110 IF S=2 AND RO<RP THEN RN=RO:RO=RP:RP=RN 1120 IF RO=O AND RP=P AND RR=R THEN GOTO 1160 1130 FOR I=1 TO 8:PLOT 1+I,1:DRAW 640+I,208:NEXT 1140 FOR I=1 TO 8:PLOT 640-I,1:DRAW 8-I,208:NEXT 1150 FOR I=50 TO 500 STEP 10:SOUND 1,I,5,7:SOUND 2,I*1.5,5,7:SOUND 4,I*0.5,5,7:NEXT:GOTO 1170 1160 INK 1,4,26:FOR J=1 TO 5:FOR I=500 TO 45 STEP -15:SOUND 1,I,5,7:SOUND 2,I*1.5,5,7:SOUND 4,I*0.5,5,7:NEXT I,J 1170 IF INKEY$<>CHR$(13) THEN 1170 1180 INK 1,26:GOTO 640 1190 LOCATE 1,12:PEN 2:PRINT STRING$(20,"_") 1200 LOCATE 4,14:PEN 1:PRINT"VOTRE REPONSE" 1210 ML=10^(LEN(R$)-2):X=16:PEN 1:FOR JK=0 TO 9 1220 H(JK)=INT(RND(1)*10) 1230 FOR WJ=0 TO JK-1:IF H(JK)=H(WJ) THEN JK=JK-1:GOTO 1480 1240 NEXT WJ 1250 J=H(JK) 1260 Q(J)=0 1270 FOR I=RCH TO 1 STEP -1 1280 IF J=O(I) AND Q(J)=0 THEN LOCATE 1,X:PRINT CHR$(64+K(O(I)));:INPUT RD:Q(J)=1:X=X+1 1290 IF J=O(I) THEN LOCATE 18-I,17+PE:PRINT USING "#";RD; 1300 IF J=O(I) THEN RD(I)=RD:RO=RO+(RD(I)/10)*10^I 1310 NEXT I 1320 LOCATE 16-RCH,19:PRINT S$; 1330 FOR I=RCH TO 1 STEP -1 1340 IF J=P(I) AND Q(J)=0 THEN LOCATE 1,X:PRINT CHR$(64+K(P(I)));:INPUT RD:Q(J)=1:X=X+1 1350 IF J=P(I) THEN LOCATE 18-I,19-PE:PRINT USING "#";RD; 1360 IF J=P(I) THEN RD(I)=RD:RP=RP+(RD(I)/10)*10^I 1370 NEXT I 1380 LOCATE 13,21:PRINT "------" 1390 LR=LEN(R$)-1 1400 FOR E=2 TO LEN(R$) 1410 R1(E-1)=VAL(MID$(R$,E,1)) 1420 NEXT E 1430 FOR I=1 TO LEN(R$)-1 1440 IF J=R1(I) AND Q(J)=0 THEN LOCATE 1,X:PRINT CHR$(64+K(R1(I)));:INPUT RD:Q(J)=1:X=X+1 1450 IF J=R1(I) THEN LOCATE 18-LEN(R$)+I,23:PRINT USING "#";RD; 1460 IF J=R1(I) THEN RD(I)=RD:RR=RR+((RD(I)*10^(LR-I))) 1470 NEXT I 1480 NEXT JK 1490 RETURN 1500 ' 1510 ' --------------------------> P Y R A M I D E 1520 ' 1530 MODE 1:CLS 1540 INK 0,9:INK 1,3:INK 2,24:INK 3,15:PEN 1:PAPER 0:BORDER 15 1550 TQ=0:FOR J=1 TO 6:FOR I=1 TO 6:TF(J,I)=0:NEXT I,J:FOR I=2 TO 6:W(I)=H(I):H(I)=0:NEXT 1560 RANDOMIZE TIME 1570 GOSUB 2360 1580 XY=2:A=F(2,1)+F(2,2) 1590 MODE 0:LOCATE 4,3:PRINT"* PYRAMIDE *" 1600 LOCATE 2,12:PRINT"COMBIEN DE NOMBRES" 1610 PRINT:PRINT TAB(2)" de 4 a 6" 1620 LOCATE 2,24:PRINT"7 = retour au menu" 1630 R$=" ":WHILE R$<"4" OR R$>"7":R$=INKEY$:WEND:R=(VAL(R$)) 1640 IF R=7 THEN GOSUB 2590:GOTO 420 1650 MODE 1:CLS 1660 LOCATE 27,6:PRINT USING "###";A 1670 FOR I=2 TO 6:H(I)=INT(RND(1)*I)+1 1680 IF I>2 AND H(I)=W(I) THEN I=I-1 1690 NEXT 1700 X=23:Y=6:FOR J=2 TO 6:X=X-2:Y=Y+2 1710 IF J<8-R THEN 1770 1720 FOR I=1 TO 6 1730 IF (J=5 AND I>5) OR (J=4 AND I>4) OR (J=3 AND I>3) OR (J=2 AND I>2) GOTO 1760 1740 IF I<>H(J) THEN 1760 1750 LOCATE X+I*4,Y:PRINT USING"###";F(J,I) 1760 NEXT I 1770 NEXT J 1780 PEN 3:W=17:X=25:Y=6:FOR P=1 TO 6:LOCATE X,Y:PRINT CHR$(P+64):LOCATE W,18:PRINT P;:W=W+4:X=X-2:Y=Y+2:NEXT 1790 PEN 1 1800 PLOT 408,328:DRAWR 64,0,3:DRAWR 0,-32,3:FOR D=1 TO 5:DRAWR 32,0,3:DRAWR 0,-32,3:NEXT 1810 DRAWR -384,0,3:FOR D=1 TO 5:DRAWR 0,32,3:DRAWR 32,0,3:NEXT:DRAWR 0,32,3 1820 X=384:B=136:FOR D=248 TO 408 STEP 32:PLOT D,B:DRAWR X,0,3:X=X-64:B=B+32:NEXT 1830 PLOT 440,296:DRAWR 0,-32,3:FOR D=1 TO 4:DRAWR 32,0,3:DRAWR 0,-32,3:NEXT 1840 PLOT 440,264:FOR D=1 TO 4:DRAWR -32,0,3:DRAWR 0,-32,3:NEXT 1850 PLOT 440,232:DRAWR 0,-32,3:FOR D=1 TO 2:DRAWR 32,0,3:DRAWR 0,-32,3:NEXT 1860 PLOT 440,200:FOR D=1 TO 2:DRAWR -32,0,3:DRAWR 0,-32,3:NEXT 1870 PLOT 440,168:DRAWR 0,-32,3 1880 GOSUB 2050:GOSUB 2240 1890 FOR I=1 TO 1000:NEXT 1900 IF RF=0 THEN GOTO 2550 1910 '---> RESULTAT 1920 LOCATE 25,2:PRINT"SOLUTION":PRINT TAB(24)"==========" 1930 LOCATE 27,6:PRINT USING "###";A 1940 PEN 2 1950 X=23:Y=6:FOR J=2 TO 6:X=X-2:Y=Y+2 1960 FOR I=1 TO 6 1970 IF J<8-R THEN 1990 1980 IF I=H(J) THEN 2020 1990 IF TF(J,I)=1 THEN 2020 2000 IF (J=5 AND I>5) OR (J=4 AND I>4) OR (J=3 AND I>3) OR (J=2 AND I>2) GOTO 2020 2010 LOCATE X+I*4,Y:PRINT USING"###";F(J,I) 2020 NEXT I,J 2030 IF INKEY$<>CHR$(13) THEN 2030 2040 GOTO 1530 2050 '-----> DEMANDE REPONSES 2060 LOCATE 5,25:PRINT"VOTRE REPONSE EN" 2070 X=23:Y=6 2080 FOR J=2 TO 6:X=X-2:Y=Y+2 2090 FOR I=1 TO 6 2100 IF J<8-R THEN 2120 2110 IF I=H(J) THEN 2200 2120 IF TF(J,I)>0 THEN 2200 2130 IF (J=5 AND I>5) OR (J=4 AND I>4) OR (J=3 AND I>3) OR (J=2 AND I>2) GOTO 2200 2140 LOCATE 22,25:PRINT CHR$(J+64);I;:INPUT R$ 2150 IF R$="C" THEN SI=I:GOSUB 2430:I=SI:GOTO 2140 2160 R(J,I)=VAL(R$) 2170 IF R(J,I)>0 THEN TQ=TQ+1:TF(J,I)=2:LOCATE X+I*4,Y:PEN 3:PRINT USING"###";R(J,I):PEN 1 2180 IF R(J,I)=F(J,I) THEN TF(J,I)=1 2190 LOCATE 26,25:PRINT" " 2200 NEXT I,J 2210 WH=21-TQ-R:IF WH>0 THEN LOCATE 2,25:PRINT"VOULEZ-VOUS ENCORE UNE CHANCE (O ou N)" ELSE GOTO 2230 2220 R$=" ":WHILE R$<"N" OR R$>"O":R$=INKEY$:WEND:IF R$="O" THEN LOCATE 1,25:PRINT SPACE$(39):GOTO 2060 2230 RETURN 2240 ' -----> COMPARAISONS DES REPONSES 2250 LOCATE 1,25:PRINT SPACE$(39) 2260 LOCATE 1,2:PRINT"VOS RESULTATS" 2270 X=3:PRINT"----ù---ù----" 2280 FOR J=2 TO 6:PRINT" ù ù":X=X+1 2290 FOR I=1 TO 6 2300 IF I=H(J) THEN 2340 2310 IF (J=5 AND I>5) OR (J=4 AND I>4) OR (J=3 AND I>3) OR (J=2 AND I>2) GOTO 2340 2320 LOCATE 1,X:PRINT CHR$(J+64)I;USING "ù###ù";R(J,I);:IF F(J,I)=R(J,I) THEN PEN 2:PRINT"Vrai" ELSE PEN 3:RF=RF+1:PRINT"Faux" 2330 PEN 1:X=X+1 2340 NEXT I,J 2350 RETURN 2360 FOR J=6 TO 2 STEP -1 2370 FOR I=6 TO 1 STEP -1 2380 IF (J=5 AND I>5) OR (J=4 AND I>4) OR (J=3 AND I>3) OR (J=2 AND I>2) GOTO 2410 2390 IF J=6 THEN F(J,I)=INT(RND(1)*33)+1:GOTO 2410 2400 F(J,I)=F(J+1,I)+F(J+1,I+1) 2410 NEXT I,J 2420 RETURN 2430 LOCATE 1,25:PRINTSPACE$(28) 2440 LOCATE 5,25:INPUT "operation :";R$ 2450 IF R$="S" THEN LOCATE 5,25:PRINT"VOTRE REPONSE EN":RETURN 2460 FOR I=1 TO LEN(R$) 2470 IF MID$(R$,I,1)="-" THEN 2500 2480 IF MID$(R$,I,1)="+" THEN 2510 2490 NEXT 2500 K$=MID$(R$,1,I-1):K=VAL(K$):L$=MID$(R$,I+1):L=VAL(L$):H=K-L:GOTO 2530 2510 K$=MID$(R$,1,I-1):K=VAL(K$):L$=MID$(R$,I+1):L=VAL(L$):H=K+L:GOTO 2530 2520 NEXT 2530 LOCATE 1,XY:PRINT H:XY=XY+1:IF XY=25 THEN XY=2 2540 GOTO 2430 2550 LOCATE 20,2:PRINT"PYRAMIDE EXACTE":PRINTTAB(19)"=================" 2560 FOR J=1 TO 5 2570 FOR I=150 TO 45 STEP -15:SOUND 1,I,7,7:SOUND 2,I*1,7,7:SOUND 4,I*0.5,7,7:NEXT I,J 2580 IF INKEY$<>CHR$(13) THEN 2580 ELSE GOTO 1530 2590 INK 0,21:INK 1,0:INK 2,9:INK 3,3:INK 4,11:BORDER 19 2600 RETURN |