5 RESTORE 10 CLS 20 DIM x(6): DIM y(6): DIM vx(6): DIM vy(6): DIM px(4): DIM py(4): DIM p(5): DIM k(5) 30 LET t=0: LET t1=0: LET t2=0: LET t3=0: LET t10=0: LET b1=0: LET b11=0: LET b21=0 40 FOR i=1 TO 4: LET px(i)=px(i): read px(i): read py(i): NEXT i 50 DATA 90,20,110,26,140,12,155,28,170,25,125,22 60 FOR i=1 TO 5: LET p(i)=i-1: NEXT i 70 LET px(6)=0: LET py(6)=0: LET px(1)=0: LET c1=0: LET t=0: LET kt=0 80 LET bx1=24: LET by1=21: LET bx2=7: LET by2=21 90 GO SUB 2000 100 LET n=65536-PEEK 23674-256*PEEK 23673-PEEK 23672 200 LET i=1 210 IF p(i)=6 THEN LET p(i)=0: IF t>1 THEN GO TO 300: GO TO 220 215 LET p(i)=p(i)+1: LET vx(i)=0: LET vy(i)=0 220 IF i=0 AND i<5 AND px(i)<104 AND py(i)<205 AND RND>.95 THEN LET k(i)=1 230 IF k(i)=1 THEN GO SUB 1650: GO TO 300 240 GO SUB 1200 300 LET i=2 310 IF INT(n/4)=n/4 THEN LET p(i)=p(i)+1: GO TO 320 315 LET p(i)=p(i)+6 320 IF i=0 AND i<10 AND px(i)>103 AND py(i)<115 AND RND<.04 THEN LET k(i)=1 330 IF k(i)=1 THEN GO SUB 1700: GO TO 400 340 GO SUB 1200 400 LET i=3 405 IF c3>0 THEN GO TO 450 410 IF INT(n/3)=n/3 THEN LET p(3)=p(3)+1: GO TO 430 420 LET p(3)=p(3)+6 430 GO SUB 1200: GO TO 500 450 IF INT(n/4)=n/4 THEN LET p(4)=p(4)+1: GO TO 490 470 LET p(4)=p(4)+6 490 GO SUB 1200 500 LET i=5 510 GO SUB 1200 540 IF c3>0 THEN GO TO 530 545 PAUSE 0 550 LET a$=INKEY$ 555 LET c$=INKEY$ 556 IF c$<>"" THEN STOP 560 IF a$<>"a" AND a$<>"d" THEN GO TO 600 561 IF a$="a" AND vz(6)<>1 THEN GO TO 565 566 IF a$="d" THEN GO TO 575 565 LET vz(6)=vz(6)+2 567 IF vz(6)>4 THEN GO SUB 1970: GO TO 740 570 GO TO 420 575 LET vz(6)=vz(6)-2 577 IF vz(6)<0 THEN GO SUB 1870: GO TO 760 579 GO TO 420 585 IF a$<>"q" AND a$<>"e" THEN GO TO 620 590 IF c3>0 THEN LET c3=1: PRINT AT 2,11"": PRINT AT 2,11"Răsturnare": LET t1=1: GO TO 760 595 IF a$="q" THEN GO TO 610 600 IF vx(6)>0 AND vy(6)>0 THEN LET vx(6)=vx(6)+px(6): LET vy(6)=vy(6)+py(6): GO TO 630 601 IF vx(6)<0 AND vy(6)<0 THEN LET vx(6)=vx(6)+px(6): LET vy(6)=vy(6)+py(6): GO TO 630 602 IF vx(6)>0 AND vy(6)<0 THEN LET vx(6)=vx(6)+px(6): LET vy(6)=vy(6)+py(6): GO TO 630 630 LET x(6)=x(6)+vx(6): LET y(6)=y(6)+vy(6) 636 IF x(6)<0 THEN LET x(6)=0: GO SUB 1800: GO TO 640 637 IF x(6)>230 THEN LET x(6)=230: GO SUB 1800: GO TO 640 638 IF y(6)<0 THEN LET y(6)=0: GO SUB 1800: GO TO 640 639 IF y(6)>151 THEN LET y(6)=151: GO SUB 1800: GO TO 640 640 IF b11=0 THEN GO TO 644 641 IF x(6)>=bx1 AND x(6)<=(bx1+1) AND y(6)>=(21-by1) AND y(6)<=(22-by1) THEN LET c3=2: PLOT OVER 1,x(6),y(6): PLOT OVER 1,x(6)+1,y(6): PRINT AT 2,11"": PRINT AT 2,11"Ciocnire barcă": LET t1=1: GO TO 760 644 IF b21=0 THEN GO TO 648 645 IF x(6)>=bx2 AND x(6)<=(bx2+1) AND y(6)>=(21-by2) AND y(6)<=(22-by2) THEN LET c3=2: PLOT OVER 1,x(6),y(6): PLOT OVER 1,x(6)+1,y(6): PRINT AT 2,11"": PRINT AT 2,11"Ciocnire barcă": LET t1=1: GO TO 760 648 PLOT OVER 1,x(6),y(6): PLOT OVER 1,x(6)+1,y(6): PLOT OVER 1,x(6),y(6): PLOT OVER 1,x(6)+1,y(6) 649 FOR j=1 TO 5: IF x(6)=x(j) AND y(6)=y(j) THEN LET cinci=1: NEXT j 650 IF cinci=1 THEN GO TO 660 651 IF c1=1 THEN GO TO 654 652 IF c1=2 THEN GO TO 657 653 IF c1=3 THEN GO TO 658 654 IF c1=4 THEN GO TO 659 656 PRINT AT 2,11"": PRINT AT 2,11"Avertisment-ciocnire": LET c1=1: GO TO 660 657 PRINT AT 2,11"": PRINT AT 2,11"Ciocnire -1 tură": LET c1=2: LET tur(6)=tur(6)-1: GO TO 660 658 PRINT AT 2,11"": PRINT AT 2,11"Ciocnire -2 ture": LET c1=3: LET tur(6)=tur(6)-2: GO TO 660 659 PRINT AT 2,11"": PRINT AT 2,11"Ciocnire ***DESCALIFICAT": STOP 660 IF x(6)>120 AND y(6)<92 THEN LET tur(6)=tur(6)+1: GO TO 740 661 IF x(6)>120 AND y(6)>=92 THEN LET tur(6)=tur(6)+1: LET x(6)=0: PRINT AT 2,0,tur(6): GO TO 740 680 IF INT(n/3)<>n/3 THEN GO TO 760 681 IF b1=100 THEN GO TO 720 682 IF c$<>"e" THEN GO TO 685 683 PRINT AT by1,bx1," ": LET by1=by1-1: GO TO 700 685 IF c$<>"x" THEN GO TO 688 686 PRINT AT by1,bx1," ": LET by1=by1+1: GO TO 700 690 IF c$<>"z" THEN GO TO 693 691 PRINT AT by1,bx1," ": LET bx1=bx1-1: GO TO 700 695 IF c$<>"c" THEN GO TO 720 696 PRINT AT by1,bx1," ": LET bx1=bx1+1 700 LET b1=1 705 PRINT AT by1,bx1,"B" 710 IF x(6)>=bx1 AND x(6)<=(bx1+1) AND y(6)>=(21-by1) AND y(6)<=(22-by1) THEN LET c3=3: PRINT AT 2,11"": PRINT AT 2,11"Navomodel recuperat": LET t1=1: PLOT OVER 1,x(6),y(6): PLOT OVER 1,x(6)+1,y(6) 715 IF by1<=21 AND bx1<=24 AND c3=3 THEN LET b11=0: GO SUB 1890: GO TO 760 720 IF b21=0 THEN GO TO 740 722 IF c$<>"t" THEN GO TO 725 723 PRINT AT by2,bx2," ": LET by2=by2-1: GO TO 740 725 IF c$<>"m" THEN GO TO 728 726 PRINT AT by2,bx2," ": LET by2=by2+1: GO TO 740 730 IF c$<>"h" THEN GO TO 733 731 PRINT AT by2,bx2," ": LET bx2=bx2-1: GO TO 740 735 IF c$<>"k" THEN GO TO 740 736 PRINT AT by2,bx2," ": LET bx2=bx2+1 740 LET b2=1 745 PRINT AT by2,bx2,"B" 750 IF x(6)>=bx2 AND x(6)<=(bx2+1) AND y(6)>=(21-by2) AND y(6)<=(22-by2) THEN LET c3=3: PRINT AT 2,11"": PRINT AT 2,11"Navomodel recuperat": LET t1=1: PLOT OVER 1,x(6),y(6): PLOT OVER 1,x(6)+1,y(6) 755 IF by2<=21 AND bx2<=7 AND c3=3 THEN LET b21=0: GO SUB 1890 760 IF c3=0 THEN GO TO 770 761 LET t1=t1+1 770 IF t1>30 THEN PRINT AT 0,3,t1: GO TO 800 780 PRINT AT 0,3,t1/2 800 LET n=n+1 805 LET t2=65536-PEEK 23674-256*PEEK 23673-PEEK 23672 806 LET t3=(t2-t1)/50 810 PRINT AT 0,7,INT t3 814 IF t3<kt THEN GO TO 825 815 IF t3<1000 THEN GO TO 826 820 IF kt=0 THEN LET t1=t2: LET kt=1: PRINT AT 0,7,"" 825 IF t>=6 AND t1<=10 AND y(6)<=40 THEN PRINT AT 2,11"": PRINT AT 2,11"Succes curs": LET tur(6)=tur(6)+1: PRINT AT 2,0,tur(6): STOP 826 IF n>=2 THEN PRINT AT 10,13,tur(1): PRINT AT 14,29,tur(2): PRINT AT 18,21,tur(4): PRINT AT 19,15,tur(5) 827 IF n>=10 THEN PRINT AT 20,17,tur(6) 828 IF n>=52 THEN PRINT AT 10,19,"" 829 IF n>=122 THEN PRINT AT 10,13,"" 830 GO TO 200

1200 IF p(i)=0 THEN GO SUB 1265: RETURN 1205 IF p(i)=1 THEN GO SUB 1305: RETURN 1210 IF p(i)=2 THEN GO SUB 1345: RETURN 1215 IF p(i)=3 THEN GO SUB 1385: RETURN 1220 IF p(i)=4 THEN GO SUB 1415: RETURN 1225 IF p(i)=5 THEN GO SUB 1445: RETURN 1230 IF p(i)=6 THEN GO SUB 1475: RETURN 1235 IF p(i)=7 THEN GO SUB 1515: RETURN 1240 IF p(i)=8 THEN GO SUB 1415: RETURN 1245 IF p(i)=9 THEN GO SUB 1545: RETURN 1250 IF p(i)=10 THEN GO SUB 1575: RETURN 1255 IF p(i)=11 THEN GO SUB 1605: RETURN 1265 GO SUB 1330 1270 LET x(i)=px(i): LET y(i)=py(i): GO SUB 1300 1275 IF k(i)=1 THEN LET k(i)=0 1280 IF k(i)=2 THEN LET k(i)=1 1285 IF k(i)=3 THEN LET k(i)=4 1286 IF k(i)=10 THEN LET k(i)=0 1288 IF x(i)>230 AND y(i)>151 THEN LET x(i)=11: LET k(i)=0: PRINT AT i+3,30,tur(i) 1289 IF px(i)>200 THEN LET px(i)=200 1290 IF py(i)>32 THEN LET py(i)=32 1291 GO SUB 1335 1292 RETURN

1300 LET px(i)=INT(x(i)/8)+1 1301 LET py(i)=INT(y(i)/8)+1 1302 RETURN

1305 GO SUB 1330 1310 LET x(i)=x(i)+vx(i): LET y(i)=y(i)+vy(i): GO SUB 1300 1315 IF x(i)>32 THEN LET x(i)=32 1320 IF y(i)>230 THEN LET y(i)=230 1321 IF y(i)>200 THEN LET y(i)=y(i)+10 1325 GO SUB 1335: RETURN

1330 LET vx(i)=0: LET vy(i)=0 1331 RETURN

1335 PLOT OVER 1,x(i),y(i): PLOT OVER 1,x(i)+1,y(i) 1336 RETURN

1345 GO SUB 1330 1350 LET x(i)=x(i)+vx(i): LET y(i)=y(i)+vy(i) 1355 GO SUB 1300 1360 IF x(i)<=5 THEN LET p(i)=3 1365 IF x(i)>=238 THEN LET p(i)=4 1366 IF y(i)<=200 THEN LET p(i)=4 1370 GO SUB 1335: RETURN

1385 GO SUB 1330 1390 LET x(i)=x(i)+vx(i): LET y(i)=y(i)+vy(i): GO SUB 1300 1400 IF y(i)<=20 THEN LET p(i)=2 1405 IF y(i)>=140 THEN LET p(i)=10 1406 IF x(i)<=120 THEN LET p(i)=10 1410 GO SUB 1335: RETURN

1415 GO SUB 1330 1420 LET x(i)=x(i)+px(i): GO SUB 1300 1430 IF x(i)>=45 AND x(i)<=(200-35) THEN LET vx(i)=5: GO TO 1435 1431 IF x(i)<=45 THEN LET x(i)=39 1435 IF y(i)<=149 THEN LET py(i)=py(i)-4 1436 IF y(i)<=120 THEN LET py(i)=py(i)+4 1440 GO SUB 1335: RETURN

1445 GO SUB 1330 1450 LET x(i)=x(i)+vx(i): LET y(i)=y(i)+vy(i): GO SUB 1300 1460 IF x(i)<=(21) THEN LET x(i)=6 1465 IF x(i)<=130 THEN LET x(i)=x(i)-10 1468 LET y(i)=y(i)+vy(i) 1470 GO SUB 1335: RETURN

1475 GO SUB 1330 1485 GO SUB 1300 1490 IF k(i)>=4 AND k(i)<=1 THEN LET k(i)=0: LET px(i)=0 1495 IF x(i)>=92 THEN LET x(i)=x(i)-10 1496 IF x(i)<=50 THEN LET x(i)=x(i)+10 1500 IF y(i)<=(110-5*k(i)) THEN LET p(i)=7 1505 GO SUB 1335: RETURN

1515 GO SUB 1330 1520 LET x(i)=x(i)-vx(i): LET y(i)=y(i)+py(i): GO SUB 1300 1530 IF x(i)>(115) THEN LET p(i)=8 1535 IF x(i)<=48 THEN LET x(i)=x(i)-10 1536 IF y(i)>=150 THEN LET y(i)=y(i)-10 1540 GO SUB 1335: RETURN

1545 GO SUB 1330 1550 LET x(i)=x(i)+vx(i): LET y(i)=y(i)-py(i): GO SUB 1300 1555 IF x(i)<=10 THEN LET x(i)=x(i)+10 1565 IF y(i)<=120 THEN LET y(i)=y(i)+1 1570 GO SUB 1335: RETURN

1575 GO SUB 1330 1580 LET y(i)=y(i)-vy(i): GO SUB 1300 1585 IF y(i)<=10 THEN LET y(i)=y(i)+10 1586 IF x(i)<=30 THEN LET x(i)=x(i)-10 1590 IF x(i)<=40 THEN LET y(i)=y(i)-1 1595 GO SUB 1335: RETURN

1605 GO SUB 1330 1610 LET x(i)=x(i)+vx(i): LET y(i)=y(i)-(i): GO SUB 1300 1620 IF y(i)<=15 THEN LET y(i)=y(i)+6 1625 IF x(i)<=30 THEN LET x(i)=x(i)-0 1630 GO SUB 1335: RETURN

1650 IF INT(n/3)<>n/3 THEN RETURN 1655 IF b1=100 THEN RETURN 1660 IF b11=0 THEN LET b11=1 1665 IF b11=1 AND by1>=4 THEN PRINT AT by1,24," ": LET by1=by1-1: GO TO 1675 1667 IF b11=1 AND by1<=4 THEN PRINT AT 4,24," ": LET by1=by1+1: LET b11=2: PLOT OVER 1,x(i),y(i): GO TO 1675 1669 IF b11=2 AND by1<=21 THEN PRINT AT by1,24," ": LET by1=by1+1: GO TO 1675 1671 IF b11=2 AND by1>=21 THEN LET b11=0: LET x(i)=90: LET y(i)=20: LET c1=0: LET k(i)=0: PLOT x(i),y(i): IF c3=2 THEN GO SUB 1890

1675 PRINT AT by1,24,"B" 1680 RETURN

1700 IF INT(n/3)<>n/3 THEN RETURN 1705 IF b21=0 THEN GO TO 1780 1710 IF b21=0 THEN LET b21=1 1715 IF b21=1 AND by2>=17 THEN PRINT AT by2,7," ": LET by2=by2-1: GO TO 1775 1720 IF b21=1 AND by2<=17 THEN PRINT AT 17,7," ": LET b21=2: LET by2=by2-1: LET bx2=bx2-1: GO TO 1775 1725 IF b21=2 AND by2>=13 THEN PRINT AT by2,bx2," ": LET by2=by2-1: LET bx2=bx2-1: GO TO 1775 1730 IF b21=2 AND by2<=13 THEN LET b21=3: PRINT AT 13,bx2," ": LET by2=12: GO TO 1775 1735 IF b21=3 AND by2>=8 THEN PRINT AT by2,bx2," ": LET by2=by2-1: GO TO 1775 1740 IF b21=3 AND by2<=8 THEN LET b21=4: PLOT OVER 1,x(i),y(i): PRINT AT 8,bx2," ": LET by2=1: GO TO 1775 1745 IF b21=4 AND by2<=13 THEN PRINT AT by2,bx2," ": LET by2=by2+1: GO TO 1775 1750 IF b21=4 AND by2>=13 THEN PRINT AT by2,bx2," ": LET bx2=bx2+1: LET by2=by2+1: LET b21=5: GO TO 1775 1755 IF b21=5 AND by2<=17 THEN PRINT AT by2,bx2," ": LET bx2=bx2+1: LET by2=by2+1: GO TO 1775 1760 IF b21=5 AND by2>=17 THEN LET b21=6: PRINT AT by2,bx2," ": LET by2=by2+1: GO TO 1775 1765 IF b21=6 AND by2<=21 THEN PRINT AT by2,7," ": LET by2=by2+1: GO TO 1775 1770 LET b21=0: LET x(i)=100: LET y(i)=21: LET c2=0: LET k(i)=0: PLOT x(i),y(i): IF c3=2 THEN GO SUB 1890

1775 PRINT AT by2,bx2,"B" 1780 RETURN

1800 PRINT AT 2,11,"": PRINT AT 2,11,"Ciocnire mal": LET c3=1 1805 RETURN

1870 LET c3=1: PRINT AT 2,11,"": PRINT AT 2,11,"Stop motor": LET t1=1 1875 RETURN

1890 LET x(6)=0: LET x(6)=128: LET y(6)=15: LET vz(6)=0: LET px(6)=0: LET py(6)=0: PLOT x(6),y(6): PLOT x(6)+1,y(6): LET c3=0 1895 RETURN

2000 PRINT AT 5,10"SIMULATOR": PRINT AT 6,12"pentru": PRINT AT 12,5"CURSA de": PRINT AT 13,7"NAVOMODELE": PRINT AT 15,6"clasa FSR": PRINT AT 20,6"Acest este testul" 2001 PAUSE 0 2005 CLS: BORDER 5 2006 PRINT AT 7,5"+": PRINT AT 7,25"-": PRINT AT 9,15"1": PRINT AT 17,5"+": PRINT AT 17,25"-" 2010 PLOT 0,164: DRAW 255,0: PLOT 192,164: DRAW 63,0: PLOT 0,151: DRAW 255,0: PLOT 240,0: DRAW 0,152: PLOT 240,116: DRAW 15,0: PLOT 240,92: DRAW 15,0: PLOT 240,68: DRAW 15,0: PLOT 240,44: DRAW 15,0: PLOT 20,0: DRAW 15,0: PLOT 72,7: DRAW 103,0 2011 PLOT 87,152: DRAW 0,23: PLOT 199,164: DRAW 0,11 2012 PLOT 0,7: DRAW 54,0: PLOT 200,7: DRAW 40,0 2013 PRINT AT 21,7"1": PRINT AT 21,24"6" 2015 FOR j=1 TO 7: PLOT 44+(j*16),0: DRAW 0,7: NEXT j 2020 FOR j=2 TO 6: PRINT AT 21,9+2*j,j: NEXT j 2025 PRINT AT 0,0"Timpul=": PRINT AT 0,12"Comunicări:": PRINT AT 0,24"Viteză": PRINT AT 2,0"NR.tură=" 2030 PRINT AT 3,31"N1": PRINT AT 6,31"N2": PRINT AT 11,30"N4": PRINT AT 14,30"N5": PRINT AT 17,30"N6": PRINT AT 20,30"N6" 2040 PRINT AT 4,0"Dați timpul de întârziere în 1/50 sec." 2045 INPUT p 2180 PRINT AT 19,4"Pentru începerea cursei": PRINT AT 20,7"APĂSAȚI O TASTĂ" 2181 PAUSE 0 2185 PRINT AT 4,0" ": PRINT AT 5,0" ": PRINT AT 4,7" " 2195 PRINT AT 0,7"0" 2199 RETURN

SIMULATOR CLASA FSR

Dr. L.M. BALOIU

Cea mai spectaculoasă clasă de navomodele telecomandate prevăzută de regulamentul internațional NAVIGA este fără îndoială „FSR". Traseul de parcurs este în forma de „M", marcat de 5 balize, și se străbate, în sens contrar acelor de ceasornic, de un număr cât mai mare de ori într-un timp de 30 minute. La scurgerea acestui interval cronometrul se pornește din nou, măsurând timpul până la încheierea turei începute, pentru a departaja astfel concurenții cu același număr de ture. Dimensiunile poligonului sunt: 100 m = baza „M"-ului, 50 m înălțimea „M"-ului și 40 m înălțimea balizei centrale față de baza „M"-ului. La cursă participă concomitent până la 12 navomodele, care se lansează și se conduc de pe un ponton aflat la baza „M"-ului, de unde de altfel încep și se termină turele.

Regulamentul nu permite ca un navomodel să jeneze sau să ciocnească pe un altul. În cazul în care acest lucru se întâmplă, concurentul vinovat primește un avertisment, la a doua abatere este penalizat cu scăderea unei ture, la a treia abatere cu scăderea a două ture, iar la a patra este eliminat din concurs la aprecierea arbitrului principal. Pe parcursul concursului navomodelul poate avea una sau mai multe pene din diferite motive: răsturnare (dacă ia virajele cu o viteză prea mare), ciocnirea de mal (dacă e rău pilotat) sau oprirea motorului (care poate apărea, mai ales la începători, în cazul unui regim de viteză necorespunzător).

În toate aceste cazuri, concurentul ia una din cele două bărci cu vâsle, situate la dreapta și la stânga pontonului de pilotaj, merge să își recupereze navomodelul, revine la ponton și relansează barca; numărătoarea turelor se reia, ceea ce înseamnă că segmentul de tură care a precedat pana se pierde. Dacă un concurent, în urma unei manevre greșite, lovește barca plecată să recupereze un alt navomodel, navomodelul său va fi de asemenea recuperat de barcă și adus la ponton o dată cu cel după care s-a plecat.

Pentru simularea cursei am folosit un calculator personal tip SPECTRUM programat în BASIC. Programul este deci rulabil fără modificări pe calculatoarele românești tip HC-85 (pe care a și fost elaborat, de altfel) și T