5 ! save artileri
7 ! F|r ABC806, av ok{nd programmerare
8 ! Skjut med och styr kanonen upp/ned med 8/2.
9 ! Skottstyrka regleras med 8,2,4,6
10 INTEGER : EXTEND : RANDOMIZE ! : ATTRIBUTE 3
30 FGCTL BLK+GYEL+GBLU+GRED
40 FGPOINT 0,0,0 : FGFILL 511,239
50 !
60 ! _____________ H[R B\RJAR VARIABLERNA F\R PROGRAMMET
70 !
80 Xa=RND*220+40
90 Ya=RND*220
100 Xb=RND*231+270
110 Yb=RND*220
120 V1.=PI/4
130 V1b.=3*PI/4
140 V.=45
150 Vb.=45
160 Vind.=(RND-.5)*150
170 !
180 ! _____________ RITA KANONERNA
190 !
200 ; CHR$(12)
210 FGPOINT Xa,Ya,1 : FGLINE Xa+10*COS(V1.),Ya+10*SIN(V1.)
220 FGPOINT Xa-4,Ya,1 : FGFILL Xa+4,Ya+2
230 FGPOINT Xb,Yb,1 : FGLINE Xb+10*COS(V1b.),Yb+10*SIN(V1b.)
240 FGPOINT Xb-4,Yb,1 : FGFILL Xb+4,Yb+2
250 !
260 ! _____________ RITAR UT PLANEN
270 !
280 FGPOINT Xa+20,Ya,1 : FGLINE 0,Ya
290 FGPOINT Xb-20,Yb,1 : FGLINE 511,Yb
300 !
310 ! ______________ RITAR EN STJ[RNA
320 !
330 FOR I=1 TO 1
340 S=RND*500
350 U=RND*100+120
360 FGPOINT S,U,3 : FGLINE S+24,U+12,3 : FGLINE S-4,U+12,3 : FGLINE S+20,U,3
370 FGLINE S+10,U+18,3 : FGLINE S,U,3 ! : FGPAINT S+3,U+4
380 NEXT I
390 !
400 ! ______________ H[R B\RJAR SLUMPRITNINGEN
410 !
420 FGPOINT Xa+20,Ya,1
430 Bx=Xa+20
440 By=Ya
450 Slpa=RND*4 ! 5
460 Slpb=RND*4 ! 5
470 ! Slp{=RND*30+80
480 Slp|=RND*100+30
490 FGLINE Bx+Slpa,By+Slpb,1
500 Bx=Bx+Slpa
510 By=By+Slpb
520 IF Bx>Xb-Slp| THEN 570
530 IF By>220 THEN 570
540 IF Bx>Xb-20 THEN 700
550 GOTO 450
560 ! ____________ H[R B\RJAR P2
570 !
580 Slpa5=RND*10
590 Slpa=RND*5
600 Slpb=RND*5
610 Slp|=RND*40+20
620 FGLINE Bx+Slpa,By-Slpb,1
630 Bx=Bx+Slpa
640 By=By-Slpb
650 IF Bx>Xb-35 THEN 700
660 IF ByPngb THEN 1670
730 X.=Xa : Y.=Ya
740 !
750 ! _________________ SKRIVER UT P] SK[RMEN
760 !
770 ; CUR(0,0) CYA;
780 ; USING 'SKOTTSTYRKA=###.##' V.
790 ; CUR(2,0) YEL ''
800 ; CUR(0,60) CYA;
810 ; USING 'SKOTTSTYRKA=###.##' Vb.
820 ; CUR(1,0) CYA 'PO[NG=' Pnga
830 ; CUR(1,60) CYA 'PO[NG=' Pngb
840 ; CUR(0,30) GRN;
850 ; USING 'VIND=##.## M/S' ABS(Vind.)
860 IF Vind.>0 THEN ; CUR(2,33) GRN '--->'
870 IF Vind.<0 THEN ; CUR(2,33) GRN '<---'
880 !
890 ! __________ KOLLAR VAD MAN SKRIVER
900 !
910 IF SYS(5)<>0 GET A1$ ELSE 910
920 FGPOINT Xa,Ya,0 : FGLINE Xa+10*COS(V1.),Ya+10*SIN(V1.),0
930 IF A1$='8' THEN V1.=V1.+1*PI/180 : IF V1.>46.8 THEN V1.=46.8
940 IF A1$='2' THEN V1.=V1.-1*PI/180
950 IF A1$='4' THEN V.=V.-1
960 IF A1$='6' THEN V.=V.+1
970 IF A1$='7' THEN V.=V.-.1
980 IF A1$='9' THEN V.=V.+.1
990 FGPOINT Xa,Ya,1 : FGLINE Xa+10*COS(V1.),Ya+10*SIN(V1.)
1000 FGPOINT Xa-4,Ya,1 : FGFILL Xa+4,Ya+2
1010 ; CUR(0,12) CYA;
1020 ; USING '###.##' V.
1030 IF A1$=CHR$(13) GOTO 1060 ELSE 910
1040 !
1050 ! ______________ H[R B\RJAR KASTPARABELN
1060 ; CHR$(12)
1070 X.=Xa+10*COS(V1.) : Y.=Ya+10*SIN(V1.)
1080 FGPOINT Xa+10*COS(V1.),Ya+10*SIN(V1.),1
1090 Vx.=V.*COS(V1.) : Vy.=V.*SIN(V1.) : T.=.03
1100 K=K+1
1110 IF MOD(K,5)=0 AND Y.<239 THEN FGPOINT X.,Y.,1
1120 Vx.=Vx.+Vind./30*T.
1130 Vy.=Vy.-10.*T.
1140 X.=X.+Vx.*T.
1150 Y.=Y.+Vy.*T.
1160 IF X.<0 OR X.>511 OR Y.<0 THEN 1630
1170 IF Y.>239 GOTO 1600
1180 !
1190 ! __________________ H[R RITAS FLAMMAN UT!
1200 !
1210 IF FGPOINT(X.,Y.)=2 THEN 1220 ELSE 1430
1220 IF X.<10 OR X.>500 THEN 1630
1230 IF Y.<10 OR Y.>190 THEN 1630
1240 ; CHR$(7)
1250 FGPOINT X.-10,Y.+8,0 : FGFILL X.+10,Y.-4,0 ! OM MAN VILL SPR[NGA BORT
1260 FGPOINT X.,Y.-3,1 : FGLINE X.-18,Y.+9 : FGLINE X.-2,Y.+6
1270 FGLINE X.-22,Y.+23 : FGLINE X.-8,Y.+15 : FGLINE X.+2,Y.+35
1280 ON ERROR GOTO 1290 : FGLINE X.+4,Y.+11 : FGLINE X.+20,Y.+20 : FGLINE X.,Y.-3
1290 ! FGLINE X.-3,Y. ! : FGPAINT X.,Y.+5
1300 FOR I=1 TO 5000
1310 NEXT I
1320 !
1330 ! ___________________ SL[CKER FLAMMAN
1340 !
1350 FGPOINT X.,Y.-3,0 : FGLINE X.-18,Y.+9 : FGLINE X.-2,Y.+6
1360 FGLINE X.-22,Y.+23 : FGLINE X.-8,Y.+15 : FGLINE X.+2,Y.+35
1370 ON ERROR GOTO 1380 : FGLINE X.+4,Y.+11 : FGLINE X.+20,Y.+20 : FGLINE X.,Y.-3
1380 ! FGLINE X.-3,Y. : ! FGPAINT X.,Y.+5
1390 GOTO 1630
1400 !
1410 ! ________________ OM MAN TR[FFAR
1420 !
1430 IF ABS(X.-Xb)<4 AND ABS(Y.-Yb)<2 THEN 1440 ELSE 1470
1440 ; CHR$(7) : ; CHR$(7) : ; CHR$(7) : ; RED DBLE FLSH CUR(10,35) 'TR[FF!!!'
1445 FOR I=1 TO 10000 : NEXT I
1450 Pnga=Pnga+10
1460 GOTO 10
1470 IF ABS(X.-Xa)<4 AND ABS(Y.-Ya)<2 THEN 1480 ELSE 1530
1480 ; CHR$(7) : ; RED DBLE FLSH CUR(10,35) 'HA,ha,ha !!!' : Pnga=Pnga-20
1490 FOR I=1 TO 10000 : NEXT I
1510 GOTO 10
1520 ! _______________ OM MAN TR[FFAR STJ[RNORNA
1530 IF FGPOINT(X.,Y.)=3 THEN 1540 ELSE 1600
1540 ; CHR$(7) : Pnga=Pnga+5
1550 FGPOINT S,U,0 : FGLINE S+24,U+12,0 : FGLINE S-4,U+12,0 : FGLINE S+20,U,0
1560 FGLINE S+10,U+18,0 : FGLINE S,U,0 ! : FGPAINT S+6,U+4
1570 !
1580 ! ______________ H[R SLUTAR SPELARE A:s "SKOTT"
1590 !
1600 GOTO 1100
1610 !
1620 !
1630 !
1640 !
1650 ! __________ SKRIVER UT P] SK[RMEN
1660 !
1670 ; CUR(2,77) RED ''
1680 ; CUR(0,0) CYA;
1690 ; USING 'SKOTTSTYRKA=###.##' V.
1700 ; CUR(0,60) CYA;
1710 ; USING 'SKOTTSTYRKA=###.##' Vb.
1720 ; CUR(1,0) CYA 'PO[NG=' Pnga
1730 ; CUR(1,60) CYA 'PO[NG=' Pngb
1740 ; CUR(0,30) GRN;
1750 ; USING 'VIND=##.## M/S' ABS(Vind.)
1760 IF Vind.>0 THEN ; CUR(2,33) GRN '--->'
1770 IF Vind.<0 THEN ; CUR(2,33) GRN '<---'
1780 !
1790 ! __________ KOLLAR VAD MAN SKRIVER
1800 !
1810 IF SYS(5)<>0 THEN GET A1$ ELSE 1810
1820 FGPOINT Xb,Yb,0 : FGLINE Xb+10*COS(V1b.),Yb+10*SIN(V1b.),0
1830 IF A1$='8' THEN V1b.=V1b.-1*PI/180 : IF V1b.<0 THEN V1b.=0
1840 IF A1$='2' THEN V1b.=V1b.+1*PI/180 : IF V1b.>PI THEN V1b.=PI
1850 IF A1$='4' THEN Vb.=Vb.-1
1860 IF A1$='6' THEN Vb.=Vb.+1
1870 IF A1$='7' THEN Vb.=Vb.-.1
1880 IF A1$='9' THEN Vb.=Vb.+.1
1890 FGPOINT Xb-4,Yb,1 : FGFILL Xb+4,Yb+2
1900 FGPOINT Xb,Yb,1 : FGLINE Xb+10*COS(V1b.),Yb+10*SIN(V1b.),1
1910 ; CUR(0,72) CYA;
1920 ; USING '###.##' Vb.
1930 IF A1$=CHR$(13) GOTO 1970 ELSE 1810
1940 !
1950 ! ______________ H[R B\RJAR KASTPARABELN
1960 !
1970 ; CHR$(12)
1980 X.=Xb+10*COS(V1b.) : Y.=Yb+10*SIN(V1b.)
1990 FGPOINT Xb+10*COS(V1b.),Yb+10*SIN(V1b.),1
2000 Vx.=Vb.*COS(V1b.) : Vy.=Vb.*SIN(V1b.) : T.=.03
2010 K=K+1
2020 IF MOD(K,5)=0 AND Y.<239 THEN FGPOINT X.,Y.,1
2030 Vx.=Vx.+Vind./30*T.
2040 X.=X.+Vx.*T.
2050 Y.=Y.+Vy.*T.
2060 Vy.=Vy.-10.*T.
2070 IF Y.<0 OR X.<0 OR X.>511 THEN 2500
2080 IF Y.>239 GOTO 2460
2090 !
2100 ! _______________ H[R RITAS FLAMMAN UT
2110 !
2120 IF FGPOINT(X.,Y.)=2 THEN 2130 ELSE 2300 ! 1630
2130 IF X.<10 OR X.>500 THEN 730
2140 IF Y.<10 OR Y.>190 THEN 730
2150 ; CHR$(7)
2160 FGPOINT X.-10,Y.+8,0 : FGFILL X.+10,Y.-4,0 ! OM MAN VILL SPR[NGA BORT
2170 IF X.<20 THEN 730
2180 FGPOINT X.,Y.-3,1 : FGLINE X.-18,Y.+9 : FGLINE X.-2,Y.+6
2190 FGLINE X.-22,Y.+23 : FGLINE X.-8,Y.+15 : FGLINE X.+2,Y.+35
2200 FGLINE X.+4,Y.+11 : FGLINE X.+20,Y.+20 : FGLINE X.,Y.-3
2210 FOR I=1 TO 5000
2220 NEXT I
2230 FGPOINT X.,Y.-3,0 : FGLINE X.-18,Y.+9 : FGLINE X.-2,Y.+6
2240 FGLINE X.-22,Y.+23 : FGLINE X.-8,Y.+15 : FGLINE X.+2,Y.+35
2250 FGLINE X.+4,Y.+11 : FGLINE X.+20,Y.+20 : FGLINE X.,Y.-3
2260 GOTO 2500
2270 !
2280 ! _________________ KOLLAR OM MAN TR[FFAT
2290 !
2300 IF ABS(X.-Xa)<4 AND ABS(Y.-Ya)<2 THEN 2310 ELSE 2330
2310 ; CHR$(7) : ; RED DBLE FLSH CUR(10,35) 'TR[FF!!!' : Pngb=Pngb+10
2315 FOR I=1 TO 10000 : NEXT I
2320 GOTO 10
2330 IF ABS(X.-Xb)<4 AND ABS(Y.-Yb)<2 THEN 2340 ELSE 2390
2340 ; CHR$(7) : ; RED DBLE FLSH CUR(10,35) 'HA,ha,ha !!!' : Pngb=Pngb-20
2350 FOR I=1 TO 10000 : NEXT I
2370 GOTO 10
2380 ! _______________ KOLLAR OM MAN TR[FFAT EN STJ[RNA
2390 IF FGPOINT(X.,Y.)=3 THEN 2400 ELSE 2460
2400 ; CHR$(7) : Pngb=Pngb+5
2410 FGPOINT S,U,0 : FGLINE S+24,U+12,0 : FGLINE S-4,U+12,0 : FGLINE S+20,U,0
2420 FGLINE S+10,U+18,0 : FGLINE S,U,0 ! : FGPAINT S+6,U+4
2430 !
2440 ! ______________ G]R TILLBAKS TILL KASTPARABELN
2450 !
2460 GOTO 2010
2470 !
2480 ! ______________ H[R SLUTAR SPELARE B:s "SKOTT"
2490 !
2500 GOTO 730