SIMULATOR CLASA F3 BASIC
SIMULATOR CLASA F3 BASIC
POLIGONUL ŞI PARCURSUL MOLID PENTRU
Regulamentul NAVIGA prevede pentru navomodelele telecomandate și o probă de îndemânare în conducere, pentru care vă prezentăm în cele ce urmează un program de simulare pe calculatoarele personale de tip ZX Spectrum.
Traseul de parcurs, cunoscut sub numele Clasa F3 de evoluții în parcurs molid, are 8 porți care trebuie traversate fiecare de două ori, așa cum se arată în figură. La fiecare trecere se obțin puncte (câte 6 pentru porțile 1, 2, 6, 7 și 8, câte 9 pentru porțile 3 și 5 și 12 pentru poarta 4), din care însă se scade o treime (adică 2, 3, respectiv 4 puncte) dacă se atinge una din balizele care delimitează poarta respectivă. Un traseu corect parcurs totalizează astfel 120 de puncte. La sfârșitul traseului, punctele se recalculează în funcție de timpul realizat: peste 150 de secunde se scad câte 0,1 puncte pentru fiecare 0,5 secunde de depășire, iar sub 150 de secunde se adaugă puncte după același principiu. Pe ecranul calculatorului, punctele porți se afișează în cursul parcurgerii traseului, iar punctele totale (porți + timp) se afișează în final în partea de jos a ecranului.
Programul pe care vi-l prezentăm începe prin a marca poligonul de parcurs. În colțul din stânga sus se indică numerotarea porților, iar în colțul din dreapta sus se vor afișa, în timpul parcursului, timpul realizat, numărul de puncte, precum și următoarea poartă prin care trebuie trecut. Ne-am străduit ca poligonul afișat pe ecran să reproducă cât mai fidel poligonul real. Fiecare 6 pixeli de pe ecran corespund la 1 metru. Porțile departate de mal, care apar în perspectivă mai mici (și pentru care se acordă mai multe puncte), au fost reduse în consecință la 5 și respectiv 4 pixeli în loc de 6.
În continuare, calculatorul va cere să-i comunicați „timpul de întârziere", sub forma numărului de sutimi de secundă între doi pași consecutivi ai navomodelului. Timpul minim este 0, valoare la care navomodelul se va deplasa cu o viteză determinată de viteza de parcurgere a programului de către calculator. Noi recomandăm, pentru început, timpi de 30...50. Timpul ales se tastează, apoi se apasă tasta "ENTER" și din acel moment cursa începe. Ca și la programele anterioare, dirijarea se face din tastele "s" (stânga) și "d" (dreapta). Cronometrarea timpului începe la intrarea prin poarta nr. 1 și se oprește tot pe linia porții nr. 1. Porțile trebuie parcurse strict în ordinea indicată întrucât, dacă o poartă este sărită, calculatorul nu va lua în considerare trecerea prin porțile următoare. „Lovirea malului" este permisă.
Așadar, încărcați programul și dați comanda "RUN". Nouă nu ne mai rămâne decât să vă urăm să desenați pe ecran, din ce în ce mai iute, cât mai mulți molizi, drepți și simetrici. Atenție, recordul mondial este de circa 14 secunde, iar cel național în jur de 25! Le puteți oare dobori? Puteți oricum încerca. Curaj!
LIVIU MIHAIL BALOIU
10.DIM l(22) 15 DIM h(18) 20 FOR i=1 TO 22 25 READ l(i) 30 NEXT i 35 DATA 28,29,113,114,121,122,208,209,72,73,164,163,117,118,24,25,212,213,76,77,159,160 40 FOR i=1 TO 18 45 READ h(i) 50 NEXT i 55 DATA 11,12,85,86,92,91,46,47,65,66,86,85,160,161,166,167,4,5 60 FOR i=1 TO 2 65 FOR j=1 TO 8 70 PLOT l(j),h(i) 75 NEXT j 80 NEXT i 85 FOR i=3 TO 4 90 FOR j=9 TO 12 95 PLOT l(j),h(i) 100 NEXT j: NEXT i 110 FOR j=13 TO 14 115 FOR i=7 TO 16 120 PLOT l(j),h(i) 125 NEXT i 130 NEXT j 135 FOR j=15 TO 18 140 FOR i=17 TO 18 145 PLOT l(j),h(i) 150 NEXT i 155 NEXT j 160 FOR j=19 TO 22 165 FOR i=5 TO 6 170 PLOT l(j),h(i) 175 NEXT i 180 NEXT j 200 PRINT AT 0,4;"4" 205 PRINT AT 3,2;"3" 210 PRINT AT 3,6;"5" 215 PRINT AT 4,4;"8" 220 PRINT AT 5,4;"7" 225 PRINT AT 7,0;"2" 230 PRINT AT 7,4;"1" 235 PRINT AT 7,8;"6" 240 PRINT AT 9,0;"Ordinea" 245 PRINT AT 10,0;"portilor" 250 PRINT AT 1,21;"Timpul:" 255 PRINT AT 3,21;"Puncte:" 260 PRINT AT 4,21;"Urmatoarea" 265 PRINT AT 5,23;"poarta" 300 LET x=118 305 LET y=0 310 LET p=0 320 LET q=2 325 LET n=0 330 LET k=0 335 LET t=0 350 INPUT "Dati timpul de intarziere ";j 360 IF j≤0 THEN GO TO 350 370 LET i=INT (j/2+1) 380 BORDER 0 400 GO SUB 2400 410 IF y≥11 THEN GO SUB 4100 411 IF y≤12 THEN GO SUB 4100 420 GO SUB 4000 430 IF k<1 THEN PRINT AT 5,31;"1": GO TO 400 450 GO SUB 2400 460 IF x≥29 THEN IF y≥11 THEN GO SUB 4150: GO TO 490 461 IF x=29 THEN IF y≤12 THEN GO SUB 4150: GO TO 490 462 IF x≥28 THEN IF y=11 THEN GO SUB 4150: GO TO 490 463 IF x=28 THEN IF y≤12 THEN GO SUB 4150: GO TO 490 464 IF x≥24 THEN IF y=4 THEN GO SUB 4150: GO TO 490 465 IF x≥24 THEN IF y=5 THEN GO SUB 4150: GO TO 490 466 IF x=25 THEN IF y=4 THEN GO SUB 4150: GO TO 490 467 IF x=25 THEN IF y=5 THEN GO SUB 4150: GO TO 490 468 IF x=26 THEN GO SUB 4160: GO TO 490 469 IF x≥27 THEN GO SUB 4160 490 GO SUB 4000 495 IF k<3 THEN PRINT AT 5,31;"2": GO TO 450 500 GO SUB 2400 510 IF x≥72 THEN IF y≥85 THEN GO SUB 4200: GO TO 520 511 IF x=72 THEN IF y=86 THEN GO SUB 4200: GO TO 520 512 IF x≥73 THEN IF y=85 THEN GO SUB 4200: GO TO 520 513 IF x≥73 THEN IF y=86 THEN GO SUB 4200: GO TO 520 514 IF x=76 THEN IF y=91 THEN GO SUB 4200: GO TO 520 515 IF x≥76 THEN IF y=92 THEN GO SUB 4200: GO TO 520 516 IF x≥77 THEN IF y=91 THEN GO SUB 4200: GO TO 520 517 IF x=77 THEN IF y≥92 THEN GO SUB 4200: GO TO 520 518 IF x=73 THEN GO SUB 4220: GO TO 520 519 IF x≥74 THEN GO SUB 4220 520 GO SUB 4000 530 IF k<5 THEN PRINT AT 5,31;"3": GO TO 500 550 GO SUB 2400 560 IF x≥117 THEN GO SUB 4250 565 IF x≥118 THEN GO SUB 4250 570 GO SUB 4000 580 IF k<7 THEN PRINT AT 5,31;"4": GO TO 550 600 GO SUB 2400 610 IF x≥159 THEN IF y=91 THEN GO SUB 4200: GO TO 620 611 IF x≥159 THEN IF y=92 THEN GO SUB 4200: GO TO 620 612 IF x≥160 THEN IF y≥91 THEN GO SUB 4200: GO TO 620 613 IF x≥160 THEN IF y≥92 THEN GO SUB 4200: GO TO 620 614 IF x≥163 THEN IF y=85 THEN GO SUB 4200: GO TO 620 615 IF x≥163 THEN IF y=86 THEN GO SUB 4200: GO TO 620 616 IF x=164 THEN IF y=85 THEN GO SUB 4200: GO TO 620 617 IF x≥164 THEN IF y=86 THEN GO SUB 4200: GO TO 620 618 IF x≥161 THEN GO SUB 4220: GO TO 620 619 IF x≥162 THEN GO SUB 4220 620 GO SUB 4000 630 IF k<9 THEN PRINT AT 5,31;"5": GO TO 600 650 GO SUB 2400 660 IF x=208 THEN IF y=11 THEN GO SUB 4150: GO TO 670 661 IF x≥208 THEN IF y≥12 THEN GO SUB 4150: GO TO 670 662 IF x=209 THEN IF y=11 THEN GO SUB 4150: GO TO 670 663 IF x≥209 THEN IF y≥12 THEN GO SUB 4150: GO TO 670 664 IF x≥212 THEN IF y=4 THEN GO SUB 4150: GO TO 670 665 IF x=212 THEN IF y=5 THEN GO SUB 4150: GO TO 670 666 IF x≥213 THEN IF y≥4 THEN GO SUB 4150: GO TO 670 667 IF x≥213 THEN IF y=5 THEN GO SUB 4150: GO TO 670 668 IF x=210 THEN GO SUB 4160: GO TO 670 669 IF x≥211 THEN GO SUB 4160 670 GO SUB 4000 680 IF k<11 THEN PRINT AT 5,31;"6": GO TO 650 700 GO SUB 2400 710 IF x≥117 THEN GO SUB 4350 715 IF x≥118 THEN GO SUB 4350 720 GO SUB 4000 730 IF k<12 THEN PRINT AT 5,31;"7": GO TO 700 750 GO SUB 2400 760 IF x≥117 THEN GO SUB 4400 765 IF x≥118 THEN GO SUB 4400 770 GO SUB 4000 780 IF k<14 THEN PRINT AT 5,31;"8": GO TO 750 800 GO SUB 2400 810 IF x≥117 THEN GO SUB 4350 815 IF x≥118 THEN GO SUB 4350 820 GO SUB 4000 830 IF k<15 THEN PRINT AT 5,31;"7": GO TO 800 850 GO SUB 2400 860 IF y≥11 THEN GO SUB 4100 865 IF y≤12 THEN GO SUB 4100 870 GO SUB 4000 880 IF k<16 THEN PRINT AT 5,31;"1": GO TO 850 890 PRINT AT 21,0;"Traseu incheiat puncte:":(INT ((n+(t-150)/5)*100))/100 900 STOP 2400 PAUSE i 2401 LET d=INKEY$ 2410 IF d="" THEN GO TO 2700 2420 IF d<>"l" THEN GO TO 3000 2500 IF q<>2 THEN GO TO 2550 2510 LET p=p+1 2520 IF p<3 THEN GO TO 3000 2530 LET p=2 2535 LET q=1 2540 GO TO 3000 2550 IF q<>-2 THEN GO TO 2600 2560 LET p=p-1 2570 IF p<>-3 THEN GO TO 3000 2580 LET p=-2: LET q=1 2590 GO TO 3000 2600 IF p≤2 THEN GO TO 2650 2610 LET q=q-1 2620 GO TO 3000 2650 LET q=q+1 2660 GO TO 3000 2700 IF q<>2 THEN GO TO 2750 2710 LET p=p-1 2720 IF p<>-3 THEN GO TO 3000 2730 LET p=-2: LET q=-1: GO TO 3000 2750 IF q<>-2 THEN GO TO 2800 2760 LET p=p+1 2770 IF p≤3 THEN GO TO 3000 2780 LET p=2: LET q=1: GO TO 3000 2800 IF p<>2 THEN GO TO 2820 2810 LET q=q+1: GO TO 3000 2820 LET q=q-1 3000 LET x=x+p 3005 IF x<1 THEN LET x=x+3 3006 IF x>255 THEN LET x=x-3 3010 LET y=y+q 3015 IF y<1 THEN LET y=y+3 3016 IF y≥175 THEN LET y=y-3 3020 PLOT x,y 3025 RETURN 4000 IF n≥0 THEN LET t=t+0.05+i/50 4005 PRINT AT 3,29;n 4010 PRINT AT 2,21;(INT (t*100))/100 4015 RETURN 4100 IF x<113 THEN GO TO 4145 4105 IF x>122 THEN GO TO 4145 4108 LET k=k+1: LET n=n+6 4110 IF x=113 THEN GO TO 4140 4111 IF x=114 THEN GO TO 4140 4112 IF x=121 THEN GO TO 4140 4113 IF x<>122 THEN GO TO 4145 4118 LET n=n-2 4145 RETURN 4150 LET k=k+1: LET n=n+4 4151 IF p<0 THEN LET x=x-3 4152 IF p>0 THEN LET x=x+3 4155 RETURN 4160 IF y≥12 THEN GO TO 4195 4170 IF y<4 THEN GO TO 4195 4180 LET k=k+1: LET n=n+6 4195 RETURN 4200 LET k=k+1: LET n=n+6 4205 IF p<0 THEN LET x=x-3 4210 IF p>0 THEN LET x=x+3 4215 RETURN 4220 IF y<85 THEN GO TO 4240 4225 IF y≥92 THEN GO TO 4240 4230 LET k=k+1: LET n=n+9 4240 RETURN 4250 IF y<160 THEN GO TO 4295 4255 IF y≥169 THEN GO TO 4295 4258 LET k=k+1: LET n=n+12 4260 IF y≥160 THEN GO TO 4290 4265 IF y=161 THEN GO TO 4290 4270 IF y=168 THEN GO TO 4290 4275 IF y<>169 THEN GO TO 4295 4290 LET n=n-4 4295 RETURN 4300 IF x<208 THEN GO TO 4345 4305 IF x>217 THEN GO TO 4345 4308 LET k=k+1: LET n=n+6 4310 IF x≥208 THEN GO TO 4340 4315 IF x=209 THEN GO TO 4340 4320 IF x=216 THEN GO TO 4340 4325 IF x<>217 THEN GO TO 4345 4340 LET n=n-2 4345 RETURN 4350 IF y<46 THEN GO TO 4395 4355 IF y>66 THEN GO TO 4395 4358 LET k=k+1: LET n=n+6 4360 IF y=46 THEN GO TO 4390 4365 IF y=47 THEN GO TO 4390 4370 IF y≥65 THEN GO TO 4390 4375 IF y<>66 THEN GO TO 4395 4390 LET n=n-2 4395 RETURN 4400 IF y<65 THEN GO TO 4445 4405 IF y>85 THEN GO TO 4445 4408 LET k=k+1: LET n=n+6 4410 IF y≥65 THEN GO TO 4440 4415 IF y=66 THEN GO TO 4440 4420 IF y=84 THEN GO TO 4440 4425 IF y<>85 THEN GO TO 4445 4440 LET n=n-2 4445 RETURN