1 REM 2 REM  3 REM  LANTERNA.BAS 1982.01.17  4 REM  av : Bj|rn Larsen  5 REM  ABC-medl nr 2089  6 REM  7 REM Programmet l{r dej b}tlanternor. 8 REM Anm : Vid "B}tens riktning" antas 9 REM du sj{lv se i riktning 0 grader. 10 REM R=r|d, G=gr|n, W=vit och Y=gul 11 REM lanterna. (En lanternkombi- 12 REM nation {r inte alltid unik.) 13 REM OBS! ANV[ND STORA BOKST[VER!!! 14 REM 15 DIM A$=40 : RANDOMIZE 16 Q%=29% : REM antal DATA-satser 17 REM  Slumpl{s  18 R%=0% : B%=0% : S%=INT(RND*360%) 19 RESTORE : N%=INT(RND*Q%) 20 FOR I%=0% TO N% : READ A$ : READ A% : FOR J%=1% TO A% : READ B$(J%) : NEXT J% : NEXT I% 21 REM  Sortera och omvandla  22 FOR I%=1% TO A% 23 F$(I%)=LEFT$(B$(I%),1%) 24 V%(I%)=VAL(MID$(B$(I%),2%,1%))+1% 25 X%(I%)=VAL(MID$(B$(I%),3%,1%))*4%-18% 26 Y(I%)=VAL(MID$(B$(I%),4%,1%))*2%-8% 27 Z%(I%)=VAL(MID$(B$(I%),5%,1%))*2% 28 NEXT I% 29 REM  Vinkelf|rskjutning  30 IF S%>=360% S%=S%-360% 31 IF S%<0% S%=S%+360% 32 FOR I%=1% TO A% 33 V%=INT(ATN(Y(I%)/X%(I%))*180%/PI) 34 IF X%(I%)<0% V%=V%+180% 35 R=SQR(X%(I%)^2%+Y(I%)^2%) 36 Y2(I%)=R*SIN((V%+S%)*PI/180%)+19% 37 NEXT I% 38 REM  Projicera  39 ; CHR$(12%) : FOR I%=1% TO A% 40 ON V%(I%) GOTO 45,41,42,43,44 41 IF S%>179% AND S%<293% THEN 45 ELSE 46 42 IF S%>67% AND S%<181% THEN 45 ELSE 46 43 IF S%>292% OR S%<68% THEN 45 ELSE 46 44 IF S%>67% AND S%<293% THEN 45 ELSE 46 45 ; CUR(Z%(I%),Y2(I%))F$(I%); 46 NEXT I% 47 REM  Text  48 ; CUR(17%,0%)STRING$(40%,95%); 49 ; "Rotera b}ten med: <- och ->" 50 ; "B}tens riktning:"; 51 IF R%=0% ; " (R)" ELSE ; S%;" grader " 52 ; "N{sta b}t: (N)" 53 ; "Avsluta: (A)" 54 ; "B}ttyp: "; 55 IF B%=0% ; "(B)" ELSE ; " " : ; A$; 56 ; CUR(22%,35%)"V{lj!"; 57 IF INP(56%)=136% GOTO 68 58 IF INP(56%)=137% GOTO 64 59 IF INP(56%)=210% R%=1% : GOTO 48 60 IF INP(56%)=206% THEN 17 61 IF INP(56%)=193% GET P$ : ; CHR$(12); : END 62 IF INP(56%)=194% THEN B%=1% : GOTO 48 63 GOTO 48 64 REM  Riktning  65 REM + 66 S%=S%+1% : GOSUB 71 67 IF INP(56%)=137% THEN 66 ELSE 29 68 REM - 69 S%=S%-1% : GOSUB 71 70 IF INP(56%)=136% THEN 68 ELSE 29 71 REM +/- 72 IF S%>=360% S%=S%-360% 73 IF S%<0% S%=S%+360% 74 IF R%=1% ; CUR(19%,16%)S%;" grader "; 75 FOR I=0 TO 120 : NEXT I 76 RETURN 77 REM  DATA-satser  78 DATA "Roddb}t",1,W0658 79 DATA "Segelb}t <7m",1,W0357 80 DATA "Motorb}t <7m, max 7knop",1,W0347 81 DATA "Segelb}t <12m",3,R1532,G2542,W3442 82 DATA "Segelb}t >7m",3,R1627,G2667,W3247 83 DATA "Segelb}t >7m",5,R1627,G2667,W3247,R0440,G0441 84 DATA "Motorb}t 7-50m",4,R1816,G2876,W4743,W3046 85 DATA "Fartyg >50m",5,R1524,G2564,W3045,W4843,W4141 86 DATA "Ej man|verf{rdigt fartyg (stilla)",2,R0341,R0342 87 DATA "Ej man|verf{rdigt fartyg (med fart)",5,R0341,R0342,R1615,G2675,W3045 88 DATA "Fartyg m begr{nsad man f|rm (stilla)",3,R0440,W0441,R0442 89 DATA "Fartyg m begr{nsad man f|rm (med fart)",8,W4240,R0241,W0242,R0243,W4744,R1515,G2575,W3045 90 DATA "Fartyg h{mmat av sitt djupg}ende",8,W4240,R0241,R0242,R0243,W4944,W3045,R1325,G2365 91 DATA "Bogserare med sl{p <200m",6,R1716,G2776,W4841,W4842,W3046,Y3044 92 DATA "Bogserare med sl{p >200m",7,R1716,G2776,W4840,W4841,W4842,W3046,Y3044 93 DATA "Fartyg som bogseras",3,R1615,G2675,W3045 94 DATA "Fartyg i lotstj{nst (stilla)",2,W0542,R0543 95 DATA "Fartyg i lotstj{nst (till ankars)",3,W0541,W0542,R0543 96 DATA "Fartyg i lotstj{nst (p} v{g)",5,W0542,R0543,W3146,R1615,G2675 97 DATA "Fartyg <50m till ankars",1,W0542 98 DATA "Fartyg >50m till ankars",2,W0045,W0742 99 DATA "Fartyg <50m p} grund",3,W0542,R0543,R0544 100 DATA "Fartyg >50m p} grund",4,W0944,W0046,R0741,R0742 101 DATA "Tr}lfiskande fartyg >50m (stilla)",3,W4241,G0642,W0643 102 DATA "Tr}lfiskande fartyg >50m (p} v{g)",6,W4241,G0642,W0643,R1414,G2474,W3045 103 DATA "Fiskefart (ej tr),utstick redsk o fart",6,R1325,G2365,W3046,R0741,W0742,W0606 104 DATA "Linf{rja",3,R0505,R0585,R0541 105 DATA "Minsvepare",7,R1626,G2666,W3146,W4644,G0413,G0473,G0440 106 DATA "Mudderverk",7,R0040,W0041,R0042,R0983,R0984,G0903,G0904