10 '-----V O C A B U S C O R E-----
20 ' 30 '--------JEU DE REFLEXION------- 40 CLEAR:MODE 1 50 DIM vl(26),f(26),fl(200) 60 js=1:ts=1 70 INK 0,1:INK 1,24:INK 2,20:INK 3,11,26:SPEED INK 25,25:PAPER 0:BORDER 0 80 '-----ECRAN 1 90 RESTORE 100:GOSUB 2090 100 DATA 12,1,2,FAISONS CONNAISSANCE,5,7,2,"A COMBIEN JOUEZ-VOUS?",9,9,2,"(MAXI 8)" 110 DATA 9,17,2,"PRENOM :",16,17,1,"1",0,0,0,z 120 DATA 1,23,2,"ENTREZ REPONSES, PUIS PRESSEZ",31,23,1,ENTER,37,23,2,POUR,6,25,2,VALIDER OU,17,25,1,DEL,21,25,2,"EN CAS D'ERREUR",0,0,0,z 130 RESTORE 120:GOSUB 2090 140 '-----ENTREE NOMBRE DE JOUEURS 150 DATA 20,13,1,0,1,1,8 160 PEN 1:RESTORE 150:GOSUB 2580 170 nj=VAL(s$) 180 'ENTREE PRENOMS 190 DATA 20,17,20,0,0 200 FOR pr=1 TO nj 210 LOCATE 15,17:PRINT pr:LOCATE 20,17:PRINT STRING$(20," ") 220 RESTORE 190:GOSUB 2580 230 p$(pr)=s$:NEXT 240 '-----ECRAN 2 250 RESTORE 270:CLS:GOSUB 2090 260 RESTORE 120:GOSUB 2090 270 DATA 10,1,2,V O C A B U,22,1,3,S C O R E,6,7,2,"QUEL NIVEAU ?",12,9,2,"(DE 1 a 5)",14,15,2,"CHRONO",12,17,2,"(MAXI 15 MINUTES)",18,20,2,"MINUTES",0 280 '-----ENTREE NIVEAU 290 DATA 19,12,1,0,1,1,5 300 PEN 1:RESTORE 290:GOSUB 2580 310 j=VAL(s$) 320 '-----ENTREE DUREE 330 DATA 14,20,2,0,1,1,15 340 RESTORE 330:GOSUB 2580 350 mn=VAL(s$) 360 GOSUB 1240 370 'ECRAN 3 AFFICHE PARMS SELON NIVEAU 380 CLS:RESTORE 390:GOSUB 2090 390 DATA 13,1,2,NIVEAU,7,5,2,VOTRE SCORE MAXIMUN POURRA,5,7,2,ATTEINDRE,20,7,2,"POINTS PAR MOT.",8,10,2,"LE MOT DOIT COMPORTER :" 400 DATA 5,21,2,"JOUEUR SUIVANT :",2,23,2,PRESSEZ,10,23,1,ESPACE,17,23,2,POUR JOUER OU LETTRE,38,23,1,N,4,25,2,SI VOUS DESIREZ UN AUTRE NIVEAU,0,0,0,z 410 mp=(100*ms) 420 IF mp=1000 THEN w=14 ELSE w=15 430 LOCATE w,7:PEN 1:PRINT mp 440 IF mp<1000 THEN LOCATE 15,7:PEN 1:PRINT"0" 450 LOCATE 26,1:PRINT j 460 IF j>3 THEN 520 470 mic=(6-b):mac=(6+b) 480 LOCATE 11,12:PEN 2:PRINT"MINIMUM";:PEN 1:PRINT mic 490 LOCATE 21,13:PEN 2:PRINT"LETTRES" 500 LOCATE 11,14:PRINT"MAXIMUM";:PEN 1:PRINT mac 510 GOTO 560 520 IF j=4 THEN y=15 ELSE y=13 530 LOCATE 7,y:PEN 1:PRINT"OBLIGATOIREMENT 6 LETTRES !" 540 IF j=4 THEN 560 550 LOCATE 7,16:PEN 3:PRINT"CHAQUE LETTRE NE PEUT ETRE":LOCATE 6,18:PRINT"UTILISEE QU'UNE SEULE FOIS !" 560 rp$=LEFT$(p$(js),17) 570 LOCATE 22,21:PEN 1:PRINT UPPER$(rp$) 580 GOSUB 2270 590 tj=0 600 CLEAR INPUT 610 an$=INKEY$ 620 tj=tj+1:IF tj=10000 THEN tj=0 630 IF an$="" THEN 610 640 IF UPPER$(an$)="N" THEN 250 650 IF ASC(an$)<>32 THEN 600 660 GOSUB 1300 670 '-----ECRAN JEU 680 CLS:RESTORE 690 690 DATA 8,396,632,396,328,184,632,184,8,152,632,152,8,120,632,120,8,88,632,88,8,56,632,56,8,24,632,24,1,1,1,1 700 DATA 8,396,8,24,166,152,166,120,184,88,184,56,328,184,328,152,560,184,560,152,536,88,536,56,632,396,632,24,0,0,0,0 710 '-----DESSIN DU CADRE 720 READ xp,yp,xd,yd 730 IF xp=1 AND xd=1 THEN RESTORE 700:GOTO 760 740 PLOT xp,yp,2:DRAW xd,yd,2 750 GOTO 720 760 READ xp,yp,xd,yd 770 IF xp=0 THEN 830 780 FOR lv=0 TO 3 790 PLOT xp,yp,2:DRAW xd,yd,2 800 xp=(xp+lv):xd=(xd+lv) 810 NEXT 820 GOTO 760 830 GOSUB 2350 840 LOCATE 3,17:PEN 2:PRINT"TOUR";:PEN 1:PRINT ts 850 rp$=LEFT$(p$(js),12):LOCATE 23,15:PEN 1:PRINT UPPER$(rp$) 860 IF jk=2 THEN LOCATE 38,15:PEN 3:PRINT CHR$(224) 870 IF jk=5 THEN LOCATE 37,15:PEN 3:PRINT CHR$(224);" ";CHR$(224) 880 LOCATE 14,17:PEN 2:PRINT"TOTAL A ATTEINDRE :";:PEN 1:PRINT no 890 LOCATE 4,19:PEN 2:PRINT"ENTREZ VOTRE MOT, PUIS FAITES":LOCATE 34,19:PEN 1:PRINT"ENTER" 900 LOCATE 3,21:PEN 2:PRINT"NIVEAU";:PEN 1:PRINT j 910 '-----AFFICHAGE VALEURS LETTRES 920 x=3:y=2 930 FOR avl=1 TO 26 940 LOCATE x,y:PEN 2:PRINT CHR$(avl+64);" :";:PEN 1:PRINT vl(avl) 950 x=x+10 960 IF j>2 THEN IF x=33 THEN x=32 970 IF x>33 THEN x=3:y=y+2 980 NEXT 990 DATA 14,21,19,1,0 1000 RESTORE 990:GOSUB 2580 1010 IF te<1 THEN vm=0:GOTO 1040 1020 GOSUB 1500 1030 IF e>0 THEN 1000 1040 DI:z=REMAIN(0) 1050 CLS:GOSUB 1750 1060 tj=0 1070 CLEAR INPUT 1080 ps$=INKEY$ 1090 tj=tj+1:IF tj=10000 THEN tj=0 1100 IF ps$="" THEN 1080 1110 IF ps$=CHR$(252) THEN 1070 1120 IF UPPER$(ps$)="F" THEN 1140 1130 IF ASC(ps$)=32 THEN 660 ELSE 1070 1140 '-----FIN DU JEU 1150 CLS:PEN 1:LOCATE 6,10:PRINT"ETES-VOUS CERTAIN(E) DE VOULOIR" 1160 LOCATE 13,15:PRINT"TERMINER LE JEU ?" 1170 LOCATE 17,20:PRINT"( O - N )" 1180 CLEAR INPUT 1190 f$=INKEY$:IF f$="" THEN 1190 1200 fin=ASC(UPPER$(f$)) 1210 IF fin<78 OR fin>79 THEN 1190 1220 IF fin=78 THEN 660 1230 CLS:PEN 2:LOCATE 8,13:PRINT"... ALORS A BIENTOT !":END 1240 '-----INITIALISATION 1250 DATA 1,40,80,160,3,1,2,80,160,320,2,2,3,120,240,480,1,3,4,160,320,640,0,5,5,200,400,800,0,10 1260 RESTORE 1250 1270 READ n,mal,mir,mar,b,ms 1280 IF n=j THEN RETURN 1290 GOTO 1270 1300 '---TIRAGE LETTRES-CHIFFRE-JOKER 1310 te=60*mn:'--INITIALISATION CHRONO 1320 '-----LETTRES 1330 FOR z=1 TO j*40:fl(z)=0:NEXT 1340 FOR va=1 TO 26 1350 RANDOMIZE TIME 1360 vl(va)=INT(RND*(j*60)) 1370 IF vl(va)<1 OR vl(va)>mal THEN 1360 1380 IF fl(vl(va))=1 THEN 1360 1390 fl(vl(va))=fl(vl(va))+1 1400 NEXT 1410 '-----CHIFFRE ALEATOIRE 1420 RANDOMIZE TIME 1430 no=INT(RND*1000) 1440 IF no<mir OR no>mar THEN 1420 1450 '-----JOKER 1460 jk=0 1470 IF tj/9=tjē 9 THEN jk=2 1480 IF tj/45=tjē 45 THEN jk=5 1490 RETURN 1500 '-----EXAMEN ET DECOMPTE DU MOT 1510 '--INIT.VALEUR DU MOT,TYPE D'ERREUR,FLAGS LETTRES DEJA UTILISEES. 1520 vm=0:e=0 1530 FOR zf=1 TO 26:f(zf)=0:NEXT 1540 mb$=UPPER$(s$) 1550 IF LEN(mb$)>15 THEN e=1:GOTO 1640 1560 IF ABS(LEN(mb$)-6)>b THEN e=2:GOTO 1640 1570 FOR dm=1 TO LEN(mb$) 1580 rc=(ASC(MID$(mb$,dm,1))-64) 1590 IF rc<1 OR rc>26 THEN e=3:GOTO 1640 1600 IF j<5 THEN 1620 1610 IF r(rc)=1 THEN e=4:GOTO 1640 1620 vm=vm+vl(rc):f(rc)=1 1630 NEXT 1640 IF e=0 THEN RETURN ELSE GOSUB 2220 1650 '--EFFACEMENT MOT EN CAS D'ERREUR 1660 LOCATE 14,21:PRINT STRING$(20," ") 1670 LOCATE 3,23:PRINT STRING$(37," ") 1680 ON e GOSUB 1710,1720,1730,1740 1690 RETURN 1700 '-----MESSAGES D'ERREUR 1710 LOCATE 6,23:PRINT"VOUS ECRIVEZ VOS MEMOIRES ???":RETURN 1720 LOCATE 6,23:PRINT"NOMBRE DE LETTRES INCORRECT !":RETURN 1730 LOCATE 4,23:PRINT"SEULES LES LETTRES SONT AUTORISEES !":RETURN 1740 LOCATE 4,23:PRINT"PAS DE DOUBLES LETTRES AU NIVEAU 5 !":RETURN 1750 'TABLEAU SCORES 1760 '-----CALCULS 1770 d=(ABS(vm-no))-jk 1780 IF d<0 THEN d=0 1790 DATA 0,100,1,50,2,20,3,10,4,5,5,2,6,1 1800 IF d>6 THEN ds(js)=0:GOTO 1860 1810 RESTORE 1790 1820 READ dd,sd 1830 IF dd=d THEN s=sd:GOTO 1850 1840 GOTO 1820 1850 ds(js)=(s*ms) 1860 t(js)=t(js)+ds(js) 1870 ' ...ENFIN LES RESULTATS ! 1880 LOCATE 2,10-nj:PEN 2:PRINT"J O U E U R" 1890 LOCATE 16,10-nj:PRINT"DERNIER SCORE" 1900 LOCATE 33,10-nj:PRINT"TOTAL" 1910 y=12-nj 1920 FOR rj=1 TO nj 1930 IF rj=js THEN PEN 3 ELSE PEN 2 1940 pp$=(LEFT$(p$(rj),11)) 1950 LOCATE 2,y:PRINT UPPER$(pp$) 1960 LOCATE 19,y:PRINT ds(rj):LOCATE 33,y:PRINT t(rj) 1970 y=y+2 1980 NEXT 1990 IF ds(js)=0 THEN GOSUB 2550 ELSE GOSUB 2460 2000 js=js+1 2010 IF js>nj THEN js=1:ts=ts+1 2020 rp$=LEFT$(p$(js),17) 2030 LOCATE 5,y:PEN 2:PRINT"JOUEUR SUIVANT : ";:PEN 1:PRINT UPPER$(rp$) 2040 y=y+2 2050 LOCATE 2,y:PEN 2:PRINT"PRESSEZ";:PEN 1:LOCATE 10,y:PRINT"ESPACE";:LOCATE 17,y:PEN 2:PRINT"POUR JOUER OU LETTRE";:PEN 1:LOCATE 38,y:PRINT"F" 2060 y=y+2 2070 LOCATE 7,y:PEN 2:PRINT"SI VOUS DESIREZ FINIR LE JEU" 2080 RETURN 2090 '-----ECRANS 2100 READ x,y,k,tx$ 2110 IF x=0 THEN RETURN 2120 LOCATE x,y:PEN k:PRINT tx$ 2130 GOTO 2100 2140 'SON 2150 '-----INITIALISATION NOTES 2160 RESTORE 2170 2170 DATA 239,213,190,179,159,142,127,119,1 2180 FOR in=1 TO 9 2190 READ pe 2200 note(in)=pe 2210 NEXT 2220 '-----BRUITAGE refus mot 2230 FOR z=300 TO 1 STEP -5 2240 SOUND 1,z,1,15 2250 NEXT 2260 RETURN 2270 '-----PARAMETRES NIVEAU 2280 DATA 5,4,3,2,1,2,3,4,5,7,8 2290 RESTORE 2280 2300 FOR ln=1 TO 11 2310 READ in 2320 IF ln>8 THEN du=36 ELSE du=18 2330 SOUND 1,note(in),du,15 2340 NEXT:RETURN 2350 '-----ecran jeu 2360 DATA 5,3,2,1 2370 RESTORE 2360 2380 du=40 2390 FOR ln=1 TO 4 2400 READ in 2410 SOUND 1,note(in),du,15 2420 du=du+15 2430 NEXT 2440 RETURN 2450 '-----MUSIQUE SCORE 2460 DATA 1,2,3,5,8 2470 RESTORE 2460 2480 du=40 2490 FOR ln=1 TO 5 2500 READ in 2510 SOUND 1,note(in),du,15 2520 du=du+8 2530 NEXT:RETURN 2540 '-----BRUITAGE SCORE NUL 2550 FOR d=150 TO 400 STEP 2 2560 SOUND 1,d,1,15 2570 NEXT:RETURN 2580 '---SAISIE CLAVIER 2590 READ x,y,nc,cro,g:IF g=1 THEN READ vmi,vma 2600 xa=x:s$="":EI:LOCATE xa,y:PRINT CHR$(143) 2610 IF cro=1 THEN EVERY 50 GOSUB 2810 2620 ' 2630 CLEAR INPUT 2640 c$=INKEY$ 2650 IF cro=1 THEN IF te<1 THEN RETURN 2660 IF c$="" THEN 2640 2670 ' 2680 IF ASC(c$)=16 OR ASC(c$)<13 OR ASC(c$)>127 THEN 2630 2690 IF c$=CHR$(13) THEN 2760 2700 IF c$=CHR$(127) THEN 2790 2710 IF g=1 THEN IF ASC(c$)<48 OR ASC(c$)>57 THEN 2630 2720 IF (LEN(s$)+1)>nc THEN 2630 2730 LOCATE xa,y:PRINT c$;CHR$(143) 2740 s$=s$+c$:xa=xa+1:GOTO 2630 2750 ' 2760 IF s$="" THEN 2630 2770 IF g=1 THEN IF VAL(s$)<vmi OR VAL(s$)>vma THEN 2790 2780 LOCATE xa,y:PRINT" ":RETURN 2790 LOCATE x,y:PRINT STRING$((nc+1)," "):GOTO 2600 2800 'ROUTINE CHRONO 2810 te=te-1:IF te<1 THEN RETURN 2820 IF te=99 OR te=9 THEN LOCATE 35,21:PRINT" " 2830 LOCATE 35,21:PRINT te;CHR$(7) 2840 RETURN 2850 cl$=CLS+CHR$(13) 2860 PRINT CL$ 2870 END |