10 ! GENRAT1.BAS 20 ! av Anders Chrigstr|m & Krister Edlund 30 ! Ins{nt av Sven-Olov Idetj{rn <1708> 1000 RANDOMIZE 1010 EXTEND : ATTRIBUTE 1 : INTEGER : OPTION BASE 0 1020 Cl=3. 1030 Wi=255 1040 Hi=239 1050 Cx=Wi/2. 1060 Cy=Hi/2. 1070 Mx=Wi/2. 1080 My=Hi/20. 1090 DIM X(Cl) : DIM Y(Cl) : DIM V(Cl) 1100 DIM W(Cl) : DIM C(Cl) 1110 GOSUB 1710 1120 ; "SKRIV 1 F\R FORM" 1130 ; "SKRIV 2 F\R PUNKT" 1140 INPUT D 1150 IF D<1. OR D>2. THEN 1140 1160 FGCTL BLK+RED+GRN+YEL+BLU+MAG+CYA+WHT 1170 GOSUB 1590 1180 V=0. 1190 W=0. 1200 Q$=CHR$(INP(34)) 1210 IF Q$="A" THEN W=2. 1220 IF Q$="Z" THEN W=-2 1230 IF Q$="," THEN V=-2. 1240 IF Q$="." THEN V=2. 1250 IF Q$=" " THEN GOSUB 1590 1260 IF Q$="Q" THEN GOSUB 1510 1270 IF Q$="W" THEN GOSUB 1550 1280 IF Q$="S" THEN GOSUB 1680 1290 IF Q$="C" THEN GOSUB 1680 : GOTO 1010 1300 FOR J=1. TO Cl 1310 IF V(J)<-Mx THEN V(J)=-Mx 1320 IF V(J)>Mx THEN V(J)=Mx 1330 IF W(J)<-My THEN W(J)=-My 1340 IF W(J)>My THEN W(J)=My 1350 V(J)=V(J)+V 1360 W(J)=W(J)+W 1370 X(J)=X(J)+V(J) 1380 Y(J)=Y(J)+W(J) 1390 IF X(J)<1. THEN X(J)=1. : V(J)=-V(J) 1400 IF Y(J)<1. THEN Y(J)=1. : W(J)=-W(J) 1410 IF X(J)>Wi THEN X(J)=Wi : V(J)=-V(J) 1420 IF Y(J)>Hi THEN Y(J)=Hi : W(J)=-W(J) 1430 NEXT J 1440 FGPOINT X(Cl),Y(Cl) 1450 FOR J=1 TO Cl 1460 Color=C(J) 1470 IF D=1 THEN FGLINE X(J),Y(J),Color 1480 IF D=2 THEN FGPOINT X(J),Y(J),Color 1490 NEXT J 1500 GOTO 1180 1510 FOR I=1 TO Cl 1520 LET V(I)=-V(I) 1530 NEXT I 1540 RETURN 1550 FOR I=1 TO Cl 1560 W(I)=-W(I) 1570 NEXT I 1580 RETURN 1590 ; CHR$(12); : FGPOINT 0,0,0 : FGFILL 255,239,0 1600 FOR I=1 TO Cl 1610 X(I)=Cx 1620 Y(I)=Cy 1630 V(I)=RND*12-6 1640 W(I)=RND*12-6 1650 NEXT I 1660 FGPOINT Cx,Cy 1670 RETURN 1680 GET Q$ 1690 IF Q$<>' ' THEN 1680 1700 RETURN 1710 ; CHR$(12) 1720 FOR I=1 TO Cl 1730 PRINT "ANGE F[RGNUMRET P] PUNKTEN" I " (1-8)" 1740 INPUT C(I) 1750 NEXT I 1760 RETURN