10 ! GENER.BAC 20 ! Program av Magnus <8042> 1992 30 ! Det h{r {r ett program d{r man avlar fram olika insekter. 40 ! Programet {r avset f|r ABC806 50 ! 60 ! Ngt modifierad inmatning <7759> 70 ! 80 ; CHR$(12) 90 RANDOMIZE 100 EXTEND : FLOAT 110 FGCTL BLK+RED+BLU+GRN 120 FGPOINT 0,0,0 : FGFILL 511,239 130 C1=2 : C2=1 : C3=3 140 S=10 : Bs=5 : Atb=6 : As=7 : Bv=18 : Hs=5 : Hc=1 150 Av=10 160 X=255 : Y=200 : GOSUB 170 : GOTO 410 170 FGPOINT X-S,Y-S,C1 : FGFILL X+S,Y+S 180 E=(2*PI/36) 190 B=INT(Atb/2) : A=INT((S*2)/B) : R=Bs 200 FOR Q=0 TO B-1 210 F=Bv*E 220 Fx=X-S : Fy=(Y-S)+A*Q 230 FGPOINT Fx,Fy,C3 : FGLINE Fx+(R*COS(F)),Fy+(R*SIN(F)) 240 Fx=X+S : FGPOINT Fx,Fy : FGLINE Fx-(R*COS(F)),Fy+(R*SIN(F)) 250 NEXT Q 260 Fy=Y+S : Fx=X-(Hs/2) 270 FGPOINT Fx,Fy,Hc : FGFILL Fx+Hs,Fy+Hs 280 Fy=Fy+Hs 290 F=Av*E : R=As 300 FGPOINT Fx,Fy,C2 : FGLINE Fx+(R*COS(F)),Fy+(R*SIN(F)) 310 Fx=Fx+Hs : FGPOINT Fx,Fy : FGLINE Fx-(R*COS(F)),Fy+(R*SIN(F)) 320 RETURN 330 DEF FNVinkel(Gv) 340 Gv=Gv+(RND(10)-5) 350 RETURN Gv 360 FNEND 370 DEF FNStorlek(Sto) 380 Sto=Sto+(INT((RND*3)-1)) 390 RETURN Sto 400 FNEND 410 X=100 : U1=0 420 FOR Q=1 TO 5 430 U=INT(RND*10)+1 440 IF U=U1 THEN 430 450 IF U=1 THEN C1(Q)=INT(3*RND)+1 ELSE C1(Q)=C1 460 IF U=2 THEN C2(Q)=INT(3*RND)+1 ELSE C2(Q)=C2 470 IF U=3 THEN C3(Q)=INT(3*RND)+1 ELSE C3(Q)=C3 480 IF U=4 THEN S(Q)=FNStorlek(S) ELSE S(Q)=S 490 IF U=5 THEN Bs(Q)=FNStorlek(Bs) ELSE Bs(Q)=Bs 500 IF U=6 THEN Atb(Q)=FNBen(Atb) ELSE Atb(Q)=Atb 510 IF U=7 THEN As(Q)=FNStorlek(As) ELSE As(Q)=As 520 IF U=8 THEN Bv(Q)=FNVinkel(Bv) ELSE Bv(Q)=Bv 530 IF U=9 THEN Hs(Q)=FNStorlek(Hs) ELSE Hs(Q)=Hs 540 IF U=10 THEN Hc(Q)=INT(RND*3)+1 ELSE Hc(Q)=Hc 550 IF U=11 THEN Av(Q)=FNVinkel(Av) ELSE Av(Q)=Av 560 U1=U 570 NEXT Q 580 Y=100 590 FOR Z=1 TO 5 600 C1=C1(Z) : C2=C2(Z) : C3=C3(Z) : S=S(Z) : Bs=Bs(Z) 610 Atb=Atb(Z) : As=As(Z) : Bv=Bv(Z) : Hs=Hs(Z) : Hc=Hc(Z) : Av=Av(Z) 620 GOSUB 170 : X=X+70 : NEXT Z 630 ON ERROR GOTO 630 640 ; CUR(20,0);SPACE$(80%) 650 ; CUR(20,0); : INPUT "Vilken ska f|ra sina anlag vidare (1-5, 0=slut)? ";G 660 IF G=0 720 670 IF G<1 OR G>5 640 680 C1=C1(G) : C2=C2(G) : C3=C3(G) : S=S(G) : Bs=Bs(G) 690 Atb=Atb(G) : As=As(G) : Bv=Bv(G) : Hs=Hs(G) : Hc=Hc(G) : Av=Av(G) 700 FGPOINT 0,0,0 : FGFILL 511,239 : ; CHR$(12) 710 GOTO 160 720 END 730 DEF FNBen(At) LOCAL W 740 W=INT(RND*3) 750 IF W=1 THEN At=At+2 760 IF W=2 THEN At=At-2 770 IF At<4 THEN At=4 780 RETURN At 790 FNEND